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

Unified Diff: chrome/browser/extensions/external_component_loader.cc

Issue 265843009: Restored an option to enable enhanced bookmarks experiment from Finch (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/bookmarks/enhanced_bookmarks_features.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/external_component_loader.cc
diff --git a/chrome/browser/extensions/external_component_loader.cc b/chrome/browser/extensions/external_component_loader.cc
index 98e332171c3cb186b27b1fbd53ad093872b6d248..f5b775c6e91b7a982fcc7b70827ec1ac3d03fdea 100644
--- a/chrome/browser/extensions/external_component_loader.cc
+++ b/chrome/browser/extensions/external_component_loader.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/extensions/external_component_loader.h"
#include "base/command_line.h"
+#include "base/metrics/histogram.h"
#include "base/prefs/pref_change_registrar.h"
#include "base/prefs/pref_service.h"
#include "base/values.h"
@@ -12,13 +13,33 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/external_provider_impl.h"
#include "chrome/browser/search/hotword_service_factory.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/pref_names.h"
+#include "components/signin/core/browser/signin_manager.h"
#include "components/sync_driver/pref_names.h"
#include "components/user_prefs/pref_registry_syncable.h"
#include "content/public/browser/browser_thread.h"
+namespace {
+
+enum FinchBookmarksExperimentState {
+ kFinchBookmarksExperimentEnabled,
+ kFinchBookmarksExperimentEnabledUserSignedIn,
+ kFinchBookmarksExperimentEnabledUserOptOut,
+ kFinchBookmarksExperimentEnumSize
not at google - send to devlin 2014/05/05 20:19:11 what is the difference between this and the simila
yefimt 2014/05/05 20:54:24 This one is used for UMA_HISTOGRAM_ENUMERATION onl
not at google - send to devlin 2014/05/05 21:25:19 Having it separately has the disadvantage of a rep
+};
+
+bool IsUserSignedin(Profile* profile) {
+ SigninManager* signin = SigninManagerFactory::GetForProfile(profile);
+ if (!signin)
+ return false;
+ return !signin->GetAuthenticatedUsername().empty();
not at google - send to devlin 2014/05/05 20:19:11 could phrase these last 3 lines as "return signin
yefimt 2014/05/05 20:54:24 Done.
+}
+
+} // namespace
+
namespace extensions {
ExternalComponentLoader::ExternalComponentLoader(Profile* profile)
@@ -42,28 +63,69 @@ void ExternalComponentLoader::StartLoading() {
BookmarksExperimentState bookmarks_experiment_state_before =
static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
- if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) {
- // kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
- // "0" - user opted out.
- if (CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
- switches::kEnhancedBookmarksExperiment) != "0") {
+ // kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
+ // "0" - user opted out.
+ bool opt_out = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kEnhancedBookmarksExperiment) == "0";
+
+ bool enabled_from_finch = false;
+ if (IsEnhancedBookmarksExperimentEnabledFromFinch()) {
+ enabled_from_finch = !IsUserSignedin(profile_);
+ FinchBookmarksExperimentState state_to_report =
+ enabled_from_finch ?
+ (opt_out ? kFinchBookmarksExperimentEnabledUserOptOut :
+ kFinchBookmarksExperimentEnabled) :
+ kFinchBookmarksExperimentEnabledUserSignedIn;
+ UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.FinchExperimentState",
+ state_to_report,
+ kFinchBookmarksExperimentEnumSize);
+ }
+
+ if (enabled_from_finch) {
+ if (opt_out) {
+ // Experiment enabled but user opted out.
+ profile_->GetPrefs()->SetInteger(
not at google - send to devlin 2014/05/05 20:19:11 why do you need to store whether the command line
yefimt 2014/05/05 20:54:24 In case of finch it not really necessary. Just it
+ sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
+ kBookmarksExperimentOptoutFromFinch);
+ } else {
// Experiment enabled.
- std::string ext_id = profile_->GetPrefs()->GetString(
- sync_driver::prefs::kEnhancedBookmarksExtensionId);
+ profile_->GetPrefs()->SetInteger(
+ sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
+ kBookmarksExperimentEnabledFromFinch);
+ std::string ext_id = GetEnhancedBookmarksExtensionIdFromFinch();
if (!ext_id.empty()) {
prefs_->SetString(ext_id + ".external_update_url",
extension_urls::GetWebstoreUpdateUrl().spec());
}
- } else {
+ }
+ } else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) {
+ if (opt_out) {
// Experiment enabled but user opted out.
profile_->GetPrefs()->SetInteger(
- sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
- kBookmarksExperimentEnabledUserOptOut);
+ sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
+ kBookmarksExperimentEnabledUserOptOut);
+ UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
+ kBookmarksExperimentEnabledUserOptOut,
+ kBookmarksExperimentEnumSize);
+ } else {
+ // Experiment enabled.
+ std::string ext_id = profile_->GetPrefs()->GetString(
+ sync_driver::prefs::kEnhancedBookmarksExtensionId);
+ if (!ext_id.empty()) {
+ prefs_->SetString(ext_id + ".external_update_url",
+ extension_urls::GetWebstoreUpdateUrl().spec());
not at google - send to devlin 2014/05/05 20:19:11 I could say the same for finch actually. does pref
yefimt 2014/05/05 20:54:24 If you are talking about statement above, |prefs_|
not at google - send to devlin 2014/05/05 21:25:19 having prefs_ and GetPrefs() as totally different
+ }
+ UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
+ kBookmarksExperimentEnabled,
+ kBookmarksExperimentEnumSize);
}
} else if (bookmarks_experiment_state_before ==
kBookmarksExperimentEnabledUserOptOut) {
- if (CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
- switches::kEnhancedBookmarksExperiment) != "0") {
+ if (opt_out) {
+ UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
+ kBookmarksExperimentEnabledUserOptOut,
+ kBookmarksExperimentEnumSize);
+ } else {
// User opted in again.
profile_->GetPrefs()->SetInteger(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
@@ -74,6 +136,9 @@ void ExternalComponentLoader::StartLoading() {
prefs_->SetString(ext_id + ".external_update_url",
extension_urls::GetWebstoreUpdateUrl().spec());
}
+ UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
+ kBookmarksExperimentEnabled,
+ kBookmarksExperimentEnumSize);
}
} else {
// Experiment disabled.
@@ -81,6 +146,9 @@ void ExternalComponentLoader::StartLoading() {
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled);
profile_->GetPrefs()->ClearPref(
sync_driver::prefs::kEnhancedBookmarksExtensionId);
+ UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
+ kNoBookmarksExperiment,
+ kBookmarksExperimentEnumSize);
}
BookmarksExperimentState bookmarks_experiment_state =
static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger(
« no previous file with comments | « chrome/browser/bookmarks/enhanced_bookmarks_features.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698