Get desktop application:
View/edit binary Protocol Buffers messages
NOTE: If you update this proto, you'll also need to rebuild the JS parser for devtools. See //components/variations/proto/devtools/BUILD.gn for details.
Active client experiment variation IDs.
Active client experiment variation IDs that trigger server-side behavior.
Next tag: 6
Used in:
ID for the layer, must be unique across all layers. Studies will specify a <layer_id, layer_member_id> pair to become part of a layer.
Total number of slots within the layer. There are constraints on the number of slots when a low entropy source is used (100, initially) to alleviate skew in the bucket populations.
Layer members, which occupy disjoint subsets of the [0, `num_slots`) range. Not all slots have to be used, and normally won't in order to reserve space within the layer. Each study that participates in a layer is associated with a single layer member.
A salt which is used as an input to a hash function together with the output of the chosen entropy source, to choose an active slot within the layer. If salt is unset or 0, the layer id will be used instead.
Which of the above entropy modes should be used to select a slot.
Used in:
Use the default entropy source when selecting slots. This will use the high entropy source for the clients that have it, and falls back to the low entropy source for other clients.
Use the low entropy source.
Used in:
An id (unique within the Layer) that studies will use to refer to this particular member.
Ranges of slots that belong to this member. These slot ranges must not overlap with the slot ranges of other members within the layer, so that at most one member within the layer will be active. The ranges must be listed in increasing order.
Used in:
First slot in the range (inclusive). This range has to be in the [0..`num_slots`) range of the layer.
Last slot in the range (inclusive).
A Study can optionally specify a LayerMemberReference which will configure it as a member of the layer with the given ID.
Used in:
Reference to the Layer with this specific ID.
Reference to the member within the above layer, with this specific ID.
This defines the Protocol Buffer representation of a Chrome Variations study as sent to clients of the Variations server. Next tag: 13
Used in:
The name of the study. Should not contain spaces or special characters. Ex: "my_study"
DEPRECATED: Prefer end_date instead. The expiry date of the study in Unix time format. (Seconds since midnight January 1, 1970 UTC). See: http://en.wikipedia.org/wiki/Unix_time A study that has expired will be disabled, and users will be assigned groups based on the default_experiment_name. This will take precedence over a corresponding hardcoded field trial in the client. Ex: 1330893974 (corresponds to 2012-03-04 20:46:14Z)
Consistency setting for this study. Optional - defaults to SESSION. Ex: PERMANENT
Optionally specifies which layer the study is a part of, which will ensure only one study per layer is enabled for a client. A study must specify both the ID of the layer and the ID of the LayerMember within that layer that the study should be associated with.
Name of the experiment that gets the default experience. This experiment must be included in the list below. If not specified, a generic default experiment name is used. Ex: "default"
List of experiments in this study. This list should include the default / control experiment. For example, to specify that 99% of users get the default behavior, while 0.5% of users get experience "A" and 0.5% of users get experience "B", specify the values below. Ex: { "default": 990, "A": 5, "B": 5 }
Filtering criteria for this study. A study that is filtered out for a given client is equivalent to that study not being sent at all.
Randomization seed to be used when |consistency| is set to PERMANENT. If not specified, randomization will be done using the trial name.
Activation type for this study. Defaults to ACTIVATE_ON_QUERY if omitted.
Specifies whether the study starts as active initially, or whether it requires the client to query its state before it is marked as active.
Used in:
The study will be activated when its state is queried by the client. This is recommended for most studies that include client code.
The study will be automatically activated when it is created. This is recommended for studies that do not have any client logic.
Possible Chrome release channels. See: http://dev.chromium.org/getting-involved/dev-channel
Used in:
UNKNOWN value is defined here for the benefit of code using this enum type, but is not actually meant to be encoded in the protobuf.
Consistency setting for a study.
Used in:
Can't change within a session.
Can't change for a given user.
Possible CPU architectures Chrome is running on. Only supported on M90+.
Used in:
A Mac-only value, indicating an x86-64 binary running on an arm64 host via "Rosetta 2" binary translation.
An experiment within the study. Next tag: 17
Used in:
The name of the experiment within the study. Ex: "bucketA"
The cut of the total probability taken for this experiment (the x in x / N, where N is the sum of all x’s). Ex: "50"
Optional id used to uniquely identify this experiment for Google web properties.
Optional id used to allow this experiment to trigger experimental behavior on Google web properties.
Optional id that specifies under which conditions Google web and web trigger experiment ids are visible to Google web properties.
Optional id used to uniquely identify this experiment for Chrome Sync.
Optional id used to uniquely identify this experiment when activating integrations with the Android Google App. IMPORTANT: This field is only approved for integrations with the Android Google App and must receive a privacy review before extending to other apps.
Optional name of a Chrome flag that, when present, causes this experiment to be forced. If the forcing_flag field is set, users will not be assigned to this experiment unless that flag is present in Chrome's command line. Mutually exclusive with |forcing_feature_on|, |forcing_feature_off| or having a non-zero |probability_weight|.
Parameter values for this experiment.
Specifies the feature association parameters for this experiment group. Next tag: 5
Used in:
Optional list of features to enable when this experiment is selected. Command-line overrides take precedence over this setting. No feature listed here should exist in the |disable_feature| list.
Optional list of features to disable when this experiment is selected. Command-line overrides take precedence over this setting. No feature listed here should exist in the |enable_feature| list.
Similar to |forcing_flag|, this is an optional name of a feature which will cause this experiment to be activated, if that feature is enabled from the command-line. Experiment with this set are not eligible for selection via a random dice roll. Mutually exclusive with |forcing_flag|, |forcing_feature_off| or having a non-zero |probability_weight|.
Similar to |forcing_flag|, this is an optional name of a feature which will cause this experiment to be activated, if that feature is disabled from the command-line. Experiment with this set are not eligible for selection via a random dice roll. Mutually exclusive with |forcing_flag|, |forcing_feature_on| or having a non-zero |probability_weight|.
A UI string to override, and the new value to use.
Used in:
The first 32 bits of the MD5 hash digest of the resource name to override. e.g. Hash("IDS_BOOKMARK_BAR_UNDO")
The new value of the string being overridden. e.g. "Undo"
A named parameter value for this experiment. Next tag: 3
Used in:
The name of the parameter.
The value of the parameter.
Used in:
Regular experiment group. This is the default value and can be omitted.
Changes to this experiment group are ignored for the purposes of kill-switch triggering. Included to allow the flexibility to not trigger this logic for specific cases (e.g. a group rename without any functionality changes).
This is a kill-switch group that should be killed at "best effort" priority, e.g. with a hot dog menu badge. The experiment must have a probability_weight of 0.
This is a kill-switch group that should be killed with "critical" priority. Depending on platform this may result in showing a non-dismissible restart prompt with a timer. This should only be used in very serious emergency circumstances. The experiment must have a probability_weight of 0.
Filtering criteria specifying whether this study is applicable to a given Chrome instance. Next tag: 24
Used in:
The start date of the study in Unix time format. (Seconds since midnight January 1, 1970 UTC). See: http://en.wikipedia.org/wiki/Unix_time Ex: 1330893974 (corresponds to 2012-03-04 20:46:14Z)
The end date of the study in Unix time format. (Seconds since midnight January 1, 1970 UTC). See: http://en.wikipedia.org/wiki/Unix_time Ex: 1330893974 (corresponds to 2012-03-04 20:46:14Z) Mutually exclusive with expiry_date. The difference between end_date and expiry_date is that, when end_date is past, the field trial will not be created. When expiry_date is past, the trial is still created, but will be disabled, causing it to select its default group.
The minimum version for this study, allowing a trailing '*' character for pattern matching. Inclusive. The version should follow CHROMIUM_MAJOR.BRAVE_MAJOR.BRAVE_MINOR.BRAVE_BUILD. (To check for a match, iterate over each component checking >= until a * or end of string is reached.) Optional - if not specified, there is no minimum version. Ex: "17.0.963.46", "17.0.963.*", "17.*"
The maximum version for this study; same formatting as |min_version| above. Inclusive. The version should follow CHROMIUM_MAJOR.BRAVE_MAJOR.BRAVE_MINOR.BRAVE_BUILD. (To check for a match, iterate over each component checking <= until a * or end of string is reached.) Optional - if not specified, there is no maximum version. Ex: "19.*"
The minimum OS version for this study, allowing a trailing '*' character for pattern matching. Inclusive. (To check for a match, iterate over each component checking >= until a * or end of string is reached.) OS versions are sanitized into a list of digits separated by dots like so: Windows: "6.2.7601 SP1" --> "6.2.7601.1" Mac OS X: "10.11.2" --> "10.11.2" Linux: "4.13.0-27-generic" --> "4.13.0" Optional - if not specified, there is no minimum version.
The maximum OS version for this study, allowing a trailing '*' character for pattern matching. Inclusive. (To check for a match, iterate over each component checking <= until a * or end of string is reached.) Optional - if not specified, there is no minimum version. Ex: See |min_os_version| for details.
List of channels that will receive this study. If omitted, the study applies to all channels. Ex: [BETA, STABLE]
List of platforms that will receive this study. If omitted, the study applies to all platforms. Ex: [PLATFORM_WINDOWS, PLATFORM_MAC]
List of locales that will receive this study. If omitted, the study applies to all locales, unless |exclude_locale| is specified. Mutually exclusive with |exclude_locale|. Ex: ["en-US", "en-CA"]
List of locales that will be excluded from this study. If omitted, the study applies to all locales unless |locale| is specified. Mutually exclusive with |locale|. Ex: ["en-US", "en-CA"]
List of form factors that will receive this study. If omitted, the study applies to all form factors, unless |exclude_form_factor| is specified. Mutually exclusive with |exclude_form_factor|. Ex: [PHONE, TABLET]
List of form factors that will be excluded from this study. If omitted, the study applies to all form factors unless |form_factor| is specified. Mutually exclusive with |form_factor|. Takes the same range of values as form_factor, e.g. [PHONE, TABLET].
List of hardware classes that will receive this study. This supports Chrome OS and as of M77, Android. Starting with Chrome M67, this does a case insensitive match on the same hardware class field that is reported to UMA in the SystemProfileProto's |hardware.hardware_class| field. Older versions did a case sensitive substring comparison, which was problematic for short hardware classes like "eve" that existed as substrings of other longer ones. If omitted, the study applies to all hardware classes unless |exclude_hardware_class| is specified. Mutually exclusive with |exclude_hardware_class|. Ex: ["veyron_minnie", "daisy"]
List of hardware classes that will be excluded in this study. This supports Chrome OS and as of M77, Android. Starting with Chrome M67, this does a case insensitive match on the same hardware class field that is reported to UMA in the SystemProfileProto's |hardware.hardware_class| field. Older versions did a case sensitive substring comparison, which was problematic for short hardware classes like "eve" that existed as substrings of other longer ones. If omitted, the study applies to all hardware classes unless |hardware_class| is specified. Mutually exclusive with |hardware_class|. Ex: ["veyron_minnie", "daisy"]
List of lowercase ISO 3166-1 alpha-2 country codes that will receive this study. If omitted, the study applies to all countries unless |exclude_country| is specified. Mutually exclusive with |exclude_country|. Ex: ["in", "us"]
List of lowercase ISO 3166-1 alpha-2 country codes that will be excluded from this study. If omitted, the study applies to all countries unless |country| is specified. Mutually exclusive with |country|. Ex: ["in", "us"]
Specifies whether the config should apply to low-end devices only. This is currently only supported on Android.
Specifies whether the config should apply to enterprise or non-enterprise only. If omitted, the config applies to both groups. - On windows and mac, machines on a domain network are considered enterprise. - On chromeOS, registered mode determines enterprise status. - Android, iOS, and linux consider all clients as non-enterprise.
Specifies the restrictions applied by the "ChromeVariations" policy to the study. See the definition of the PolicyRestriction enum for details.
List of CPU architectures that will receive this study. If omitted, the study applies to all architectures, unless |exclude_cpu_architecture| is specified. Mutually exclusive with |exclude_cpu_architecture|. Ex: [X86_32, ARM64]
List of CPU architectures that will be excluded from this study. If omitted, the study applies to all architectures unless |cpu_architecture| is specified. Mutually exclusive with |cpu_architecture|. Takes the same range of values as cpu_architecture, e.g. [X86_32, ARM64].
Specifies that the config should apply only to clients where at least one of the signed in users is a member of at least one of the specified groups. The values are the gaia ID of the google group. Mutually exclusive with |exclude_google_group|.
Specifies that the config should apply only to clients where none of the signed in users are a member of any of the specified groups. The values are the gaia ID of the google group. Mutually exclusive with |google_group|.
Possible form factors Chrome is running on.
Used in:
Chrome Desktop on Windows, Mac, Linux, or Chrome OS.
Phone-based mobile Chrome, e.g. an Android phone or iPhone.
Tablet-based mobile Chrome, e.g. an Android tablet or iPad.
Chrome OS running in single-app Kiosk mode.
Chrome OS running on Meet Hardware devices e.g. Chromebox For Meetings.
Chrome running on Android TV.
Chrome running on Android Auto.
Chrome running on Android Foldable.
Specifies under which conditions a |google_web_experiment_id| or |google_web_trigger_experiment_id| is visible to Google web properties.
Used in:
Eligible requests to Google web properties include the experiment ID. See AppendHeaderIfNeeded() in variations_http_headers.cc for eligibility details.
Only eligible requests initiated from a first-party context include the experiment ID. The following requests are considered to be from a first-party context: requests initiated by (i) the browser, (ii) a Chrome internal page, (iii) a main frame with a Google-owned domain, and (iv) a subframe whose associated main frame has a Google-owned domain. See IsFirstPartyContext() in variations_http_headers.cc for more details.
Enum to pass as optional bool.
Neither True nor False. (For cases like missing / unset / default etc.)
Explicit True.
Explicit False.
Possible Chrome operating system platforms. These names must match those in tools/variations/fieldtrial_to_struct.py.
Used in:
Possible states of the severity filter.
Used in:
No restriction configs apply to clients that do not have a "ChromeVariations" policy set or if it is set to the variations enabled value.
Critical studies apply to both clients that have all variations enabled or if the "ChromeVariations" policy is set to only allow critical variations.
Critical-only studies apply *only* to clients that have the "ChromeVariations" policy set to only allow critical variations.
The VariationsSeed is a protobuf response from the server that contains the list of studies and a serial number to uniquely identify its contents. The serial number allows the client to easily determine if the list of experiments has changed from the previous VariationsSeed seen by the client. Next tag: 7
Lowercase ISO 3166-1 alpha-2 country code of the client, according to IP address. Deprecated.
A version string which identifies the version of the configuration files that this seed was generated from.
A list of layers where each study can optionally be part of one, with clients ensuring that only one study per layer is enabled.