// 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.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package userfeedback;

// Chrome Browser and Chrome OS specific data.
message ChromeData {
  // Encapsulates the priorities of Buganizer issues.
  enum ChromePlatform {
    CHROME_OS = 1;
    CHROME_BROWSER = 2;
  }

  // What platform has a report been sent from.
  optional ChromePlatform chrome_platform = 1 [default = CHROME_OS];

  optional ChromeOsData chrome_os_data = 2;

  optional ChromeBrowserData chrome_browser_data = 3;
}

message ChromeOsData {
  enum ChromeOsCategory {
    CONNECTIVITY = 1;
    SYNC = 2;
    CRASH = 3;
    PAGE_FORMATTING_OR_LAYOUT = 4;
    EXTENSIONS_OR_APPS = 5;
    STANDBY_OR_RESUME = 6;
    PHISHING_PAGE = 7;
    OTHER = 8;
    AUTOFILL = 9;
  }

  optional ChromeOsCategory category = 1 [default = OTHER];
}

message ChromeBrowserData{

  enum ChromeBrowserCategory {
    PAGE_FORMATTING_OR_LAYOUT = 1;
    PAGES_NOT_LOADING = 2;
    PLUGINS = 3;
    TABS_OR_WINDOWS = 4;
    SYNCED_PREFERENCES = 5;
    CRASH = 6;
    EXTENSIONS_OR_APPS = 7;
    PHISHING_PAGE = 8;
    OTHER = 9;
    AUTOFILL = 10;
  }

  optional ChromeBrowserCategory category = 1 [default = OTHER];
}

