1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ 6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "chrome/browser/sync/profile_sync_components_factory.h" 13 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" 14 15 16 class CommandLine; 17 class Profile; 18 19 namespace extensions { 20 class ExtensionSystem; 21 } 22 23 class ProfileSyncComponentsFactoryImpl : public ProfileSyncComponentsFactory { 24 public: 25 ProfileSyncComponentsFactoryImpl(Profile* profile, 26 CommandLine* command_line); 27 virtual ~ProfileSyncComponentsFactoryImpl(); 28 29 virtual void RegisterDataTypes(ProfileSyncService* pss) OVERRIDE; 30 31 virtual browser_sync::DataTypeManager* CreateDataTypeManager( 32 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& 33 debug_info_listener, 34 const browser_sync::DataTypeController::TypeMap* controllers, 35 const browser_sync::DataTypeEncryptionHandler* encryption_handler, 36 browser_sync::SyncBackendHost* backend, 37 browser_sync::DataTypeManagerObserver* observer, 38 browser_sync::FailedDataTypesHandler* failed_data_types_handler) 39 OVERRIDE; 40 41 virtual browser_sync::SyncBackendHost* CreateSyncBackendHost( 42 const std::string& name, 43 Profile* profile, 44 const base::WeakPtr<browser_sync::SyncPrefs>& sync_prefs) OVERRIDE; 45 46 virtual browser_sync::GenericChangeProcessor* CreateGenericChangeProcessor( 47 ProfileSyncService* profile_sync_service, 48 browser_sync::DataTypeErrorHandler* error_handler, 49 const base::WeakPtr<syncer::SyncableService>& local_service, 50 const base::WeakPtr<syncer::SyncMergeResult>& merge_result) OVERRIDE; 51 52 virtual browser_sync::SharedChangeProcessor* 53 CreateSharedChangeProcessor() OVERRIDE; 54 55 virtual base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( 56 syncer::ModelType type) OVERRIDE; 57 58 // Legacy datatypes that need to be converted to the SyncableService API. 59 virtual SyncComponents CreateBookmarkSyncComponents( 60 ProfileSyncService* profile_sync_service, 61 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE; 62 virtual SyncComponents CreatePasswordSyncComponents( 63 ProfileSyncService* profile_sync_service, 64 PasswordStore* password_store, 65 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE; 66 virtual SyncComponents CreateTypedUrlSyncComponents( 67 ProfileSyncService* profile_sync_service, 68 history::HistoryBackend* history_backend, 69 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE; 70 virtual SyncComponents CreateSessionSyncComponents( 71 ProfileSyncService* profile_sync_service, 72 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE; 73 74 private: 75 // Register data types which are enabled on desktop platforms only. 76 void RegisterDesktopDataTypes(ProfileSyncService* pss); 77 // Register data types which are enabled on both desktop and mobile. 78 void RegisterCommonDataTypes(ProfileSyncService* pss); 79 80 Profile* profile_; 81 CommandLine* command_line_; 82 // Set on the UI thread (since extensions::ExtensionSystemFactory is 83 // non-threadsafe); accessed on both the UI and FILE threads in 84 // GetSyncableServiceForType. 85 extensions::ExtensionSystem* extension_system_; 86 scoped_refptr<autofill::AutofillWebDataService> web_data_service_; 87 88 DISALLOW_COPY_AND_ASSIGN(ProfileSyncComponentsFactoryImpl); 89 }; 90 91 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ 92