// Copyright (c) 2010 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. #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__ #define CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__ #pragma once #include <string> #include <utility> #include "base/task.h" #include "chrome/browser/sync/glue/change_processor.h" #include "chrome/browser/sync/glue/data_type_controller.h" #include "chrome/browser/sync/glue/model_associator.h" #include "chrome/browser/sync/unrecoverable_error_handler.h" class PersonalDataManager; class PasswordStore; class ProfileSyncService; class WebDatabase; namespace browser_sync { class DataTypeManager; class SyncBackendHost; class UnrecoverableErrorHandler; } namespace history { class HistoryBackend; }; // Factory class for all profile sync related classes. class ProfileSyncFactory { public: // The various factory methods for the data type model associators // and change processors all return this struct. This is needed // because the change processors typically require a type-specific // model associator at construction time. struct SyncComponents { browser_sync::AssociatorInterface* model_associator; browser_sync::ChangeProcessor* change_processor; SyncComponents(browser_sync::AssociatorInterface* ma, browser_sync::ChangeProcessor* cp) : model_associator(ma), change_processor(cp) {} }; virtual ~ProfileSyncFactory() {} // Instantiates and initializes a new ProfileSyncService. Enabled // data types are registered with the service. The return pointer // is owned by the caller. virtual ProfileSyncService* CreateProfileSyncService( const std::string& cros_user) = 0; // Instantiates a new DataTypeManager with a SyncBackendHost and a // list of data type controllers. The return pointer is owned by // the caller. virtual browser_sync::DataTypeManager* CreateDataTypeManager( browser_sync::SyncBackendHost* backend, const browser_sync::DataTypeController::TypeMap& controllers) = 0; // Instantiates both a model associator and change processor for the // app data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreateAppSyncComponents( ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // autofill data type. The pointers in the return struct are owned // by the caller. virtual SyncComponents CreateAutofillSyncComponents( ProfileSyncService* profile_sync_service, WebDatabase* web_database, PersonalDataManager* personal_data, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // autofill data type. The pointers in the return struct are owned // by the caller. virtual SyncComponents CreateAutofillProfileSyncComponents( ProfileSyncService* profile_sync_service, WebDatabase* web_database, PersonalDataManager* personal_data, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // bookmark data type. The pointers in the return struct are owned // by the caller. virtual SyncComponents CreateBookmarkSyncComponents( ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // extension data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreateExtensionSyncComponents( ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // password data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreatePasswordSyncComponents( ProfileSyncService* profile_sync_service, PasswordStore* password_store, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // preference data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreatePreferenceSyncComponents( ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // theme data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreateThemeSyncComponents( ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // typed_url data type. The pointers in the return struct are owned // by the caller. virtual SyncComponents CreateTypedUrlSyncComponents( ProfileSyncService* profile_sync_service, history::HistoryBackend* history_backend, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; // Instantiates both a model associator and change processor for the // session data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreateSessionSyncComponents( ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; }; #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_FACTORY_H__