// Copyright 2019 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";

package feedwire1;

option optimize_for = LITE_RUNTIME;

import "components/feed/core/proto/wire/display_info.proto";
import "components/feed/core/proto/wire/version.proto";

option java_package = "org.chromium.components.feed.core.proto.wire";
option java_outer_classname = "ClientInfoProto";

// Information about the client performing the request similar to a user-agent
// string in HTTP.
// Next ID: 7.
message ClientInfo {
  enum PlatformType {
    UNKNOWN_PLATFORM = 0;
    ANDROID_ID = 1;  // ANDROID collides with a C++ preprocessor macro.
    IOS = 2;
  }

  enum AppType {
    UNKNOWN_APP = 0;
    GSA = 1;
    CHROME = 2;
    TEST_APP = 3;
  }

  // The type of OS that the client is running.
  optional PlatformType platform_type = 1;

  // The version of the OS that the client is running.
  optional Version platform_version = 2;

  // The type of client app.
  optional AppType app_type = 3;

  // The version of the client app.
  optional Version app_version = 4;

  // A string identifying the language and region preferences of the client.
  // Follows the BCP 47 format such as "en-US" or "fr-CA"
  optional string locale = 5;

  // The information about the screen of the client. This is repeated because
  // there are some devices that might have multiple display screens.
  // (Ex foldable phones)
  repeated DisplayInfo display_info = 6;
}
