Chromium Code Reviews| Index: chrome/browser/sync/chrome_sync_client.cc |
| diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc |
| index 78e18831eb04a3d7f4b555fe9685e4bd165a3bd4..a8fc342399f04817a2f17f2087208e1ceb56bcd6 100644 |
| --- a/chrome/browser/sync/chrome_sync_client.cc |
| +++ b/chrome/browser/sync/chrome_sync_client.cc |
| @@ -17,6 +17,7 @@ |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/search_engines/template_url_service_factory.h" |
| #include "chrome/browser/sync/glue/sync_start_util.h" |
| +#include "chrome/browser/sync/glue/theme_data_type_controller.h" |
| #include "chrome/browser/sync/profile_sync_service_factory.h" |
| #include "chrome/browser/sync/sessions/notification_service_sessions_router.h" |
| #include "chrome/browser/themes/theme_service.h" |
| @@ -25,6 +26,7 @@ |
| #include "chrome/browser/ui/sync/browser_synced_window_delegates_getter.h" |
| #include "chrome/browser/undo/bookmark_undo_service_factory.h" |
| #include "chrome/browser/web_data_service_factory.h" |
| +#include "chrome/common/channel_info.h" |
| #include "chrome/common/url_constants.h" |
| #include "components/autofill/core/browser/webdata/autocomplete_syncable_service.h" |
| #include "components/autofill/core/browser/webdata/autofill_profile_syncable_service.h" |
| @@ -38,9 +40,12 @@ |
| #include "components/invalidation/impl/profile_invalidation_provider.h" |
| #include "components/password_manager/core/browser/password_store.h" |
| #include "components/password_manager/sync/browser/password_model_worker.h" |
| +#include "components/search_engines/search_engine_data_type_controller.h" |
| #include "components/sync_driver/glue/browser_thread_model_worker.h" |
| +#include "components/sync_driver/glue/chrome_report_unrecoverable_error.h" |
| #include "components/sync_driver/glue/ui_model_worker.h" |
| #include "components/sync_driver/sync_api_component_factory.h" |
| +#include "components/sync_driver/ui_data_type_controller.h" |
| #include "components/sync_sessions/sync_sessions_client.h" |
| #include "components/syncable_prefs/pref_service_syncable.h" |
| #include "content/public/browser/browser_thread.h" |
| @@ -87,6 +92,12 @@ |
| #endif |
| using content::BrowserThread; |
| +#if defined(ENABLE_EXTENSIONS) |
| +using browser_sync::ExtensionDataTypeController; |
| +using browser_sync::ExtensionSettingDataTypeController; |
| +#endif |
| +using browser_sync::SearchEngineDataTypeController; |
| +using sync_driver::UIDataTypeController; |
| namespace browser_sync { |
| @@ -441,4 +452,136 @@ void ChromeSyncClient::SetBrowsingDataRemoverObserverForTesting( |
| browsing_data_remover_observer_ = observer; |
| } |
| +// Static. |
| +void ChromeSyncClient::RegisterDesktopDataTypes( |
|
blundell
2015/11/10 15:24:24
Why not just have this be an instance method and t
Nicolas Zea
2015/11/11 00:06:20
Originally, the SyncAPIComponentFactory itself was
|
| + Profile* profile, |
| + syncer::ModelTypeSet disabled_types, |
| + syncer::ModelTypeSet enabled_types, |
| + sync_driver::SyncClient* sync_client) { |
| + sync_driver::SyncService* sync_service = sync_client->GetSyncService(); |
| + base::Closure error_callback = |
| + base::Bind(&ChromeReportUnrecoverableError, chrome::GetChannel()); |
| + const scoped_refptr<base::SingleThreadTaskRunner> ui_thread = |
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI); |
| + |
| +#if defined(ENABLE_EXTENSIONS) |
| + // App sync is enabled by default. Register unless explicitly |
| + // disabled. |
| + if (!disabled_types.Has(syncer::APPS)) { |
| + sync_service->RegisterDataTypeController(new ExtensionDataTypeController( |
| + syncer::APPS, error_callback, sync_client, profile)); |
| + } |
| + |
| + // Extension sync is enabled by default. Register unless explicitly |
| + // disabled. |
| + if (!disabled_types.Has(syncer::EXTENSIONS)) { |
| + sync_service->RegisterDataTypeController(new ExtensionDataTypeController( |
| + syncer::EXTENSIONS, error_callback, sync_client, profile)); |
| + } |
| +#endif |
| + |
| + // Preference sync is enabled by default. Register unless explicitly |
| + // disabled. |
| + if (!disabled_types.Has(syncer::PREFERENCES)) { |
| + sync_service->RegisterDataTypeController(new UIDataTypeController( |
| + ui_thread, error_callback, syncer::PREFERENCES, sync_client)); |
| + } |
| + |
| +#if defined(ENABLE_THEMES) |
| + // Theme sync is enabled by default. Register unless explicitly disabled. |
| + if (!disabled_types.Has(syncer::THEMES)) { |
| + sync_service->RegisterDataTypeController( |
| + new ThemeDataTypeController(error_callback, sync_client, profile)); |
| + } |
| +#endif |
| + |
| + // Search Engine sync is enabled by default. Register unless explicitly |
| + // disabled. |
| + if (!disabled_types.Has(syncer::SEARCH_ENGINES)) { |
| + sync_service->RegisterDataTypeController(new SearchEngineDataTypeController( |
| + ui_thread, error_callback, sync_client, |
| + TemplateURLServiceFactory::GetForProfile(profile))); |
| + } |
| + |
| +#if defined(ENABLE_EXTENSIONS) |
| + // Extension setting sync is enabled by default. Register unless explicitly |
| + // disabled. |
| + if (!disabled_types.Has(syncer::EXTENSION_SETTINGS)) { |
| + sync_service->RegisterDataTypeController( |
| + new ExtensionSettingDataTypeController( |
| + syncer::EXTENSION_SETTINGS, error_callback, sync_client, profile)); |
| + } |
| + |
| + // App setting sync is enabled by default. Register unless explicitly |
| + // disabled. |
| + if (!disabled_types.Has(syncer::APP_SETTINGS)) { |
| + sync_service->RegisterDataTypeController( |
| + new ExtensionSettingDataTypeController( |
| + syncer::APP_SETTINGS, error_callback, sync_client, profile)); |
| + } |
| +#endif |
| + |
| +#if defined(ENABLE_APP_LIST) |
| + if (app_list::switches::IsAppListSyncEnabled()) { |
| + sync_service->RegisterDataTypeController(new UIDataTypeController( |
| + ui_thread, error_callback, syncer::APP_LIST, sync_client)); |
| + } |
| +#endif |
| + |
| +#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_CHROMEOS) |
| + // Dictionary sync is enabled by default. |
| + if (!disabled_types.Has(syncer::DICTIONARY)) { |
| + sync_service->RegisterDataTypeController(new UIDataTypeController( |
| + ui_thread, error_callback, syncer::DICTIONARY, sync_client)); |
| + } |
| +#endif |
| + |
| +#if defined(ENABLE_SUPERVISED_USERS) |
| + sync_service->RegisterDataTypeController( |
| + new SupervisedUserSyncDataTypeController(syncer::SUPERVISED_USER_SETTINGS, |
| + error_callback, sync_client, |
| + profile)); |
| + sync_service->RegisterDataTypeController( |
| + new SupervisedUserSyncDataTypeController( |
| + syncer::SUPERVISED_USER_WHITELISTS, error_callback, sync_client, |
| + profile)); |
| + sync_service->RegisterDataTypeController( |
| + new SupervisedUserSyncDataTypeController( |
| + syncer::SUPERVISED_USERS, error_callback, sync_client, profile)); |
| + sync_service->RegisterDataTypeController( |
| + new SupervisedUserSyncDataTypeController( |
| + syncer::SUPERVISED_USER_SHARED_SETTINGS, error_callback, sync_client, |
| + profile)); |
| +#endif |
| + |
| +#if defined(OS_CHROMEOS) |
| + if (command_line_->HasSwitch(switches::kEnableWifiCredentialSync) && |
| + !disabled_types.Has(syncer::WIFI_CREDENTIALS)) { |
| + sync_service->RegisterDataTypeController(new UIDataTypeController( |
| + ui_thread, error_callback, syncer::WIFI_CREDENTIALS, sync_client)); |
| + } |
| +#endif |
| +} |
| + |
| +// Static. |
| +void ChromeSyncClient::RegisterAndroidDataTypes( |
| + Profile* profile, |
| + syncer::ModelTypeSet disabled_types, |
| + syncer::ModelTypeSet enabled_types, |
| + sync_driver::SyncClient* sync_client) { |
| + sync_driver::SyncService* sync_service = sync_client->GetSyncService(); |
| + base::Closure error_callback = |
| + base::Bind(&ChromeReportUnrecoverableError, chrome::GetChannel()); |
| +#if defined(ENABLE_SUPERVISED_USERS) |
| + sync_service->RegisterDataTypeController( |
| + new SupervisedUserSyncDataTypeController(syncer::SUPERVISED_USER_SETTINGS, |
| + error_callback, sync_client, |
| + profile)); |
| + sync_service->RegisterDataTypeController( |
| + new SupervisedUserSyncDataTypeController( |
| + syncer::SUPERVISED_USER_WHITELISTS, error_callback, sync_client, |
| + profile)); |
| +#endif |
| +} |
| + |
| } // namespace browser_sync |