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

Side by Side Diff: chrome/browser/bookmarks/enhanced_bookmarks_features.cc

Issue 291153012: Consolidated enhanced bookmarks experiment logic in one place. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" 5 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/prefs/scoped_user_pref_update.h" 10 #include "base/prefs/scoped_user_pref_update.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 } 48 }
49 if (bookmarks_experiment_state == kBookmarksExperimentEnabled) { 49 if (bookmarks_experiment_state == kBookmarksExperimentEnabled) {
50 *extension_id = user_prefs->GetString( 50 *extension_id = user_prefs->GetString(
51 sync_driver::prefs::kEnhancedBookmarksExtensionId); 51 sync_driver::prefs::kEnhancedBookmarksExtensionId);
52 return !extension_id->empty(); 52 return !extension_id->empty();
53 } 53 }
54 54
55 return false; 55 return false;
56 } 56 }
57 57
58 void UpdateBookmarksExperimentState(PrefService* user_prefs, 58 void UpdateBookmarksExperimentState(
59 PrefService* local_state, 59 PrefService* user_prefs,
60 bool user_signed_in) { 60 PrefService* local_state,
61 bool user_signed_in,
62 BookmarksExperimentState experiment_enabled_from_sync) {
61 PrefService* flags_storage = local_state; 63 PrefService* flags_storage = local_state;
62 #if defined(OS_CHROMEOS) 64 #if defined(OS_CHROMEOS)
63 // Chrome OS is using user prefs for flags storage. 65 // Chrome OS is using user prefs for flags storage.
64 flags_storage = user_prefs; 66 flags_storage = user_prefs;
65 #endif 67 #endif
66 68
67 BookmarksExperimentState bookmarks_experiment_state_before = 69 BookmarksExperimentState bookmarks_experiment_state_before =
68 static_cast<BookmarksExperimentState>(user_prefs->GetInteger( 70 static_cast<BookmarksExperimentState>(user_prefs->GetInteger(
69 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); 71 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
70 // If user signed out, clear possible previous state. 72 // If user signed out, clear possible previous state.
71 if (!user_signed_in) { 73 if (!user_signed_in) {
72 bookmarks_experiment_state_before = kNoBookmarksExperiment; 74 bookmarks_experiment_state_before = kNoBookmarksExperiment;
73 ForceFinchBookmarkExperimentIfNeeded(flags_storage, kNoBookmarksExperiment); 75 ForceFinchBookmarkExperimentIfNeeded(flags_storage, kNoBookmarksExperiment);
74 } 76 }
75 77
76 // kEnhancedBookmarksExperiment flag could have values "", "1" and "0". 78 // kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
77 // "0" - user opted out. 79 // "0" - user opted out.
78 bool opt_out = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 80 bool opt_out = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
79 switches::kEnhancedBookmarksExperiment) == "0"; 81 switches::kEnhancedBookmarksExperiment) == "0";
80 82
81 BookmarksExperimentState bookmarks_experiment_new_state = 83 BookmarksExperimentState bookmarks_experiment_new_state =
82 kNoBookmarksExperiment; 84 kNoBookmarksExperiment;
83 bool enabled_from_finch = false;
84 if (IsEnhancedBookmarksExperimentEnabledFromFinch()) {
85 enabled_from_finch = !user_signed_in;
86 if (user_signed_in) {
87 bookmarks_experiment_new_state =
88 kBookmarksExperimentEnabledFromFinchUserSignedIn;
89 }
90 }
91 85
92 if (enabled_from_finch) { 86 if (IsEnhancedBookmarksExperimentEnabledFromFinch() && !user_signed_in) {
93 if (opt_out) { 87 if (opt_out) {
94 // Experiment enabled but user opted out. 88 // Experiment enabled but user opted out.
95 bookmarks_experiment_new_state = kBookmarksExperimentOptOutFromFinch; 89 bookmarks_experiment_new_state = kBookmarksExperimentOptOutFromFinch;
96 } else { 90 } else {
97 // Experiment enabled. 91 // Experiment enabled.
98 bookmarks_experiment_new_state = kBookmarksExperimentEnabledFromFinch; 92 bookmarks_experiment_new_state = kBookmarksExperimentEnabledFromFinch;
99 } 93 }
94 } else if (experiment_enabled_from_sync == kBookmarksExperimentEnabled) {
sky 2014/05/23 19:51:56 How about a switch here?
95 // Experiment enabled from Chrome sync.
96 if (opt_out) {
97 // Experiment enabled but user opted out.
98 bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
99 } else {
100 // Experiment enabled.
101 bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
102 }
103 } else if (experiment_enabled_from_sync == kNoBookmarksExperiment) {
104 // Experiment is not enabled from Chrome sync.
105 bookmarks_experiment_new_state = kNoBookmarksExperiment;
100 } else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) { 106 } else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) {
101 if (opt_out) { 107 if (opt_out) {
102 // Experiment enabled but user opted out. 108 // Experiment enabled but user opted out.
103 bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut; 109 bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
104 } else { 110 } else {
105 bookmarks_experiment_new_state = kBookmarksExperimentEnabled; 111 bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
106 } 112 }
107 } else if (bookmarks_experiment_state_before == 113 } else if (bookmarks_experiment_state_before ==
108 kBookmarksExperimentEnabledUserOptOut) { 114 kBookmarksExperimentEnabledUserOptOut) {
109 if (opt_out) { 115 if (opt_out) {
110 bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut; 116 bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
111 } else { 117 } else {
112 // User opted in again. 118 // User opted in again.
113 bookmarks_experiment_new_state = kBookmarksExperimentEnabled; 119 bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
114 } 120 }
115 } 121 }
116 122
117 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState", 123 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
118 bookmarks_experiment_new_state, 124 bookmarks_experiment_new_state,
119 kBookmarksExperimentEnumSize); 125 kBookmarksExperimentEnumSize);
120 user_prefs->SetInteger( 126 user_prefs->SetInteger(
121 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled, 127 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
122 bookmarks_experiment_new_state); 128 bookmarks_experiment_new_state);
123 if (bookmarks_experiment_state_before != bookmarks_experiment_new_state) 129 ForceFinchBookmarkExperimentIfNeeded(flags_storage,
124 ForceFinchBookmarkExperimentIfNeeded(flags_storage, 130 bookmarks_experiment_new_state);
125 bookmarks_experiment_new_state);
126 } 131 }
127 132
128 void ForceFinchBookmarkExperimentIfNeeded( 133 void ForceFinchBookmarkExperimentIfNeeded(
129 PrefService* flags_storage, 134 PrefService* flags_storage,
130 BookmarksExperimentState bookmarks_experiment_state) { 135 BookmarksExperimentState bookmarks_experiment_state) {
131 if (!flags_storage) 136 if (!flags_storage)
132 return; 137 return;
133 ListPrefUpdate update(flags_storage, prefs::kEnabledLabsExperiments); 138 ListPrefUpdate update(flags_storage, prefs::kEnabledLabsExperiments);
134 base::ListValue* experiments_list = update.Get(); 139 base::ListValue* experiments_list = update.Get();
135 if (!experiments_list) 140 if (!experiments_list)
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 if (CommandLine::ForCurrentProcess()-> 185 if (CommandLine::ForCurrentProcess()->
181 HasSwitch(switches::kEnableSyncArticles)) { 186 HasSwitch(switches::kEnableSyncArticles)) {
182 return true; 187 return true;
183 } 188 }
184 if (chrome_variations::GetVariationParamValue( 189 if (chrome_variations::GetVariationParamValue(
185 kFieldTrialName, "enable-sync-articles") == "1") 190 kFieldTrialName, "enable-sync-articles") == "1")
186 return true; 191 return true;
187 192
188 return false; 193 return false;
189 } 194 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698