// 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;
}