Chromium Code Reviews| 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 |