// Copyright 2022 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

option optimize_for = LITE_RUNTIME;

package crashpad.wrapper;

// Annotations that can be shared between Cobalt and Crashpad handler processes.
// Next id: 5
message CrashpadAnnotations {
  // The product name.
  string prod = 1;

  // The product version.
  string ver = 2;

  // The User-Agent string that identifies brand, model, etc.
  string user_agent_string = 3;

  // Annotations with keys that are unknown at compile time.
  map<string, string> runtime_annotations = 4;
}

