// Copyright (c) 2012 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"; option optimize_for = LITE_RUNTIME; package chrome_variations; // This defines the Protocol Buffer representation of a Chrome Variations study // as sent to clients of the Variations server. // // Next tag: 12 message Study { // The name of the study. Should not contain spaces or special characters. // Ex: "my_study" required string name = 1; // 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, which will take precedence over // a corresponding hardcoded field trial in the client. // // Ex: 1330893974 (corresponds to 2012-03-04 20:46:14Z) optional int64 expiry_date = 3; // Consistency setting for a study. enum Consistency { SESSION = 0; // Can't change within a session. PERMANENT = 1; // Can't change for a given user. } // Consistency setting for this study. Optional - defaults to SESSION. // Ex: PERMANENT optional Consistency consistency = 7 [default = SESSION]; // Name of the experiment that gets the default experience. This experiment // must be included in the list below. // Ex: "default" optional string default_experiment_name = 8; // An experiment within the study. // // Next tag: 4 message Experiment { // The name of the experiment within the study. // Ex: "bucketA" required string name = 1; // The cut of the total probability taken for this group (the x in x / N, // where N is the sum of all x’s). // Ex: "50" required uint32 probability_weight = 2; // Optional id used to uniquely identify this experiment for Google web // properties. optional uint64 google_web_experiment_id = 3; // Optional id used to uniquely identify this experiment for Google Update. optional uint64 google_update_experiment_id = 4; } // List of experiments in this study. This list should include the default / // control group. // // 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 } repeated Experiment experiment = 9; // Possible Chrome release channels. // See: http://dev.chromium.org/getting-involved/dev-channel enum Channel { CANARY = 0; DEV = 1; BETA = 2; STABLE = 3; } // Possible Chrome operating system platforms. enum Platform { PLATFORM_WINDOWS = 0; PLATFORM_MAC = 1; PLATFORM_LINUX = 2; PLATFORM_CHROMEOS = 3; PLATFORM_ANDROID = 4; PLATFORM_IOS = 5; } // Filtering criteria specifying whether this study is applicable to a given // Chrome instance. // // Next tag: 7 message Filter { // 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) optional int64 start_date = 1; // The minimum Chrome 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: "17.0.963.46", "17.0.963.*", "17.*" optional string min_version = 2; // The maximum Chrome version for this study; same formatting as // |min_version| above. 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 maximum version. // Ex: "19.*" optional string max_version = 3; // List of channels that will receive this study. If omitted, the study // applies to all channels. // Ex: [BETA, STABLE] repeated Channel channel = 4; // List of platforms that will receive this study. If omitted, the study // applies to all platforms. // Ex: [PLATFORM_WINDOWS, PLATFORM_MAC] repeated Platform platform = 5; // List of locales that will receive this study. If omitted, the study // applies to all locales. // Ex: ["en-US", "en-CA"] repeated string locale = 6; } // 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. optional Filter filter = 10; // Randomization seed to be used when |consistency| is set to PERMANENT. If // not specified, randomization will be done using the trial name. optional uint32 randomization_seed = 11; }