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.
5 #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__
6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__
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"
21 namespace extensions {
22 class ExtensionSystem;
25 class ProfileSyncComponentsFactoryImpl : public ProfileSyncComponentsFactory {
27 ProfileSyncComponentsFactoryImpl(Profile* profile,
28 base::CommandLine* command_line);
29 virtual ~ProfileSyncComponentsFactoryImpl();
31 virtual void RegisterDataTypes(ProfileSyncService* pss) OVERRIDE;
33 virtual browser_sync::DataTypeManager* CreateDataTypeManager(
34 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
36 const browser_sync::DataTypeController::TypeMap* controllers,
37 const browser_sync::DataTypeEncryptionHandler* encryption_handler,
38 browser_sync::SyncBackendHost* backend,
39 browser_sync::DataTypeManagerObserver* observer,
40 browser_sync::FailedDataTypesHandler* failed_data_types_handler)
43 virtual browser_sync::SyncBackendHost* CreateSyncBackendHost(
44 const std::string& name,
46 const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs) OVERRIDE;
48 virtual browser_sync::GenericChangeProcessor* CreateGenericChangeProcessor(
49 ProfileSyncService* profile_sync_service,
50 browser_sync::DataTypeErrorHandler* error_handler,
51 const base::WeakPtr<syncer::SyncableService>& local_service,
52 const base::WeakPtr<syncer::SyncMergeResult>& merge_result) OVERRIDE;
54 virtual browser_sync::SharedChangeProcessor*
55 CreateSharedChangeProcessor() OVERRIDE;
57 virtual base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
58 syncer::ModelType type) OVERRIDE;
60 // Legacy datatypes that need to be converted to the SyncableService API.
61 virtual SyncComponents CreateBookmarkSyncComponents(
62 ProfileSyncService* profile_sync_service,
63 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
64 virtual SyncComponents CreateTypedUrlSyncComponents(
65 ProfileSyncService* profile_sync_service,
66 history::HistoryBackend* history_backend,
67 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
68 virtual SyncComponents CreateSessionSyncComponents(
69 ProfileSyncService* profile_sync_service,
70 browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
73 // Register data types which are enabled on desktop platforms only.
74 void RegisterDesktopDataTypes(syncer::ModelTypeSet disabled_types,
75 ProfileSyncService* pss);
76 // Register data types which are enabled on both desktop and mobile.
77 void RegisterCommonDataTypes(syncer::ModelTypeSet disabled_types,
78 ProfileSyncService* pss);
81 base::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_;
88 DISALLOW_COPY_AND_ASSIGN(ProfileSyncComponentsFactoryImpl);
91 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__