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

Unified Diff: chrome/browser/sync/profile_sync_service.cc

Issue 6380004: [Sync] Tidy up SyncBackendHost interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix windows compile Created 9 years, 11 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/sync/profile_sync_service.cc
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc
index 0fdd2659cca4cdb273be61a2bbaf9409ef9c4865..9c19342bd7c98ffe7bda10f4acb1ff3b59fd7d92 100644
--- a/chrome/browser/sync/profile_sync_service.cc
+++ b/chrome/browser/sync/profile_sync_service.cc
@@ -404,12 +404,6 @@ void ProfileSyncService::InitializeBackend(bool delete_sync_data_folder) {
return;
}
- // TODO(chron): Reimplement invalidate XMPP login / Sync login
- // command line switches. Perhaps make it a command
- // line in the TokenService itself to pass an arbitrary
- // token.
-
-
syncable::ModelTypeSet types;
// If sync setup hasn't finished, we don't want to initialize routing info
// for any data types so that we don't download updates for types that the
@@ -429,9 +423,7 @@ void ProfileSyncService::InitializeBackend(bool delete_sync_data_folder) {
}
void ProfileSyncService::CreateBackend() {
- backend_.reset(
- new SyncBackendHost(this, profile_, profile_->GetPath(),
- data_type_controllers_));
+ backend_.reset(new SyncBackendHost(this, profile_));
}
void ProfileSyncService::StartUp() {
@@ -448,13 +440,6 @@ void ProfileSyncService::StartUp() {
CreateBackend();
- registrar_.Add(this,
- NotificationType::SYNC_PASSPHRASE_REQUIRED,
- Source<SyncBackendHost>(backend_.get()));
- registrar_.Add(this,
- NotificationType::SYNC_PASSPHRASE_ACCEPTED,
- Source<SyncBackendHost>(backend_.get()));
-
// Initialize the backend. Every time we start up a new SyncBackendHost,
// we'll want to start from a fresh SyncDB, so delete any old one that might
// be there.
@@ -483,13 +468,6 @@ void ProfileSyncService::Shutdown(bool sync_disabled) {
if (doomed_backend.get()) {
doomed_backend->Shutdown(sync_disabled);
- registrar_.Remove(this,
- NotificationType::SYNC_PASSPHRASE_REQUIRED,
- Source<SyncBackendHost>(doomed_backend.get()));
- registrar_.Remove(this,
- NotificationType::SYNC_PASSPHRASE_ACCEPTED,
- Source<SyncBackendHost>(doomed_backend.get()));
-
doomed_backend.reset();
}
@@ -519,7 +497,7 @@ void ProfileSyncService::DisableForUser() {
signin_->SignOut();
}
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
bool ProfileSyncService::HasSyncSetupCompleted() const {
@@ -545,6 +523,10 @@ void ProfileSyncService::UpdateLastSyncedTime() {
profile_->GetPrefs()->ScheduleSavePersistentPrefs();
}
+void ProfileSyncService::NotifyObservers() {
+ FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+}
+
// static
const char* ProfileSyncService::GetPrefNameForDataType(
syncable::ModelType data_type) {
@@ -591,7 +573,7 @@ void ProfileSyncService::OnUnrecoverableError(
// Tell the wizard so it can inform the user only if it is already open.
wizard_.Step(SyncSetupWizard::FATAL_ERROR);
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
LOG(ERROR) << "Unrecoverable error detected -- ProfileSyncService unusable."
<< message;
std::string location;
@@ -613,7 +595,7 @@ void ProfileSyncService::OnBackendInitialized() {
if (last_synced_time_.is_null()) {
UpdateLastSyncedTime();
}
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
if (!cros_user_.empty()) {
if (profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)) {
@@ -630,7 +612,7 @@ void ProfileSyncService::OnBackendInitialized() {
void ProfileSyncService::OnSyncCycleCompleted() {
UpdateLastSyncedTime();
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
void ProfileSyncService::UpdateAuthErrorState(
@@ -654,7 +636,7 @@ void ProfileSyncService::UpdateAuthErrorState(
is_auth_in_progress_ = false;
// Fan the notification out to interested UI-thread components.
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
void ProfileSyncService::OnAuthError() {
@@ -674,7 +656,7 @@ void ProfileSyncService::OnClearServerDataTimeout() {
if (clear_server_data_state_ != CLEAR_SUCCEEDED &&
clear_server_data_state_ != CLEAR_FAILED) {
clear_server_data_state_ = CLEAR_FAILED;
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
}
@@ -687,7 +669,7 @@ void ProfileSyncService::OnClearServerDataFailed() {
if (clear_server_data_state_ != CLEAR_SUCCEEDED &&
clear_server_data_state_ != CLEAR_FAILED) {
clear_server_data_state_ = CLEAR_FAILED;
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
}
@@ -698,8 +680,44 @@ void ProfileSyncService::OnClearServerDataSucceeded() {
// we want UI to update itself and no longer allow the user to press "clear"
if (clear_server_data_state_ != CLEAR_SUCCEEDED) {
clear_server_data_state_ = CLEAR_SUCCEEDED;
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
+ }
+}
+
+void ProfileSyncService::OnPassphraseRequired(bool for_decryption) {
+ DCHECK(backend_.get());
+ DCHECK(backend_->IsNigoriEnabled());
+ observed_passphrase_required_ = true;
+ passphrase_required_for_decryption_ = for_decryption;
+
+ if (!cached_passphrase_.value.empty()) {
+ SetPassphrase(cached_passphrase_.value,
+ cached_passphrase_.is_explicit,
+ cached_passphrase_.is_creation);
+ cached_passphrase_ = CachedPassphrase();
+ return;
}
+
+ if (WizardIsVisible()) {
+ wizard_.Step(SyncSetupWizard::ENTER_PASSPHRASE);
+ }
+
+ NotifyObservers();
+}
+
+void ProfileSyncService::OnPassphraseAccepted() {
+ // Make sure the data types that depend on the passphrase are started at
+ // this time.
+ syncable::ModelTypeSet types;
+ GetPreferredDataTypes(&types);
+ data_type_manager_->Configure(types);
+
+ NotifyObservers();
+ observed_passphrase_required_ = false;
+ tried_setting_explicit_passphrase_ = false;
+ tried_creating_explicit_passphrase_ = false;
+
+ wizard_.Step(SyncSetupWizard::DONE);
}
void ProfileSyncService::ShowLoginDialog(gfx::NativeWindow parent_window) {
@@ -723,7 +741,7 @@ void ProfileSyncService::ShowLoginDialog(gfx::NativeWindow parent_window) {
wizard_.SetParent(parent_window);
wizard_.Step(SyncSetupWizard::GAIA_LOGIN);
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
void ProfileSyncService::ShowConfigure(gfx::NativeWindow parent_window) {
@@ -824,7 +842,7 @@ void ProfileSyncService::OnUserSubmittedAuth(
const std::string& captcha, const std::string& access_code) {
last_attempted_user_email_ = username;
is_auth_in_progress_ = true;
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
auth_start_time_ = base::TimeTicks::Now();
@@ -889,7 +907,7 @@ void ProfileSyncService::OnUserCancelledDialog() {
// good if invalid creds were provided, but it's an edge case and the user
// can of course get themselves out of it.
is_auth_in_progress_ = false;
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
}
void ProfileSyncService::ChangePreferredDataTypes(
@@ -1036,7 +1054,7 @@ void ProfileSyncService::Observe(NotificationType type,
const NotificationDetails& details) {
switch (type.value) {
case NotificationType::SYNC_CONFIGURE_START: {
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
// TODO(sync): Maybe toast?
break;
}
@@ -1064,31 +1082,10 @@ void ProfileSyncService::Observe(NotificationType type,
// TODO(sync): Less wizard, more toast.
if (!observed_passphrase_required_)
wizard_.Step(SyncSetupWizard::DONE);
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
break;
}
- case NotificationType::SYNC_PASSPHRASE_REQUIRED: {
- DCHECK(backend_.get());
- DCHECK(backend_->IsNigoriEnabled());
- observed_passphrase_required_ = true;
- passphrase_required_for_decryption_ = *(Details<bool>(details).ptr());
-
- if (!cached_passphrase_.value.empty()) {
- SetPassphrase(cached_passphrase_.value,
- cached_passphrase_.is_explicit,
- cached_passphrase_.is_creation);
- cached_passphrase_ = CachedPassphrase();
- break;
- }
-
- if (WizardIsVisible()) {
- wizard_.Step(SyncSetupWizard::ENTER_PASSPHRASE);
- }
-
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
- break;
- }
case NotificationType::SYNC_DATA_TYPES_UPDATED: {
if (!HasSyncSetupCompleted()) break;
@@ -1097,25 +1094,10 @@ void ProfileSyncService::Observe(NotificationType type,
OnUserChoseDatatypes(false, types);
break;
}
- case NotificationType::SYNC_PASSPHRASE_ACCEPTED: {
- // Make sure the data types that depend on the passphrase are started at
- // this time.
- syncable::ModelTypeSet types;
- GetPreferredDataTypes(&types);
- data_type_manager_->Configure(types);
-
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
- observed_passphrase_required_ = false;
- tried_setting_explicit_passphrase_ = false;
- tried_creating_explicit_passphrase_ = false;
-
- wizard_.Step(SyncSetupWizard::DONE);
- break;
- }
case NotificationType::PREF_CHANGED: {
std::string* pref_name = Details<std::string>(details).ptr();
if (*pref_name == prefs::kSyncManaged) {
- FOR_EACH_OBSERVER(Observer, observers_, OnStateChanged());
+ NotifyObservers();
if (*pref_sync_managed_) {
DisableForUser();
} else if (HasSyncSetupCompleted() && AreCredentialsAvailable()) {

Powered by Google App Engine
This is Rietveld 408576698