| Index: trunk/src/chrome/browser/sync/profile_sync_components_factory_impl.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/sync/profile_sync_components_factory_impl.cc (revision 289111)
|
| +++ trunk/src/chrome/browser/sync/profile_sync_components_factory_impl.cc (working copy)
|
| @@ -179,6 +179,24 @@
|
| #endif
|
| }
|
|
|
| +void ProfileSyncComponentsFactoryImpl::DisableBrokenType(
|
| + syncer::ModelType type,
|
| + const tracked_objects::Location& from_here,
|
| + const std::string& message) {
|
| + ProfileSyncService* p = ProfileSyncServiceFactory::GetForProfile(profile_);
|
| + syncer::SyncError error(
|
| + from_here, syncer::SyncError::DATATYPE_ERROR, message, type);
|
| + p->DisableDatatype(error);
|
| +}
|
| +
|
| +DataTypeController::DisableTypeCallback
|
| +ProfileSyncComponentsFactoryImpl::MakeDisableCallbackFor(
|
| + syncer::ModelType type) {
|
| + return base::Bind(&ProfileSyncComponentsFactoryImpl::DisableBrokenType,
|
| + weak_factory_.GetWeakPtr(),
|
| + type);
|
| +}
|
| +
|
| void ProfileSyncComponentsFactoryImpl::RegisterCommonDataTypes(
|
| syncer::ModelTypeSet disabled_types,
|
| syncer::ModelTypeSet enabled_types,
|
| @@ -187,14 +205,16 @@
|
| // disabled.
|
| if (!disabled_types.Has(syncer::AUTOFILL)) {
|
| pss->RegisterDataTypeController(
|
| - new AutofillDataTypeController(this, profile_));
|
| + new AutofillDataTypeController(
|
| + this, profile_, MakeDisableCallbackFor(syncer::AUTOFILL)));
|
| }
|
|
|
| // Autofill profile sync is enabled by default. Register unless explicitly
|
| // disabled.
|
| if (!disabled_types.Has(syncer::AUTOFILL_PROFILE)) {
|
| pss->RegisterDataTypeController(
|
| - new AutofillProfileDataTypeController(this, profile_));
|
| + new AutofillProfileDataTypeController(
|
| + this, profile_, MakeDisableCallbackFor(syncer::AUTOFILL_PROFILE)));
|
| }
|
|
|
| // Bookmark sync is enabled by default. Register unless explicitly
|
| @@ -219,20 +239,23 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::HISTORY_DELETE_DIRECTIVES),
|
| syncer::HISTORY_DELETE_DIRECTIVES,
|
| this));
|
| }
|
|
|
| // Session sync is enabled by default. Register unless explicitly disabled.
|
| if (!disabled_types.Has(syncer::PROXY_TABS)) {
|
| - pss->RegisterDataTypeController(new ProxyDataTypeController(
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| - syncer::PROXY_TABS));
|
| + pss->RegisterDataTypeController(new ProxyDataTypeController(
|
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| + syncer::PROXY_TABS));
|
| pss->RegisterDataTypeController(
|
| - new SessionDataTypeController(this,
|
| - profile_,
|
| - pss->GetSyncedWindowDelegatesGetter(),
|
| - pss->GetLocalDeviceInfoProvider()));
|
| + new SessionDataTypeController(
|
| + this,
|
| + profile_,
|
| + pss->GetSyncedWindowDelegatesGetter(),
|
| + pss->GetLocalDeviceInfoProvider(),
|
| + MakeDisableCallbackFor(syncer::SESSIONS)));
|
| }
|
|
|
| // Favicon sync is enabled by default. Register unless explicitly disabled.
|
| @@ -242,12 +265,14 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::FAVICON_IMAGES),
|
| syncer::FAVICON_IMAGES,
|
| this));
|
| pss->RegisterDataTypeController(
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::FAVICON_TRACKING),
|
| syncer::FAVICON_TRACKING,
|
| this));
|
| }
|
| @@ -256,7 +281,8 @@
|
| // disabled.
|
| if (!disabled_types.Has(syncer::PASSWORDS)) {
|
| pss->RegisterDataTypeController(
|
| - new PasswordDataTypeController(this, profile_));
|
| + new PasswordDataTypeController(
|
| + this, profile_, MakeDisableCallbackFor(syncer::PASSWORDS)));
|
| }
|
|
|
| // Article sync is disabled by default. Register only if explicitly enabled.
|
| @@ -265,6 +291,7 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::ARTICLES),
|
| syncer::ARTICLES,
|
| this));
|
| }
|
| @@ -272,16 +299,19 @@
|
| #if defined(ENABLE_MANAGED_USERS)
|
| pss->RegisterDataTypeController(
|
| new SupervisedUserSyncDataTypeController(
|
| + MakeDisableCallbackFor(syncer::SUPERVISED_USER_SETTINGS),
|
| syncer::SUPERVISED_USER_SETTINGS,
|
| this,
|
| profile_));
|
| pss->RegisterDataTypeController(
|
| new SupervisedUserSyncDataTypeController(
|
| + MakeDisableCallbackFor(syncer::SUPERVISED_USERS),
|
| syncer::SUPERVISED_USERS,
|
| this,
|
| profile_));
|
| pss->RegisterDataTypeController(
|
| new SupervisedUserSyncDataTypeController(
|
| + MakeDisableCallbackFor(syncer::SUPERVISED_USER_SHARED_SETTINGS),
|
| syncer::SUPERVISED_USER_SHARED_SETTINGS,
|
| this,
|
| profile_));
|
| @@ -296,14 +326,17 @@
|
| // disabled.
|
| if (!disabled_types.Has(syncer::APPS)) {
|
| pss->RegisterDataTypeController(
|
| - new ExtensionDataTypeController(syncer::APPS, this, profile_));
|
| + new ExtensionDataTypeController(syncer::APPS, this, profile_,
|
| + MakeDisableCallbackFor(syncer::APPS)));
|
| }
|
|
|
| // Extension sync is enabled by default. Register unless explicitly
|
| // disabled.
|
| if (!disabled_types.Has(syncer::EXTENSIONS)) {
|
| pss->RegisterDataTypeController(
|
| - new ExtensionDataTypeController(syncer::EXTENSIONS, this, profile_));
|
| + new ExtensionDataTypeController(
|
| + syncer::EXTENSIONS, this, profile_,
|
| + MakeDisableCallbackFor(syncer::EXTENSIONS)));
|
| }
|
|
|
| // Preference sync is enabled by default. Register unless explicitly
|
| @@ -313,6 +346,7 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::PREFERENCES),
|
| syncer::PREFERENCES,
|
| this));
|
| }
|
| @@ -322,6 +356,7 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::PRIORITY_PREFERENCES),
|
| syncer::PRIORITY_PREFERENCES,
|
| this));
|
| }
|
| @@ -330,7 +365,8 @@
|
| // Theme sync is enabled by default. Register unless explicitly disabled.
|
| if (!disabled_types.Has(syncer::THEMES)) {
|
| pss->RegisterDataTypeController(
|
| - new ThemeDataTypeController(this, profile_));
|
| + new ThemeDataTypeController(this, profile_,
|
| + MakeDisableCallbackFor(syncer::THEMES)));
|
| }
|
| #endif
|
|
|
| @@ -338,21 +374,26 @@
|
| // disabled.
|
| if (!disabled_types.Has(syncer::SEARCH_ENGINES)) {
|
| pss->RegisterDataTypeController(
|
| - new SearchEngineDataTypeController(this, profile_));
|
| + new SearchEngineDataTypeController(
|
| + this, profile_, MakeDisableCallbackFor(syncer::SEARCH_ENGINES)));
|
| }
|
|
|
| // Extension setting sync is enabled by default. Register unless explicitly
|
| // disabled.
|
| if (!disabled_types.Has(syncer::EXTENSION_SETTINGS)) {
|
| - pss->RegisterDataTypeController(new ExtensionSettingDataTypeController(
|
| - syncer::EXTENSION_SETTINGS, this, profile_));
|
| + pss->RegisterDataTypeController(
|
| + new ExtensionSettingDataTypeController(
|
| + syncer::EXTENSION_SETTINGS, this, profile_,
|
| + MakeDisableCallbackFor(syncer::EXTENSION_SETTINGS)));
|
| }
|
|
|
| // App setting sync is enabled by default. Register unless explicitly
|
| // disabled.
|
| if (!disabled_types.Has(syncer::APP_SETTINGS)) {
|
| - pss->RegisterDataTypeController(new ExtensionSettingDataTypeController(
|
| - syncer::APP_SETTINGS, this, profile_));
|
| + pss->RegisterDataTypeController(
|
| + new ExtensionSettingDataTypeController(
|
| + syncer::APP_SETTINGS, this, profile_,
|
| + MakeDisableCallbackFor(syncer::APP_SETTINGS)));
|
| }
|
|
|
| #if defined(ENABLE_APP_LIST)
|
| @@ -361,6 +402,7 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::APP_LIST),
|
| syncer::APP_LIST,
|
| this));
|
| }
|
| @@ -371,6 +413,7 @@
|
| if (enabled_types.Has(syncer::SYNCED_NOTIFICATIONS)) {
|
| pss->RegisterDataTypeController(
|
| new ExtensionBackedDataTypeController(
|
| + MakeDisableCallbackFor(syncer::SYNCED_NOTIFICATIONS),
|
| syncer::SYNCED_NOTIFICATIONS,
|
| "", // TODO(dewittj): pass the extension hash here.
|
| this,
|
| @@ -378,6 +421,7 @@
|
|
|
| pss->RegisterDataTypeController(
|
| new ExtensionBackedDataTypeController(
|
| + MakeDisableCallbackFor(syncer::SYNCED_NOTIFICATION_APP_INFO),
|
| syncer::SYNCED_NOTIFICATION_APP_INFO,
|
| "", // TODO(dewittj): pass the extension hash here.
|
| this,
|
| @@ -392,6 +436,7 @@
|
| new UIDataTypeController(
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::Bind(&ChromeReportUnrecoverableError),
|
| + MakeDisableCallbackFor(syncer::DICTIONARY),
|
| syncer::DICTIONARY,
|
| this));
|
| }
|
|
|