summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/profile_sync_components_factory_impl.cc
diff options
context:
space:
mode:
authortim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-22 07:49:51 +0000
committertim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-22 07:49:51 +0000
commitf4e5d4f473c6b8cef1084c75e08271455b6754a7 (patch)
tree58bdbaf2c21868b3eeee2ee187e80023ddeadb25 /chrome/browser/sync/profile_sync_components_factory_impl.cc
parentd1af7ecc3678219f38ff081c78f31e1ff5106a4e (diff)
downloadchromium_src-f4e5d4f473c6b8cef1084c75e08271455b6754a7.zip
chromium_src-f4e5d4f473c6b8cef1084c75e08271455b6754a7.tar.gz
chromium_src-f4e5d4f473c6b8cef1084c75e08271455b6754a7.tar.bz2
sync: rename ProfileSyncFactory to ProfileSyncComponentsFactory.
Makes way for upcoming ProfileSyncServiceFactory. Note combining the two into one was considered, but the PKS pattern is to use a singleton, which is not ideal for ProfileSyncComponentsFactory. TBR=mirandac@chromium.org BUG=93922 TEST=compiles Review URL: http://codereview.chromium.org/8596017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111113 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync/profile_sync_components_factory_impl.cc')
-rw-r--r--chrome/browser/sync/profile_sync_components_factory_impl.cc408
1 files changed, 408 insertions, 0 deletions
diff --git a/chrome/browser/sync/profile_sync_components_factory_impl.cc b/chrome/browser/sync/profile_sync_components_factory_impl.cc
new file mode 100644
index 0000000..168d774
--- /dev/null
+++ b/chrome/browser/sync/profile_sync_components_factory_impl.cc
@@ -0,0 +1,408 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/command_line.h"
+#include "chrome/browser/extensions/app_notification_manager.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/settings/settings_backend.h"
+#include "chrome/browser/prefs/pref_model_associator.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/search_engines/template_url_service.h"
+#include "chrome/browser/search_engines/template_url_service_factory.h"
+#include "chrome/browser/sync/api/syncable_service.h"
+#include "chrome/browser/sync/glue/app_data_type_controller.h"
+#include "chrome/browser/sync/glue/app_notification_data_type_controller.h"
+#include "chrome/browser/sync/glue/autofill_data_type_controller.h"
+#include "chrome/browser/sync/glue/autofill_profile_data_type_controller.h"
+#include "chrome/browser/sync/glue/bookmark_change_processor.h"
+#include "chrome/browser/sync/glue/bookmark_data_type_controller.h"
+#include "chrome/browser/sync/glue/bookmark_model_associator.h"
+#include "chrome/browser/sync/glue/data_type_manager_impl.h"
+#include "chrome/browser/sync/glue/extension_data_type_controller.h"
+#include "chrome/browser/sync/glue/extension_setting_data_type_controller.h"
+#include "chrome/browser/sync/glue/generic_change_processor.h"
+#include "chrome/browser/sync/glue/password_change_processor.h"
+#include "chrome/browser/sync/glue/password_data_type_controller.h"
+#include "chrome/browser/sync/glue/password_model_associator.h"
+#include "chrome/browser/sync/glue/preference_data_type_controller.h"
+#include "chrome/browser/sync/glue/search_engine_data_type_controller.h"
+#include "chrome/browser/sync/glue/session_change_processor.h"
+#include "chrome/browser/sync/glue/session_data_type_controller.h"
+#include "chrome/browser/sync/glue/session_model_associator.h"
+#include "chrome/browser/sync/glue/shared_change_processor.h"
+#include "chrome/browser/sync/glue/sync_backend_host.h"
+#include "chrome/browser/sync/glue/syncable_service_adapter.h"
+#include "chrome/browser/sync/glue/theme_change_processor.h"
+#include "chrome/browser/sync/glue/theme_data_type_controller.h"
+#include "chrome/browser/sync/glue/theme_model_associator.h"
+#include "chrome/browser/sync/glue/typed_url_change_processor.h"
+#include "chrome/browser/sync/glue/typed_url_data_type_controller.h"
+#include "chrome/browser/sync/glue/typed_url_model_associator.h"
+#include "chrome/browser/sync/profile_sync_components_factory_impl.h"
+#include "chrome/browser/sync/profile_sync_service.h"
+#include "chrome/browser/sync/signin_manager.h"
+#include "chrome/browser/webdata/autocomplete_syncable_service.h"
+#include "chrome/browser/webdata/autofill_profile_syncable_service.h"
+#include "chrome/browser/webdata/web_data_service.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/pref_names.h"
+#include "content/public/browser/browser_thread.h"
+
+using browser_sync::AppDataTypeController;
+using browser_sync::AppNotificationDataTypeController;
+using browser_sync::AutofillDataTypeController;
+using browser_sync::AutofillProfileDataTypeController;
+using browser_sync::BookmarkChangeProcessor;
+using browser_sync::BookmarkDataTypeController;
+using browser_sync::BookmarkModelAssociator;
+using browser_sync::DataTypeController;
+using browser_sync::DataTypeManager;
+using browser_sync::DataTypeManagerImpl;
+using browser_sync::ExtensionDataTypeController;
+using browser_sync::ExtensionSettingDataTypeController;
+using browser_sync::GenericChangeProcessor;
+using browser_sync::PasswordChangeProcessor;
+using browser_sync::PasswordDataTypeController;
+using browser_sync::PasswordModelAssociator;
+using browser_sync::PreferenceDataTypeController;
+using browser_sync::SearchEngineDataTypeController;
+using browser_sync::SessionChangeProcessor;
+using browser_sync::SessionDataTypeController;
+using browser_sync::SessionModelAssociator;
+using browser_sync::SharedChangeProcessor;
+using browser_sync::SyncableServiceAdapter;
+using browser_sync::SyncBackendHost;
+using browser_sync::ThemeChangeProcessor;
+using browser_sync::ThemeDataTypeController;
+using browser_sync::ThemeModelAssociator;
+using browser_sync::TypedUrlChangeProcessor;
+using browser_sync::TypedUrlDataTypeController;
+using browser_sync::TypedUrlModelAssociator;
+using browser_sync::UnrecoverableErrorHandler;
+using content::BrowserThread;
+
+ProfileSyncComponentsFactoryImpl::ProfileSyncComponentsFactoryImpl(
+ Profile* profile, CommandLine* command_line)
+ : profile_(profile),
+ command_line_(command_line) {
+}
+
+ProfileSyncService* ProfileSyncComponentsFactoryImpl::CreateProfileSyncService(
+ const std::string& cros_user) {
+
+ ProfileSyncService* pss = new ProfileSyncService(
+ this, profile_, new SigninManager(), cros_user);
+ return pss;
+}
+
+void ProfileSyncComponentsFactoryImpl::RegisterDataTypes(
+ ProfileSyncService* pss) {
+ // App sync is enabled by default. Register unless explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncApps)) {
+ pss->RegisterDataTypeController(
+ new AppDataTypeController(this, profile_, pss));
+ }
+
+ // Autofill sync is enabled by default. Register unless explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncAutofill)) {
+ pss->RegisterDataTypeController(
+ new AutofillDataTypeController(this, profile_));
+ }
+
+ // Bookmark sync is enabled by default. Register unless explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncBookmarks)) {
+ pss->RegisterDataTypeController(
+ new BookmarkDataTypeController(this, profile_, pss));
+ }
+
+ // Extension sync is enabled by default. Register unless explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncExtensions)) {
+ pss->RegisterDataTypeController(
+ new ExtensionDataTypeController(this, profile_, pss));
+ }
+
+ // Password sync is enabled by default. Register unless explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncPasswords)) {
+ pss->RegisterDataTypeController(
+ new PasswordDataTypeController(this, profile_));
+ }
+
+ // Preference sync is enabled by default. Register unless explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncPreferences)) {
+ pss->RegisterDataTypeController(
+ new PreferenceDataTypeController(this, profile_, pss));
+ }
+
+ // Theme sync is enabled by default. Register unless explicitly disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncThemes)) {
+ pss->RegisterDataTypeController(
+ new ThemeDataTypeController(this, profile_, pss));
+ }
+
+ // TypedUrl sync is enabled by default. Register unless explicitly disabled,
+ // or if saving history is disabled.
+ if (!profile_->GetPrefs()->GetBoolean(prefs::kSavingBrowserHistoryDisabled) &&
+ !command_line_->HasSwitch(switches::kDisableSyncTypedUrls)) {
+ pss->RegisterDataTypeController(
+ new TypedUrlDataTypeController(this, profile_));
+ }
+
+ // Search Engine sync is enabled by default. Register only if explicitly
+ // disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncSearchEngines)) {
+ pss->RegisterDataTypeController(
+ new SearchEngineDataTypeController(this, profile_, pss));
+ }
+
+ // Session sync is disabled by default. Register only if explicitly
+ // enabled.
+ if (command_line_->HasSwitch(switches::kEnableSyncTabs)) {
+ pss->RegisterDataTypeController(
+ new SessionDataTypeController(this, profile_, pss));
+ }
+
+ // Extension setting sync is disabled by default. Register only if
+ // explicitly enabled.
+ if (command_line_->HasSwitch(switches::kEnableSyncExtensionSettings)) {
+ pss->RegisterDataTypeController(
+ new ExtensionSettingDataTypeController(
+ syncable::EXTENSION_SETTINGS, this, profile_, pss));
+ pss->RegisterDataTypeController(
+ new ExtensionSettingDataTypeController(
+ syncable::APP_SETTINGS, this, profile_, pss));
+ }
+
+ if (!command_line_->HasSwitch(switches::kDisableSyncAutofillProfile)) {
+ pss->RegisterDataTypeController(
+ new AutofillProfileDataTypeController(this, profile_));
+ }
+
+ // App notifications sync is enabled by default. Register only if
+ // explicitly disabled.
+ if (!command_line_->HasSwitch(switches::kDisableSyncAppNotifications)) {
+ pss->RegisterDataTypeController(
+ new AppNotificationDataTypeController(this, profile_, pss));
+ }
+}
+
+DataTypeManager* ProfileSyncComponentsFactoryImpl::CreateDataTypeManager(
+ SyncBackendHost* backend,
+ const DataTypeController::TypeMap* controllers) {
+ return new DataTypeManagerImpl(backend, controllers);
+}
+
+browser_sync::GenericChangeProcessor*
+ ProfileSyncComponentsFactoryImpl::CreateGenericChangeProcessor(
+ ProfileSyncService* profile_sync_service,
+ browser_sync::UnrecoverableErrorHandler* error_handler,
+ const base::WeakPtr<SyncableService>& local_service) {
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ return new GenericChangeProcessor(error_handler,
+ local_service,
+ user_share);
+}
+
+browser_sync::SharedChangeProcessor* ProfileSyncComponentsFactoryImpl::
+ CreateSharedChangeProcessor() {
+ return new SharedChangeProcessor();
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateAppSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ base::WeakPtr<SyncableService> app_sync_service =
+ profile_sync_service->profile()->GetExtensionService()->AsWeakPtr();
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ GenericChangeProcessor* change_processor =
+ new GenericChangeProcessor(error_handler, app_sync_service, user_share);
+ browser_sync::SyncableServiceAdapter* sync_service_adapter =
+ new browser_sync::SyncableServiceAdapter(syncable::APPS,
+ app_sync_service,
+ change_processor);
+ return SyncComponents(sync_service_adapter, change_processor);
+}
+
+base::WeakPtr<SyncableService>
+ ProfileSyncComponentsFactoryImpl::GetAutofillProfileSyncableService(
+ WebDataService* web_data_service) const {
+ return web_data_service->GetAutofillProfileSyncableService()->AsWeakPtr();
+}
+
+base::WeakPtr<SyncableService>
+ ProfileSyncComponentsFactoryImpl::GetAutocompleteSyncableService(
+ WebDataService* web_data_service) const {
+ return web_data_service->GetAutocompleteSyncableService()->AsWeakPtr();
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateBookmarkSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ BookmarkModel* bookmark_model =
+ profile_sync_service->profile()->GetBookmarkModel();
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ BookmarkModelAssociator* model_associator =
+ new BookmarkModelAssociator(bookmark_model,
+ user_share,
+ error_handler);
+ BookmarkChangeProcessor* change_processor =
+ new BookmarkChangeProcessor(model_associator,
+ error_handler);
+ return SyncComponents(model_associator, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateExtensionOrAppSettingSyncComponents(
+ syncable::ModelType type,
+ SyncableService* settings_service,
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
+ DCHECK(type == syncable::EXTENSION_SETTINGS ||
+ type == syncable::APP_SETTINGS);
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ GenericChangeProcessor* change_processor =
+ new GenericChangeProcessor(error_handler,
+ settings_service->AsWeakPtr(),
+ user_share);
+ browser_sync::SyncableServiceAdapter* sync_service_adapter =
+ new browser_sync::SyncableServiceAdapter(type,
+ settings_service,
+ change_processor);
+ return SyncComponents(sync_service_adapter, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateExtensionSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ base::WeakPtr<SyncableService> extension_sync_service =
+ profile_sync_service->profile()->GetExtensionService()->AsWeakPtr();
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ GenericChangeProcessor* change_processor =
+ new GenericChangeProcessor(error_handler,
+ extension_sync_service,
+ user_share);
+ browser_sync::SyncableServiceAdapter* sync_service_adapter =
+ new browser_sync::SyncableServiceAdapter(syncable::EXTENSIONS,
+ extension_sync_service,
+ change_processor);
+ return SyncComponents(sync_service_adapter, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreatePasswordSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ PasswordStore* password_store,
+ UnrecoverableErrorHandler* error_handler) {
+ PasswordModelAssociator* model_associator =
+ new PasswordModelAssociator(profile_sync_service,
+ password_store);
+ PasswordChangeProcessor* change_processor =
+ new PasswordChangeProcessor(model_associator,
+ password_store,
+ error_handler);
+ return SyncComponents(model_associator, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreatePreferenceSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ base::WeakPtr<SyncableService> pref_sync_service =
+ profile_->GetPrefs()->GetSyncableService()->AsWeakPtr();
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ GenericChangeProcessor* change_processor =
+ new GenericChangeProcessor(error_handler,
+ pref_sync_service,
+ user_share);
+ SyncableServiceAdapter* sync_service_adapter =
+ new SyncableServiceAdapter(syncable::PREFERENCES,
+ pref_sync_service,
+ change_processor);
+ return SyncComponents(sync_service_adapter, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateThemeSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ ThemeModelAssociator* model_associator =
+ new ThemeModelAssociator(profile_sync_service);
+ ThemeChangeProcessor* change_processor =
+ new ThemeChangeProcessor(error_handler);
+ return SyncComponents(model_associator, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateTypedUrlSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ history::HistoryBackend* history_backend,
+ browser_sync::UnrecoverableErrorHandler* error_handler) {
+ TypedUrlModelAssociator* model_associator =
+ new TypedUrlModelAssociator(profile_sync_service,
+ history_backend);
+ TypedUrlChangeProcessor* change_processor =
+ new TypedUrlChangeProcessor(profile_,
+ model_associator,
+ history_backend,
+ error_handler);
+ return SyncComponents(model_associator, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateSessionSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ SessionModelAssociator* model_associator =
+ new SessionModelAssociator(profile_sync_service);
+ SessionChangeProcessor* change_processor =
+ new SessionChangeProcessor(error_handler, model_associator);
+ return SyncComponents(model_associator, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateSearchEngineSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ UnrecoverableErrorHandler* error_handler) {
+ base::WeakPtr<SyncableService> se_sync_service =
+ TemplateURLServiceFactory::GetForProfile(profile_)->AsWeakPtr();
+ DCHECK(se_sync_service);
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ GenericChangeProcessor* change_processor =
+ new GenericChangeProcessor(error_handler,
+ se_sync_service,
+ user_share);
+ SyncableServiceAdapter* sync_service_adapter =
+ new SyncableServiceAdapter(syncable::SEARCH_ENGINES,
+ se_sync_service,
+ change_processor);
+ return SyncComponents(sync_service_adapter, change_processor);
+}
+
+ProfileSyncComponentsFactory::SyncComponents
+ ProfileSyncComponentsFactoryImpl::CreateAppNotificationSyncComponents(
+ ProfileSyncService* profile_sync_service,
+ browser_sync::UnrecoverableErrorHandler* error_handler) {
+ base::WeakPtr<SyncableService> notif_sync_service =
+ profile_->GetExtensionService()->app_notification_manager()->AsWeakPtr();
+ DCHECK(notif_sync_service);
+ sync_api::UserShare* user_share = profile_sync_service->GetUserShare();
+ GenericChangeProcessor* change_processor =
+ new GenericChangeProcessor(error_handler,
+ notif_sync_service,
+ user_share);
+ SyncableServiceAdapter* sync_service_adapter =
+ new SyncableServiceAdapter(syncable::APP_NOTIFICATIONS,
+ notif_sync_service,
+ change_processor);
+ return SyncComponents(sync_service_adapter, change_processor);
+}