// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Messages sent from extension to feedback server as JSON.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package userfeedback;

import "common.proto";
import "chrome.proto";
import "dom.proto";
import "math.proto";
import "web.proto";

// Sent along with request for extension page when user attempts to open
// feedback tab.
message ExtensionPageRequestParams {

  required ExtensionDetails extension_details = 1;

  // Url of the page (without request params) that user wants to open
  // feedback tool for.
  required string url = 2;
};

message PostedScreenshot {

  required string mime_type = 1;

  required Dimensions dimensions = 2;

  optional string base64_content = 3;

  optional bytes binary_content = 4;
};

// Contains data about possible errors on the client side.
// Describes number of attempts to send feedback and possible error codes/
// exceptions which occured.
message ExtensionErrors {

  required int32 number_of_attempts = 1;

  required string errors = 2;
};

// Sent when user hits final submit button.
message ExtensionSubmit {

  required CommonData common_data = 1;

  required WebData web_data = 2;

  required int32 type_id = 3;

  optional PostedScreenshot screenshot = 4;

  optional ChromeData chrome_data = 14;

  repeated ProductSpecificBinaryData product_specific_binary_data = 15;

  optional string category_tag = 16;

  optional int32 product_id = 17;

  optional string bucket = 18;
};

// A query for suggestions, sent when the user hits the preview button.
message SuggestQuery {

  required CommonData common_data = 1;

  required WebData web_data = 2;

  required int32 type_id = 3;

  optional HtmlDocument html_document_structure = 4;

  optional ChromeData chrome_data = 5;
};
