1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
// 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: 11
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.
optional uint64 experiment_id = 3;
}
// 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: 6
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;
}
|