| 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,
|
|
|