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

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

Issue 6905044: Refactor preference syncing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix the previous fix Created 9 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
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 90ee58509cbd3757880d26a7aa28d3cc012d813e..26af88a99c9871f6641aa1c145b4a09b49778355 100644
--- a/chrome/browser/sync/profile_sync_service.cc
+++ b/chrome/browser/sync/profile_sync_service.cc
@@ -41,9 +41,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/time_format.h"
#include "chrome/common/url_constants.h"
-#include "content/common/notification_details.h"
-#include "content/common/notification_source.h"
-#include "content/common/notification_type.h"
+#include "content/common/notification_service.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/native_widget_types.h"
@@ -139,6 +137,15 @@ void ProfileSyncService::Initialize() {
RegisterAuthNotifications();
+ // This will synchronously trigger all new model associators to register
+ // themselves. We do this in initialize so that we can ensure all datatype
+ // controllers have been registered and to ensure any services we depend on
+ // have already been initialized.
+ NotificationService::current()->Notify(
+ NotificationType::PROFILE_SYNC_SERVICE_LOADING,
+ Source<ProfileSyncService>(this),
+ NotificationService::NoDetails());
+
// In Chrome, we integrate a SigninManager which works with the sync
// setup wizard to kick off the TokenService. CrOS does its own plumbing
// for the TokenService.
@@ -243,9 +250,15 @@ void ProfileSyncService::RegisterPreferences() {
PrefService* pref_service = profile_->GetPrefs();
if (pref_service->FindPreference(prefs::kSyncLastSyncedTime))
return;
- pref_service->RegisterInt64Pref(prefs::kSyncLastSyncedTime, 0);
- pref_service->RegisterBooleanPref(prefs::kSyncHasSetupCompleted, false);
- pref_service->RegisterBooleanPref(prefs::kSyncSuppressStart, false);
+ pref_service->RegisterInt64Pref(prefs::kSyncLastSyncedTime,
+ 0,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncHasSetupCompleted,
+ false,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncSuppressStart,
+ false,
+ false /* don't sync pref */);
// If you've never synced before, or if you're using Chrome OS, all datatypes
// are on by default.
@@ -258,22 +271,46 @@ void ProfileSyncService::RegisterPreferences() {
!pref_service->HasPrefPath(prefs::kSyncHasSetupCompleted);
#endif
- pref_service->RegisterBooleanPref(prefs::kSyncBookmarks, true);
- pref_service->RegisterBooleanPref(prefs::kSyncPasswords, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncPreferences, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncSessions, enable_by_default);
+ pref_service->RegisterBooleanPref(prefs::kSyncBookmarks,
+ true,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncPasswords,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncPreferences,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncAutofill,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncThemes,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncExtensions,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncApps,
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncSessions,
+ enable_by_default,
+ false /* don't sync pref */);
pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced,
- enable_by_default);
- pref_service->RegisterBooleanPref(prefs::kSyncManaged, false);
- pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, "");
+ enable_by_default,
+ false /* don't sync pref */);
+ pref_service->RegisterBooleanPref(prefs::kSyncManaged,
+ false,
+ false /* don't sync pref */);
+ pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken,
+ "",
+ false /* don't sync pref */);
pref_service->RegisterBooleanPref(prefs::kSyncAutofillProfile,
- enable_by_default);
+ enable_by_default,
+ false /* don't sync pref */);
}
void ProfileSyncService::ClearPreferences() {
@@ -1070,6 +1107,19 @@ void ProfileSyncService::SetAutofillMigrationDebugInfo(
}
}
+void ProfileSyncService::RegisterModelAssociator(
+ browser_sync::NewAssociatorInterface* associator) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ syncable::ModelType model_type = associator->model_type();
+ if (data_type_controllers_.count(model_type) > 0) {
+ DCHECK(!data_type_controllers_[model_type]->model_associator());
+ data_type_controllers_[model_type]->set_model_associator(associator);
+
+ // TODO(zea): pass the generic change processor's pointer back to the model
+ // associator.
+ }
+}
+
void ProfileSyncService::ActivateDataType(
DataTypeController* data_type_controller,
ChangeProcessor* change_processor) {
@@ -1078,16 +1128,33 @@ void ProfileSyncService::ActivateDataType(
return;
}
DCHECK(backend_initialized_);
- change_processor->Start(profile(), backend_->GetUserShare());
- backend_->ActivateDataType(data_type_controller, change_processor);
+ if (change_processor) {
+ backend_->ActivateDataType(data_type_controller, change_processor);
+ } else {
+ // New associator interface.
+ // TODO(zea): Remove change processor argument here once we have a generic
+ // change processor.
+ backend_->ActivateDataType(
+ data_type_controller,
+ data_type_controller->model_associator()->change_processor());
+ }
}
void ProfileSyncService::DeactivateDataType(
DataTypeController* data_type_controller,
ChangeProcessor* change_processor) {
- change_processor->Stop();
- if (backend_.get())
+ if (!backend_.get())
+ return;
+ if (change_processor) {
backend_->DeactivateDataType(data_type_controller, change_processor);
+ } else {
+ // New associator interface.
+ // TODO(zea): Remove change processor argument here once we have a generic
+ // change processor.
+ backend_->DeactivateDataType(
+ data_type_controller,
+ data_type_controller->model_associator()->change_processor());
+ }
}
void ProfileSyncService::SetPassphrase(const std::string& passphrase,

Powered by Google App Engine
This is Rietveld 408576698