OLD | NEW |
---|---|
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 21 matching lines...) Expand all Loading... | |
32 #if defined(OS_ANDROID) | 32 #if defined(OS_ANDROID) |
33 return !ext_id.empty(); | 33 return !ext_id.empty(); |
34 #else | 34 #else |
35 const extensions::FeatureProvider* feature_provider = | 35 const extensions::FeatureProvider* feature_provider = |
36 extensions::FeatureProvider::GetPermissionFeatures(); | 36 extensions::FeatureProvider::GetPermissionFeatures(); |
37 extensions::Feature* feature = feature_provider->GetFeature("metricsPrivate"); | 37 extensions::Feature* feature = feature_provider->GetFeature("metricsPrivate"); |
38 return feature && feature->IsIdInWhitelist(ext_id); | 38 return feature && feature->IsIdInWhitelist(ext_id); |
39 #endif | 39 #endif |
40 } | 40 } |
41 | 41 |
42 PrefService* GetFlagsStorage(PrefService* user_prefs, | |
43 PrefService* local_state) { | |
44 #if defined(OS_CHROMEOS) | |
45 // Chrome OS is using user prefs for flags storage. | |
46 return user_prefs; | |
47 #else | |
48 return local_state; | |
49 #endif | |
50 } | |
51 | |
42 }; // namespace | 52 }; // namespace |
43 | 53 |
44 bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs, | 54 bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs, |
45 std::string* extension_id) { | 55 std::string* extension_id) { |
46 BookmarksExperimentState bookmarks_experiment_state = | 56 BookmarksExperimentState bookmarks_experiment_state = |
47 static_cast<BookmarksExperimentState>(user_prefs->GetInteger( | 57 static_cast<BookmarksExperimentState>(user_prefs->GetInteger( |
48 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); | 58 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); |
49 if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED_FROM_FINCH) { | 59 if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED_FROM_FINCH) { |
50 *extension_id = GetEnhancedBookmarksExtensionIdFromFinch(); | 60 *extension_id = GetEnhancedBookmarksExtensionIdFromFinch(); |
51 return !extension_id->empty(); | 61 return !extension_id->empty(); |
52 } | 62 } |
53 if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED) { | 63 if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED) { |
54 *extension_id = user_prefs->GetString( | 64 *extension_id = user_prefs->GetString( |
55 sync_driver::prefs::kEnhancedBookmarksExtensionId); | 65 sync_driver::prefs::kEnhancedBookmarksExtensionId); |
56 return !extension_id->empty(); | 66 return !extension_id->empty(); |
57 } | 67 } |
58 | 68 |
59 return false; | 69 return false; |
60 } | 70 } |
61 | 71 |
62 void UpdateBookmarksExperimentState( | 72 void UpdateBookmarksExperimentState( |
63 PrefService* user_prefs, | 73 PrefService* user_prefs, |
64 PrefService* local_state, | 74 PrefService* local_state, |
65 bool user_signed_in, | 75 bool user_signed_in, |
66 BookmarksExperimentState experiment_enabled_from_sync) { | 76 BookmarksExperimentState experiment_enabled_from_sync) { |
67 PrefService* flags_storage = local_state; | 77 PrefService* flags_storage = GetFlagsStorage(user_prefs, local_state); |
68 #if defined(OS_CHROMEOS) | |
69 // Chrome OS is using user prefs for flags storage. | |
70 flags_storage = user_prefs; | |
71 #endif | |
72 | 78 |
73 BookmarksExperimentState bookmarks_experiment_state_before = | 79 BookmarksExperimentState bookmarks_experiment_state_before = |
74 static_cast<BookmarksExperimentState>(user_prefs->GetInteger( | 80 static_cast<BookmarksExperimentState>(user_prefs->GetInteger( |
75 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); | 81 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); |
76 // If user signed out, clear possible previous state. | 82 // If user signed out, clear possible previous state. |
77 if (!user_signed_in) { | 83 if (!user_signed_in) { |
78 bookmarks_experiment_state_before = BOOKMARKS_EXPERIMENT_NONE; | 84 bookmarks_experiment_state_before = BOOKMARKS_EXPERIMENT_NONE; |
79 ForceFinchBookmarkExperimentIfNeeded(flags_storage, | 85 ForceFinchBookmarkExperimentIfNeeded(flags_storage, |
80 BOOKMARKS_EXPERIMENT_NONE); | 86 BOOKMARKS_EXPERIMENT_NONE); |
81 } | 87 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
122 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT) { | 128 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT) { |
123 if (opt_out) { | 129 if (opt_out) { |
124 bookmarks_experiment_new_state = | 130 bookmarks_experiment_new_state = |
125 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT; | 131 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT; |
126 } else { | 132 } else { |
127 // User opted in again. | 133 // User opted in again. |
128 bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED; | 134 bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED; |
129 } | 135 } |
130 } | 136 } |
131 | 137 |
138 #if defined(OS_ANDROID) | |
139 bool opt_in = !opt_out | |
140 && CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | |
141 switches::kEnhancedBookmarksExperiment) == "1"; | |
142 if (opt_in && bookmarks_experiment_new_state == BOOKMARKS_EXPERIMENT_NONE) | |
143 bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED; | |
144 #endif | |
145 | |
132 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState", | 146 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState", |
133 bookmarks_experiment_new_state, | 147 bookmarks_experiment_new_state, |
134 BOOKMARKS_EXPERIMENT_ENUM_SIZE); | 148 BOOKMARKS_EXPERIMENT_ENUM_SIZE); |
135 user_prefs->SetInteger( | 149 user_prefs->SetInteger( |
136 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled, | 150 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled, |
137 bookmarks_experiment_new_state); | 151 bookmarks_experiment_new_state); |
138 ForceFinchBookmarkExperimentIfNeeded(flags_storage, | 152 ForceFinchBookmarkExperimentIfNeeded(flags_storage, |
139 bookmarks_experiment_new_state); | 153 bookmarks_experiment_new_state); |
140 } | 154 } |
141 | 155 |
(...skipping 19 matching lines...) Expand all Loading... | |
161 new base::StringValue(switches::kManualEnhancedBookmarks)); | 175 new base::StringValue(switches::kManualEnhancedBookmarks)); |
162 } else if (bookmarks_experiment_state == | 176 } else if (bookmarks_experiment_state == |
163 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT) { | 177 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT) { |
164 experiments_list->Remove( | 178 experiments_list->Remove( |
165 base::StringValue(switches::kManualEnhancedBookmarks), &index); | 179 base::StringValue(switches::kManualEnhancedBookmarks), &index); |
166 experiments_list->AppendIfNotPresent( | 180 experiments_list->AppendIfNotPresent( |
167 new base::StringValue(switches::kManualEnhancedBookmarksOptout)); | 181 new base::StringValue(switches::kManualEnhancedBookmarksOptout)); |
168 } | 182 } |
169 } | 183 } |
170 | 184 |
171 bool IsEnhancedBookmarksExperimentEnabled() { | 185 #if defined(OS_ANDROID) |
172 CommandLine* command_line = CommandLine::ForCurrentProcess(); | |
173 if (command_line->HasSwitch(switches::kManualEnhancedBookmarks) || | |
174 command_line->HasSwitch(switches::kManualEnhancedBookmarksOptout)) { | |
175 return true; | |
176 } | |
177 | 186 |
178 return IsEnhancedBookmarksExperimentEnabledFromFinch(); | 187 bool IsEnhancedBookmarkImageFetchingEnabled(PrefService* user_prefs, |
179 } | 188 PrefService* local_state) { |
180 | 189 if (IsEnhancedBookmarksExperimentEnabled(user_prefs, local_state)) |
181 #if defined(OS_ANDROID) | |
182 bool IsEnhancedBookmarkImageFetchingEnabled() { | |
183 if (IsEnhancedBookmarksExperimentEnabled()) | |
184 return true; | 190 return true; |
185 | 191 |
186 // Salient images are collected from visited bookmarked pages even if the | 192 // Salient images are collected from visited bookmarked pages even if the |
187 // enhanced bookmark feature is turned off. This is to have some images | 193 // enhanced bookmark feature is turned off. This is to have some images |
188 // available so that in the future, when the feature is turned on, the user | 194 // available so that in the future, when the feature is turned on, the user |
189 // experience is not a big list of flat colors. However as a precautionary | 195 // experience is not a big list of flat colors. However as a precautionary |
190 // measure it is possible to disable this collection of images from finch. | 196 // measure it is possible to disable this collection of images from finch. |
191 std::string disable_fetching = variations::GetVariationParamValue( | 197 std::string disable_fetching = variations::GetVariationParamValue( |
192 kFieldTrialName, "DisableImagesFetching"); | 198 kFieldTrialName, "DisableImagesFetching"); |
193 return disable_fetching.empty(); | 199 return disable_fetching.empty(); |
194 } | 200 } |
201 | |
202 bool IsEnhancedBookmarksExperimentEnabled(PrefService* user_prefs, | |
203 PrefService* local_state) { | |
204 PrefService* flags_storage = GetFlagsStorage(user_prefs, local_state); | |
205 | |
206 const base::ListValue* experiments_list = flags_storage->GetList( | |
207 prefs::kEnabledLabsExperiments); | |
208 | |
209 if (flags_storage) { | |
210 if (experiments_list->Find( | |
211 base::StringValue(switches::kManualEnhancedBookmarks)) | |
Yaron
2014/08/28 00:17:40
I don't understand the distinction here. Either ex
Kibeom Kim (inactive)
2014/08/28 18:31:00
Done.
| |
212 != experiments_list->end()) { | |
213 return true; | |
214 } else if (experiments_list->Find( | |
215 base::StringValue(switches::kManualEnhancedBookmarksOptout)) | |
216 != experiments_list->end()) { | |
217 return false; | |
218 } | |
219 } | |
220 | |
221 return IsEnhancedBookmarksExperimentEnabledFromFinch(); | |
222 } | |
223 | |
224 #else | |
225 | |
226 bool IsEnhancedBookmarksExperimentEnabled() { | |
227 CommandLine* command_line = CommandLine::ForCurrentProcess(); | |
228 if (command_line->HasSwitch(switches::kManualEnhancedBookmarks) || | |
229 command_line->HasSwitch(switches::kManualEnhancedBookmarksOptout)) { | |
230 return true; | |
231 } | |
232 return IsEnhancedBookmarksExperimentEnabledFromFinch(); | |
233 } | |
234 | |
195 #endif | 235 #endif |
196 | 236 |
197 bool IsEnableDomDistillerSet() { | 237 bool IsEnableDomDistillerSet() { |
198 if (CommandLine::ForCurrentProcess()-> | 238 if (CommandLine::ForCurrentProcess()-> |
199 HasSwitch(switches::kEnableDomDistiller)) { | 239 HasSwitch(switches::kEnableDomDistiller)) { |
200 return true; | 240 return true; |
201 } | 241 } |
202 if (variations::GetVariationParamValue( | 242 if (variations::GetVariationParamValue( |
203 kFieldTrialName, "enable-dom-distiller") == "1") | 243 kFieldTrialName, "enable-dom-distiller") == "1") |
204 return true; | 244 return true; |
205 | 245 |
206 return false; | 246 return false; |
207 } | 247 } |
208 | 248 |
209 bool IsEnableSyncArticlesSet() { | 249 bool IsEnableSyncArticlesSet() { |
210 if (CommandLine::ForCurrentProcess()-> | 250 if (CommandLine::ForCurrentProcess()-> |
211 HasSwitch(switches::kEnableSyncArticles)) { | 251 HasSwitch(switches::kEnableSyncArticles)) { |
212 return true; | 252 return true; |
213 } | 253 } |
214 if (variations::GetVariationParamValue( | 254 if (variations::GetVariationParamValue( |
215 kFieldTrialName, "enable-sync-articles") == "1") | 255 kFieldTrialName, "enable-sync-articles") == "1") |
216 return true; | 256 return true; |
217 | 257 |
218 return false; | 258 return false; |
219 } | 259 } |
OLD | NEW |