// Copyright 2009 Google Inc. All Rights Reserved.
// Author: jaceks@google.com (Jacek Surazski)

syntax = "proto2";

package userfeedback;

option optimize_for = LITE_RUNTIME;

// Data present in Web related feedbacks

import "annotations.proto";
import "dom.proto";
import "math.proto";

// Data present in feedbacks sent from web extension.
message WebData {
  // Data captured from DOM Navigator object.
  optional Navigator navigator = 1;

  // Details of the extension from which this data was sent.
  optional ExtensionDetails extension_details = 2;

  // The URL of the document.
  // Useful when user opts out from sending html structure.
  optional string url = 3;

  // A list of annotations.
  repeated Annotation annotation = 4;

  // The ID of the suggestion selected by the user.
  // Possible values:
  // - Not set if no suggestions were shown, either because the version of
  //   the client did not support suggestions, suggestions were disabled or
  //   no matching suggestions were found.
  // - NONE_OF_THE_ABOVE if the user has chosen "None of the above".
  // - Empty string if suggestions were shown but the user hasn't chosen
  //   any of them (and also she hasn't chosen "None of the above").
  // - Actual suggestion identifier as returned from the server.
  optional string suggestion_id = 5;

  repeated ProductSpecificData product_specific_data = 6;

  // Name of the binary data stored. Replicated from
  // ProductSpecificBinaryData.name which is stored as a separate
  // column in Feedbacks3 megastore table.
  repeated string product_specific_binary_data_name = 7;
};

message ExtensionDetails {
  // Indicates browser and mpm release.
  required string extension_version = 1;

  required string protocol_version = 2;
};

// Additional data sent by the internal version.
message InternalWebData {
  // List of user names in google.com domain to which feedback should be sent
  // directly apart from submitting it to server.
  repeated string email_receiver = 1;

  // Subject of the problem entered by user.
  optional string subject = 2;

  // If this flag is set then product support team should be notified
  // immediately.
  optional bool DEPRECATED_urgent = 3 [default = false];
};

// Product specific data. Contains one key/value pair that is specific to the
// product for which feedback is submitted.
message ProductSpecificData {
  required string key = 1;
  optional string value = 2;
};

message ProductSpecificBinaryData {
  required string name = 1;

  // mime_type of data
  optional string mime_type = 2;

  // raw data
  optional bytes data = 3;
};