// Copyright 2018 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.
//
// Safe Browsing Reporter request protocol buffers. This protocol message should
// be kept in sync with the server implementation in Google3.

syntax = "proto2";

import "shared_data.proto";

option optimize_for = LITE_RUNTIME;

package chrome_cleaner;

// Reporter logs to be sent to the Safe Browsing API.
//
// FoilReporterLogs is a legacy name that must be kept because existing
// analysis tools use it.
//
// Next tag: 10.
message FoilReporterLogs {
  // Corresponded to data related to reporter experiments.
  reserved 7, 8;

  // Environmental data regarding the machine and the Reporter.
  // Next tag: 9.
  message EnvironmentData {
    // The Windows version as an enum value from base::win::Version.
    optional uint32 windows_version = 1;
    // Reporter's version number (X.Y.Z).
    optional string reporter_version = 2;

    // The user's installed Chrome version.
    optional string chrome_version = 3;

    // The channel of the user's installed chrome. The possible values are:
    // 0: unknown; 1: canary; 2: dev; 3: beta; 4: stable.
    optional int32 chrome_channel = 4;

    // The user's default locale. e.g. "en-US".
    optional string default_locale = 5;

    // The country of the client IP. e.g. "US". This field is set by the Safe
    // Browsing server on receiving a report and should not be set in the
    // reporter copy of this proto.
    optional string client_country = 6;

    // The bitness of the reporter process, 32 or 64.
    optional int32 bitness = 7;

    // The engine run by the reporter.
    optional Engine engine = 8;
  }
  optional EnvironmentData environment = 1;

  // The identifier of the current report, generated by the server and that
  // cannot be linked to the user who sent this data.
  optional string token = 2;

  // The exit code of the Reporter run.
  optional uint32 exit_code = 3;

  // The list of UwS matched by the reporter with corresponding matching data.
  repeated UwS detected_uws = 4;

  // The timestamp when the server received this report, given as the number of
  // micro-seconds since Unix Epoch.
  optional int64 timestamp = 5;

  // Identifier used to group all reports generated during the same run of the
  // software reporter (which may include multiple invocations of the reporter
  // binary, each generating a report).
  optional string session_id = 6;

  // Information about reporter processes and their resource usage.
  repeated ProcessInformation process_information = 9;
}
