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

Unified Diff: chrome/browser/password_manager/password_manager_setting_migrator_service.cc

Issue 1420533007: [Smart Lock, Prefs reconciliation] Finished componetization. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
Index: chrome/browser/password_manager/password_manager_setting_migrator_service.cc
diff --git a/chrome/browser/password_manager/password_manager_setting_migrator_service.cc b/chrome/browser/password_manager/password_manager_setting_migrator_service.cc
deleted file mode 100644
index b8612b458bac37de44bb2b7d74d629cf3e18a8f4..0000000000000000000000000000000000000000
--- a/chrome/browser/password_manager/password_manager_setting_migrator_service.cc
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright (c) 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/password_manager/password_manager_setting_migrator_service.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/metrics/histogram_macros.h"
-#include "components/keyed_service/content/browser_context_dependency_manager.h"
-#include "components/password_manager/core/browser/password_manager_settings_migration_experiment.h"
-#include "components/password_manager/core/common/password_manager_pref_names.h"
-#include "components/sync_driver/sync_service.h"
-#include "components/syncable_prefs/pref_service_syncable.h"
-
-namespace {
-
-bool GetBooleanUserOrDefaultPrefValue(PrefService* prefs,
- const std::string& name) {
- bool result = false;
- const base::Value* value = prefs->GetUserPrefValue(name);
- if (!value)
- value = prefs->GetDefaultPrefValue(name);
- value->GetAsBoolean(&result);
- return result;
-}
-
-void ChangeOnePrefBecauseAnotherPrefHasChanged(
- PrefService* prefs,
- const std::string& other_pref_name,
- const std::string& changed_pref_name) {
- bool changed_pref =
- GetBooleanUserOrDefaultPrefValue(prefs, changed_pref_name);
- bool other_pref = GetBooleanUserOrDefaultPrefValue(prefs, other_pref_name);
- if (changed_pref != other_pref)
- prefs->SetBoolean(other_pref_name, changed_pref);
-}
-
-// Change value of both kPasswordManagerSavingEnabled and
-// kCredentialsEnableService to the |new_value|.
-void UpdatePreferencesValues(PrefService* prefs, bool new_value) {
- prefs->SetBoolean(password_manager::prefs::kPasswordManagerSavingEnabled,
- new_value);
- prefs->SetBoolean(password_manager::prefs::kCredentialsEnableService,
- new_value);
-}
-
-void SaveCurrentPrefState(PrefService* prefs,
- bool* new_pref_value,
- bool* legacy_pref_value) {
- *new_pref_value = GetBooleanUserOrDefaultPrefValue(
- prefs, password_manager::prefs::kCredentialsEnableService);
- *legacy_pref_value = GetBooleanUserOrDefaultPrefValue(
- prefs, password_manager::prefs::kPasswordManagerSavingEnabled);
-}
-
-void TrackInitialAndFinalValues(PrefService* prefs,
- bool initial_new_pref_value,
- bool initial_legacy_pref_value) {
- bool final_new_pref_value =
- prefs->GetBoolean(password_manager::prefs::kCredentialsEnableService);
- bool final_legacy_pref_value =
- prefs->GetBoolean(password_manager::prefs::kPasswordManagerSavingEnabled);
- const int kMaxInitValue = 0x10;
- int value_to_log = 0;
- const int kInitialNewValueMask = 0x8;
- const int kInitialLegacyValueMask = 0x4;
- const int kFinalNewValueMask = 0x2;
- const int kFinalLegacyValueMask = 0x1;
- if (initial_new_pref_value)
- value_to_log |= kInitialNewValueMask;
- if (initial_legacy_pref_value)
- value_to_log |= kInitialLegacyValueMask;
- if (final_new_pref_value)
- value_to_log |= kFinalNewValueMask;
- if (final_legacy_pref_value)
- value_to_log |= kFinalLegacyValueMask;
- UMA_HISTOGRAM_ENUMERATION(
- "PasswordManager.SettingsReconciliation.InitialAndFinalValues",
- value_to_log, kMaxInitValue);
-}
-
-} // namespace
-
-namespace password_manager {
-
-PasswordManagerSettingMigratorService::PasswordManagerSettingMigratorService(
- syncable_prefs::PrefServiceSyncable* prefs)
- : prefs_(prefs), sync_service_(nullptr) {
- SaveCurrentPrefState(prefs_, &initial_new_pref_value_,
- &initial_legacy_pref_value_);
-}
-
-PasswordManagerSettingMigratorService::
- ~PasswordManagerSettingMigratorService() {}
-
-void PasswordManagerSettingMigratorService::InitializeMigration(
- sync_driver::SyncService* sync_service) {
- SaveCurrentPrefState(prefs_, &initial_new_pref_value_,
- &initial_legacy_pref_value_);
- const int kMaxInitialValues = 4;
- UMA_HISTOGRAM_ENUMERATION(
- "PasswordManager.SettingsReconciliation.InitialValues",
- (static_cast<int>(initial_new_pref_value_) << 1 |
- static_cast<int>(initial_legacy_pref_value_)),
- kMaxInitialValues);
- if (!password_manager::IsSettingsMigrationActive()) {
- return;
- }
- sync_service_ = sync_service;
- if (!sync_service_ || !CanSyncStart()) {
- MigrateOffState(prefs_);
- TrackInitialAndFinalValues(prefs_, initial_new_pref_value_,
- initial_legacy_pref_value_);
- }
- InitObservers();
-}
-
-void PasswordManagerSettingMigratorService::InitObservers() {
- pref_change_registrar_.Init(prefs_);
- pref_change_registrar_.Add(
- password_manager::prefs::kCredentialsEnableService,
- base::Bind(&PasswordManagerSettingMigratorService::
- OnCredentialsEnableServicePrefChanged,
- base::Unretained(this)));
- pref_change_registrar_.Add(
- password_manager::prefs::kPasswordManagerSavingEnabled,
- base::Bind(&PasswordManagerSettingMigratorService::
- OnPasswordManagerSavingEnabledPrefChanged,
- base::Unretained(this)));
- // This causes OnIsSyncingChanged to be called when the value of
- // PrefService::IsSyncing() changes.
- prefs_->AddObserver(this);
-}
-
-bool PasswordManagerSettingMigratorService::CanSyncStart() {
- return sync_service_ && sync_service_->CanSyncStart() &&
- syncer::UserSelectableTypes().Has(syncer::PREFERENCES);
-}
-
-void PasswordManagerSettingMigratorService::Shutdown() {
- prefs_->RemoveObserver(this);
-}
-
-void PasswordManagerSettingMigratorService::
- OnCredentialsEnableServicePrefChanged(
- const std::string& changed_pref_name) {
- sync_data_.push_back(GetBooleanUserOrDefaultPrefValue(
- prefs_, password_manager::prefs::kCredentialsEnableService));
- ChangeOnePrefBecauseAnotherPrefHasChanged(
- prefs_, password_manager::prefs::kPasswordManagerSavingEnabled,
- password_manager::prefs::kCredentialsEnableService);
-}
-
-void PasswordManagerSettingMigratorService::
- OnPasswordManagerSavingEnabledPrefChanged(
- const std::string& changed_pref_name) {
- sync_data_.push_back(GetBooleanUserOrDefaultPrefValue(
- prefs_, password_manager::prefs::kPasswordManagerSavingEnabled));
- ChangeOnePrefBecauseAnotherPrefHasChanged(
- prefs_, password_manager::prefs::kCredentialsEnableService,
- password_manager::prefs::kPasswordManagerSavingEnabled);
-}
-
-void PasswordManagerSettingMigratorService::OnIsSyncingChanged() {
- if (WasModelAssociationStepPerformed()) {
- // Initial sync has finished.
- MigrateAfterModelAssociation(prefs_);
- }
-
- if (prefs_->IsSyncing() == prefs_->IsPrioritySyncing()) {
- // Sync is not in model association step.
- SaveCurrentPrefState(prefs_, &initial_new_pref_value_,
- &initial_legacy_pref_value_);
- sync_data_.clear();
- }
-}
-
-bool PasswordManagerSettingMigratorService::WasModelAssociationStepPerformed() {
-#if defined(OS_ANDROID)
- return prefs_->IsPrioritySyncing();
-#else
- return prefs_->IsSyncing() && prefs_->IsPrioritySyncing();
-#endif
-}
-
-void PasswordManagerSettingMigratorService::MigrateOffState(
- PrefService* prefs) {
- bool new_pref_value = GetBooleanUserOrDefaultPrefValue(
- prefs_, password_manager::prefs::kCredentialsEnableService);
- bool legacy_pref_value = GetBooleanUserOrDefaultPrefValue(
- prefs_, password_manager::prefs::kPasswordManagerSavingEnabled);
- UpdatePreferencesValues(prefs, new_pref_value && legacy_pref_value);
-}
-
-void PasswordManagerSettingMigratorService::MigrateAfterModelAssociation(
- PrefService* prefs) {
- if (sync_data_.empty()) {
- MigrateOffState(prefs);
- } else if (sync_data_.size() == 1) {
-#if defined(OS_ANDROID)
- if (initial_new_pref_value_ != initial_legacy_pref_value_) {
- // Treat special case for mobile clients where only priority pref
- // arrives on the client.
- if (!initial_new_pref_value_ && initial_legacy_pref_value_)
- UpdatePreferencesValues(prefs, true);
- else
- UpdatePreferencesValues(prefs, false);
- } else {
- UpdatePreferencesValues(prefs, sync_data_[0]);
- }
-#else
- // Only one value came from sync. This value should be assigned to both
- // preferences.
- UpdatePreferencesValues(prefs, sync_data_[0]);
-#endif
- } else {
- bool sync_new_pref_value = sync_data_[0];
- bool sync_legacy_pref_value = sync_data_.back();
- if (sync_legacy_pref_value && sync_new_pref_value) {
- UpdatePreferencesValues(prefs, true);
- } else if (!sync_legacy_pref_value && !sync_new_pref_value) {
- UpdatePreferencesValues(prefs, false);
- } else if (!initial_legacy_pref_value_ && !initial_new_pref_value_) {
- UpdatePreferencesValues(prefs, true);
- } else {
- UpdatePreferencesValues(prefs, false);
- }
- }
- TrackInitialAndFinalValues(prefs, initial_new_pref_value_,
- initial_legacy_pref_value_);
-}
-
-} // namespace password_manager

Powered by Google App Engine
This is Rietveld 408576698