chromium/components/optimization_guide/proto/common_types.proto

// Copyright 2017 The Chromium Authors
// 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;
option java_package = "org.chromium.components.optimization_guide.proto";
option java_outer_classname = "CommonTypesProto";

package optimization_guide.proto;

// Context in which the items are requested.
enum RequestContext {
  reserved 1, 3, 10;
  // Context not specified.
  CONTEXT_UNSPECIFIED = 0;
  // Requesting items on page navigation.
  CONTEXT_PAGE_NAVIGATION = 2;
  // Requesting as part of a SRP fetch.
  CONTEXT_BATCH_UPDATE_GOOGLE_SRP = 4;
  // Requesting as part of a regularly scheduled fetch for active tabs.
  CONTEXT_BATCH_UPDATE_ACTIVE_TABS = 5;
  // Requesting a batch of models to update.
  CONTEXT_BATCH_UPDATE_MODELS = 6;
  // Requesting page load metadata for a user's bookmarks when visiting the
  // bookmarks surface.
  CONTEXT_BOOKMARKS = 7;
  // Requesting metadata for a user when visiting the Journeys surface.
  CONTEXT_JOURNEYS = 8;
  // Requesting metadata for a user when visiting the new tab page.
  CONTEXT_NEW_TAB_PAGE = 9;
  // Requesting metadata for a user when visiting the Page Insights feature;
  // Gaia can be attached to request.
  CONTEXT_PAGE_INSIGHTS_HUB = 11;
  // Requesting metadata for a user when visiting the Page Insights feature;
  // Gaia cannot be attached to request.
  CONTEXT_NON_PERSONALIZED_PAGE_INSIGHTS_HUB = 12;
  // Requesting metadata for shopping features. This is used for relevant URLs
  // (open tabs, bookmarks, etc.) if information is determined to be stale or
  // has otherwise been flushed from the cache.
  CONTEXT_SHOPPING = 13;
}

message FieldTrial {
  // The hash of a field trial.
  optional uint32 name_hash = 1;
  // The hash of the active group within the field trial.
  optional uint32 group_hash = 2;
}

// A Duration represents a signed, fixed-length span of time represented
// as a count of seconds and fractions of seconds at nanosecond
// resolution. It is independent of any calendar and concepts like "day"
// or "month". It is related to Timestamp in that the difference between
// two Timestamp values is a Duration and it can be added or subtracted
// from a Timestamp. Range is approximately +-10,000 years.
// This is local definition matching server side duration.proto definition.
message Duration {
  // Signed seconds of the span of time. Must be from -315,576,000,000
  // to +315,576,000,000 inclusive.
  optional int64 seconds = 1;

  // Signed fractions of a second at nanosecond resolution of the span
  // of time. Durations less than one second are represented with a 0
  // `seconds` field and a positive or negative `nanos` field. For durations
  // of one second or more, a non-zero value for the `nanos` field must be
  // of the same sign as the `seconds` field. Must be from -999,999,999
  // to +999,999,999 inclusive.
  optional int32 nanos = 2;
}

message Timestamp {
  // Represents seconds of UTC time since Unix epoch
  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
  // 9999-12-31T23:59:59Z inclusive.
  optional int64 seconds = 1;

  // Non-negative fractions of a second at nanosecond resolution. Negative
  // second values with fractions must still have non-negative nanos values
  // that count forward in time. Must be from 0 to 999,999,999
  // inclusive.
  optional int32 nanos = 2;
}

message Any {
  // A URL/resource name that uniquely identifies the type of the serialized
  // protocol buffer message.
  optional string type_url = 1;
  // Must be a valid serialized protocol buffer of the above specified type.
  optional bytes value = 2;
}

// Information about the request origin, common to all Cacao requests.
message OriginInfo {
  // The platform for the user's Chrome.
  optional Platform platform = 1;
}

// The platform for the user's Chrome on which the request was made.
enum Platform {
  reserved 7;

  // Undefined is used when the user's platform cannot be resolved.
  PLATFORM_UNDEFINED = 0;
  // Android based platforms.
  PLATFORM_ANDROID = 1;
  // ChromeOS platforms including all architectures.
  PLATFORM_CHROMEOS = 2;
  // IOS based platforms.
  PLATFORM_IOS = 3;
  // Linux platforms including all architectures.
  PLATFORM_LINUX = 4;
  // Mac based platforms.
  PLATFORM_MAC = 5;
  // Windows based platforms.
  PLATFORM_WINDOWS = 6;
}