Commit 8a5231b1 authored by yefim@chromium.org's avatar yefim@chromium.org

Consolidated enhanced bookmarks experiment logic in one place.

BUG=

Review URL: https://codereview.chromium.org/291153012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272730 0039d316-1c4b-4281-b951-d872f2087c98
parent 492a1028
...@@ -55,9 +55,11 @@ bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs, ...@@ -55,9 +55,11 @@ bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs,
return false; return false;
} }
void UpdateBookmarksExperimentState(PrefService* user_prefs, void UpdateBookmarksExperimentState(
PrefService* local_state, PrefService* user_prefs,
bool user_signed_in) { PrefService* local_state,
bool user_signed_in,
BookmarksExperimentState experiment_enabled_from_sync) {
PrefService* flags_storage = local_state; PrefService* flags_storage = local_state;
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
// Chrome OS is using user prefs for flags storage. // Chrome OS is using user prefs for flags storage.
...@@ -80,16 +82,8 @@ void UpdateBookmarksExperimentState(PrefService* user_prefs, ...@@ -80,16 +82,8 @@ void UpdateBookmarksExperimentState(PrefService* user_prefs,
BookmarksExperimentState bookmarks_experiment_new_state = BookmarksExperimentState bookmarks_experiment_new_state =
kNoBookmarksExperiment; kNoBookmarksExperiment;
bool enabled_from_finch = false;
if (IsEnhancedBookmarksExperimentEnabledFromFinch()) {
enabled_from_finch = !user_signed_in;
if (user_signed_in) {
bookmarks_experiment_new_state =
kBookmarksExperimentEnabledFromFinchUserSignedIn;
}
}
if (enabled_from_finch) { if (IsEnhancedBookmarksExperimentEnabledFromFinch() && !user_signed_in) {
if (opt_out) { if (opt_out) {
// Experiment enabled but user opted out. // Experiment enabled but user opted out.
bookmarks_experiment_new_state = kBookmarksExperimentOptOutFromFinch; bookmarks_experiment_new_state = kBookmarksExperimentOptOutFromFinch;
...@@ -97,6 +91,18 @@ void UpdateBookmarksExperimentState(PrefService* user_prefs, ...@@ -97,6 +91,18 @@ void UpdateBookmarksExperimentState(PrefService* user_prefs,
// Experiment enabled. // Experiment enabled.
bookmarks_experiment_new_state = kBookmarksExperimentEnabledFromFinch; bookmarks_experiment_new_state = kBookmarksExperimentEnabledFromFinch;
} }
} else if (experiment_enabled_from_sync == kBookmarksExperimentEnabled) {
// Experiment enabled from Chrome sync.
if (opt_out) {
// Experiment enabled but user opted out.
bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
} else {
// Experiment enabled.
bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
}
} else if (experiment_enabled_from_sync == kNoBookmarksExperiment) {
// Experiment is not enabled from Chrome sync.
bookmarks_experiment_new_state = kNoBookmarksExperiment;
} else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) { } else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) {
if (opt_out) { if (opt_out) {
// Experiment enabled but user opted out. // Experiment enabled but user opted out.
...@@ -120,9 +126,8 @@ void UpdateBookmarksExperimentState(PrefService* user_prefs, ...@@ -120,9 +126,8 @@ void UpdateBookmarksExperimentState(PrefService* user_prefs,
user_prefs->SetInteger( user_prefs->SetInteger(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled, sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
bookmarks_experiment_new_state); bookmarks_experiment_new_state);
if (bookmarks_experiment_state_before != bookmarks_experiment_new_state) ForceFinchBookmarkExperimentIfNeeded(flags_storage,
ForceFinchBookmarkExperimentIfNeeded(flags_storage, bookmarks_experiment_new_state);
bookmarks_experiment_new_state);
} }
void ForceFinchBookmarkExperimentIfNeeded( void ForceFinchBookmarkExperimentIfNeeded(
......
...@@ -21,6 +21,7 @@ enum BookmarksExperimentState { ...@@ -21,6 +21,7 @@ enum BookmarksExperimentState {
kBookmarksExperimentEnabledFromFinch, kBookmarksExperimentEnabledFromFinch,
kBookmarksExperimentOptOutFromFinch, kBookmarksExperimentOptOutFromFinch,
kBookmarksExperimentEnabledFromFinchUserSignedIn, kBookmarksExperimentEnabledFromFinchUserSignedIn,
kBookmarksExperimentEnabledFromSyncUnknown,
kBookmarksExperimentEnumSize kBookmarksExperimentEnumSize
}; };
...@@ -31,9 +32,11 @@ bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs, ...@@ -31,9 +32,11 @@ bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs,
// Updates bookmark experiment state based on information from Chrome sync // Updates bookmark experiment state based on information from Chrome sync
// and Finch experiments. // and Finch experiments.
void UpdateBookmarksExperimentState(PrefService* user_prefs, void UpdateBookmarksExperimentState(
PrefService* local_state, PrefService* user_prefs,
bool user_signed_in); PrefService* local_state,
bool user_signed_in,
BookmarksExperimentState experiment_enabled_from_sync);
// Sets flag to opt-in user into Finch experiment. // Sets flag to opt-in user into Finch experiment.
void ForceFinchBookmarkExperimentIfNeeded( void ForceFinchBookmarkExperimentIfNeeded(
......
...@@ -42,7 +42,8 @@ void ExternalComponentLoader::StartLoading() { ...@@ -42,7 +42,8 @@ void ExternalComponentLoader::StartLoading() {
UpdateBookmarksExperimentState(profile_->GetPrefs(), UpdateBookmarksExperimentState(profile_->GetPrefs(),
g_browser_process->local_state(), g_browser_process->local_state(),
IsUserSignedin(profile_)); IsUserSignedin(profile_),
kBookmarksExperimentEnabledFromSyncUnknown);
std::string ext_id; std::string ext_id;
if (GetBookmarksExperimentExtensionID(profile_->GetPrefs(), &ext_id) && if (GetBookmarksExperimentExtensionID(profile_->GetPrefs(), &ext_id) &&
!ext_id.empty()) { !ext_id.empty()) {
......
...@@ -1037,44 +1037,18 @@ void ProfileSyncService::OnExperimentsChanged( ...@@ -1037,44 +1037,18 @@ void ProfileSyncService::OnExperimentsChanged(
profile()->GetPrefs()->SetBoolean(prefs::kInvalidationServiceUseGCMChannel, profile()->GetPrefs()->SetBoolean(prefs::kInvalidationServiceUseGCMChannel,
experiments.gcm_invalidations_enabled); experiments.gcm_invalidations_enabled);
int bookmarks_experiment_state_before = profile_->GetPrefs()->GetInteger( if (experiments.enhanced_bookmarks_enabled) {
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled);
// kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
// "" and "1" means experiment is enabled.
if ((CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
switches::kEnhancedBookmarksExperiment) != "0")) {
profile_->GetPrefs()->SetInteger(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
experiments.enhanced_bookmarks_enabled ? kBookmarksExperimentEnabled
: kNoBookmarksExperiment);
profile_->GetPrefs()->SetString( profile_->GetPrefs()->SetString(
sync_driver::prefs::kEnhancedBookmarksExtensionId, sync_driver::prefs::kEnhancedBookmarksExtensionId,
experiments.enhanced_bookmarks_ext_id); experiments.enhanced_bookmarks_ext_id);
} else { } else {
// User opt-out from chrome://flags profile_->GetPrefs()->ClearPref(
if (experiments.enhanced_bookmarks_enabled) { sync_driver::prefs::kEnhancedBookmarksExtensionId);
profile_->GetPrefs()->SetInteger(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
kBookmarksExperimentEnabledUserOptOut);
// Keep extension id up-to-date in case will opt-in later.
profile_->GetPrefs()->SetString(
sync_driver::prefs::kEnhancedBookmarksExtensionId,
experiments.enhanced_bookmarks_ext_id);
} else {
profile_->GetPrefs()->ClearPref(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled);
profile_->GetPrefs()->ClearPref(
sync_driver::prefs::kEnhancedBookmarksExtensionId);
}
}
BookmarksExperimentState bookmarks_experiment_state =
static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger(
sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
// If bookmark experiment state was changed update about flags experiment.
if (bookmarks_experiment_state_before != bookmarks_experiment_state) {
ForceFinchBookmarkExperimentIfNeeded(g_browser_process->local_state(),
bookmarks_experiment_state);
} }
UpdateBookmarksExperimentState(
profile_->GetPrefs(), g_browser_process->local_state(), true,
experiments.enhanced_bookmarks_enabled ? kBookmarksExperimentEnabled :
kNoBookmarksExperiment);
// If this is a first time sync for a client, this will be called before // If this is a first time sync for a client, this will be called before
// OnBackendInitialized() to ensure the new datatypes are available at sync // OnBackendInitialized() to ensure the new datatypes are available at sync
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment