Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: chrome/browser/instant/instant_field_trial.h

Issue 8588003: Add a new field trial for Instant. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_INSTANT_INSTANT_FIELD_TRIAL_H_ 5 #ifndef CHROME_BROWSER_INSTANT_INSTANT_FIELD_TRIAL_H_
6 #define CHROME_BROWSER_INSTANT_INSTANT_FIELD_TRIAL_H_ 6 #define CHROME_BROWSER_INSTANT_INSTANT_FIELD_TRIAL_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 10 matching lines...) Expand all
21 // The following mutually exclusive groups each select a small random sample of 21 // The following mutually exclusive groups each select a small random sample of
22 // the remaining users. Instant is enabled with preloading for the EXPERIMENT 22 // the remaining users. Instant is enabled with preloading for the EXPERIMENT
23 // groups. It remains disabled, as is default, for the CONTROL groups. 23 // groups. It remains disabled, as is default, for the CONTROL groups.
24 // 24 //
25 // INSTANT_EXPERIMENT: Queries are issued as the user types, and previews are 25 // INSTANT_EXPERIMENT: Queries are issued as the user types, and previews are
26 // shown. If the user hasn't opted to send metrics (UMA) data, they are 26 // shown. If the user hasn't opted to send metrics (UMA) data, they are
27 // bounced back to INACTIVE. 27 // bounced back to INACTIVE.
28 // 28 //
29 // HIDDEN_EXPERIMENT: Queries are issued as the user types, but no preview is 29 // HIDDEN_EXPERIMENT: Queries are issued as the user types, but no preview is
30 // shown until they press <Enter>. If the user hasn't opted to send metrics 30 // shown until they press <Enter>. If the user hasn't opted to send metrics
31 // (UMA) data, they are bounced back to INACTIVE. 31 // (UMA) data, they are bounced back to INACTIVE. Suggestions obtained from
32 // Instant are not propagated back to the omnibox.
32 // 33 //
33 // SILENT_EXPERIMENT: No queries are issued until the user presses <Enter>. No 34 // SILENT_EXPERIMENT: No queries are issued until the user presses <Enter>. No
34 // previews are shown. The user is not required to send metrics (UMA) data. 35 // previews are shown. The user is not required to send metrics (UMA) data.
35 // 36 //
37 // SUGGEST_EXPERIMENT: Same as HIDDEN, except that the Instant suggestions are
38 // autocompleted inline into the omnibox.
39 //
36 // UMA_CONTROL: Instant is disabled. If the user hasn't opted to send metrics 40 // UMA_CONTROL: Instant is disabled. If the user hasn't opted to send metrics
37 // (UMA) data, they are bounced back to INACTIVE. 41 // (UMA) data, they are bounced back to INACTIVE.
38 // 42 //
39 // ALL_CONTROL: Instant is disabled. The user is not required to send metrics 43 // ALL_CONTROL: Instant is disabled. The user is not required to send metrics
40 // (UMA) data. 44 // (UMA) data.
41 // 45 //
42 // Users not chosen into any of the above groups are INACTIVE. 46 // Users not chosen into any of the above groups are INACTIVE.
43 // 47 //
44 // Each non-INACTIVE group is split into two equal subgroups, to detect bias 48 // Each non-INACTIVE group is split into two equal subgroups, to detect bias
45 // between them when analyzing metrics. The subgroups are denoted by "_A" and 49 // between them when analyzing metrics. The subgroups are denoted by "_A" and
46 // "_B" suffixes, and are treated identically for all other purposes. 50 // "_B" suffixes, and are treated identically for all other purposes.
47 class InstantFieldTrial { 51 class InstantFieldTrial {
48 public: 52 public:
49 enum Group { 53 enum Group {
50 INACTIVE, 54 INACTIVE,
51 55
52 INSTANT_EXPERIMENT_A, 56 INSTANT_EXPERIMENT_A,
53 INSTANT_EXPERIMENT_B, 57 INSTANT_EXPERIMENT_B,
58
54 HIDDEN_EXPERIMENT_A, 59 HIDDEN_EXPERIMENT_A,
55 HIDDEN_EXPERIMENT_B, 60 HIDDEN_EXPERIMENT_B,
61
56 SILENT_EXPERIMENT_A, 62 SILENT_EXPERIMENT_A,
57 SILENT_EXPERIMENT_B, 63 SILENT_EXPERIMENT_B,
58 64
65 SUGGEST_EXPERIMENT_A,
66 SUGGEST_EXPERIMENT_B,
67
59 UMA_CONTROL_A, 68 UMA_CONTROL_A,
60 UMA_CONTROL_B, 69 UMA_CONTROL_B,
70
61 ALL_CONTROL_A, 71 ALL_CONTROL_A,
62 ALL_CONTROL_B, 72 ALL_CONTROL_B,
63 }; 73 };
64 74
65 // Activate the field trial. Before this call, all calls to GetGroup will 75 // Activate the field trial. Before this call, all calls to GetGroup will
66 // return INACTIVE. *** MUST NOT BE CALLED MORE THAN ONCE. *** 76 // return INACTIVE. *** MUST NOT BE CALLED MORE THAN ONCE. ***
67 static void Activate(); 77 static void Activate();
68 78
69 // Return the field trial group this profile belongs to. 79 // Return the field trial group this profile belongs to.
70 static Group GetGroup(Profile* profile); 80 static Group GetGroup(Profile* profile);
71 81
72 // Check if the user is in any of the EXPERIMENT groups. 82 // Check if the user is in any of the EXPERIMENT groups.
73 static bool IsInstantExperiment(Profile* profile); 83 static bool IsInstantExperiment(Profile* profile);
74 84
75 // Check if the user is in the HIDDEN or SILENT EXPERIMENT groups. 85 // Check if the user is in the HIDDEN, SILENT or SUGGEST EXPERIMENT groups.
76 static bool IsHiddenExperiment(Profile* profile); 86 static bool IsHiddenExperiment(Profile* profile);
77 87
78 // Check if the user is in the SILENT EXPERIMENT group. 88 // Check if the user is in the SILENT EXPERIMENT group.
79 static bool IsSilentExperiment(Profile* profile); 89 static bool IsSilentExperiment(Profile* profile);
80 90
81 // Returns a string describing the user's group. Can be added to histogram 91 // Returns a string describing the user's group. Can be added to histogram
82 // names, to split histograms by field trial groups. 92 // names, to split histograms by field trial groups.
83 static std::string GetGroupName(Profile* profile); 93 static std::string GetGroupName(Profile* profile);
84 94
85 // Returns a string denoting the user's group, for adding as a URL param. 95 // Returns a string denoting the user's group, for adding as a URL param.
86 static std::string GetGroupAsUrlParam(Profile* profile); 96 static std::string GetGroupAsUrlParam(Profile* profile);
87 97
98 // Returns whether the Instant suggested text should be autocompleted inline
99 // into the omnibox.
100 static bool ShouldSetSuggestedText(Profile* profile);
101
88 private: 102 private:
89 DISALLOW_IMPLICIT_CONSTRUCTORS(InstantFieldTrial); 103 DISALLOW_IMPLICIT_CONSTRUCTORS(InstantFieldTrial);
90 }; 104 };
91 105
92 #endif // CHROME_BROWSER_INSTANT_INSTANT_FIELD_TRIAL_H_ 106 #endif // CHROME_BROWSER_INSTANT_INSTANT_FIELD_TRIAL_H_
OLDNEW
« no previous file with comments | « chrome/browser/instant/instant_controller.cc ('k') | chrome/browser/instant/instant_field_trial.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698