| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ | 5 #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ |
| 6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ | 6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 12 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
| 13 #include "chrome/browser/sync/chrome_sync_client.h" | 13 #include "chrome/browser/sync/chrome_sync_client.h" |
| 14 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" | 14 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" |
| 15 #include "components/sync_driver/profile_sync_components_factory.h" | 15 #include "components/sync_driver/sync_api_component_factory.h" |
| 16 #include "google_apis/gaia/oauth2_token_service.h" | 16 #include "google_apis/gaia/oauth2_token_service.h" |
| 17 #include "sync/internal_api/public/base/model_type.h" | 17 #include "sync/internal_api/public/base/model_type.h" |
| 18 | 18 |
| 19 class Profile; | 19 class Profile; |
| 20 | 20 |
| 21 namespace base { | 21 namespace base { |
| 22 class CommandLine; | 22 class CommandLine; |
| 23 } | 23 } |
| 24 | 24 |
| 25 namespace extensions { | 25 namespace extensions { |
| 26 class ExtensionSystem; | 26 class ExtensionSystem; |
| 27 } | 27 } |
| 28 | 28 |
| 29 class ProfileSyncComponentsFactoryImpl : public ProfileSyncComponentsFactory { | 29 class ProfileSyncComponentsFactoryImpl |
| 30 : public sync_driver::SyncApiComponentFactory { |
| 30 public: | 31 public: |
| 31 // Constructs a ProfileSyncComponentsFactoryImpl. | 32 // Constructs a ProfileSyncComponentsFactoryImpl. |
| 32 // | 33 // |
| 33 // |sync_service_url| is the base URL of the sync server. | 34 // |sync_service_url| is the base URL of the sync server. |
| 34 // | 35 // |
| 35 // |token_service| must outlive the ProfileSyncComponentsFactoryImpl. | 36 // |token_service| must outlive the ProfileSyncComponentsFactoryImpl. |
| 36 // | 37 // |
| 37 // |url_request_context_getter| must outlive the | 38 // |url_request_context_getter| must outlive the |
| 38 // ProfileSyncComponentsFactoryImpl. | 39 // ProfileSyncComponentsFactoryImpl. |
| 39 ProfileSyncComponentsFactoryImpl( | 40 ProfileSyncComponentsFactoryImpl( |
| 40 Profile* profile, | 41 Profile* profile, |
| 41 base::CommandLine* command_line, | 42 base::CommandLine* command_line, |
| 42 const GURL& sync_service_url, | 43 const GURL& sync_service_url, |
| 43 OAuth2TokenService* token_service, | 44 OAuth2TokenService* token_service, |
| 44 net::URLRequestContextGetter* url_request_context_getter); | 45 net::URLRequestContextGetter* url_request_context_getter); |
| 45 ~ProfileSyncComponentsFactoryImpl() override; | 46 ~ProfileSyncComponentsFactoryImpl() override; |
| 46 | 47 |
| 47 void RegisterDataTypes(ProfileSyncService* pss) override; | 48 // Initializes internal state after construction. |
| 49 void Initialize(sync_driver::SyncService* sync_service) override; |
| 50 |
| 51 void RegisterDataTypes(sync_driver::SyncService* pss) override; |
| 48 | 52 |
| 49 sync_driver::DataTypeManager* CreateDataTypeManager( | 53 sync_driver::DataTypeManager* CreateDataTypeManager( |
| 50 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& | 54 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& |
| 51 debug_info_listener, | 55 debug_info_listener, |
| 52 const sync_driver::DataTypeController::TypeMap* controllers, | 56 const sync_driver::DataTypeController::TypeMap* controllers, |
| 53 const sync_driver::DataTypeEncryptionHandler* encryption_handler, | 57 const sync_driver::DataTypeEncryptionHandler* encryption_handler, |
| 54 browser_sync::SyncBackendHost* backend, | 58 browser_sync::SyncBackendHost* backend, |
| 55 sync_driver::DataTypeManagerObserver* observer) override; | 59 sync_driver::DataTypeManagerObserver* observer) override; |
| 56 | 60 |
| 57 browser_sync::SyncBackendHost* CreateSyncBackendHost( | 61 browser_sync::SyncBackendHost* CreateSyncBackendHost( |
| 58 const std::string& name, | 62 const std::string& name, |
| 59 Profile* profile, | |
| 60 invalidation::InvalidationService* invalidator, | 63 invalidation::InvalidationService* invalidator, |
| 61 const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs, | 64 const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs, |
| 62 const base::FilePath& sync_folder) override; | 65 const base::FilePath& sync_folder) override; |
| 63 | 66 |
| 64 scoped_ptr<sync_driver::LocalDeviceInfoProvider> | 67 scoped_ptr<sync_driver::LocalDeviceInfoProvider> |
| 65 CreateLocalDeviceInfoProvider() override; | 68 CreateLocalDeviceInfoProvider() override; |
| 66 | 69 |
| 67 // TODO(zea): crbug.com/512768 Remove GetSyncableServiceForType from | |
| 68 // ProfileSyncComponentsFactory and have everything use the SyncClient | |
| 69 // instead. | |
| 70 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( | |
| 71 syncer::ModelType type) override; | |
| 72 scoped_ptr<syncer::AttachmentService> CreateAttachmentService( | 70 scoped_ptr<syncer::AttachmentService> CreateAttachmentService( |
| 73 scoped_ptr<syncer::AttachmentStoreForSync> attachment_store, | 71 scoped_ptr<syncer::AttachmentStoreForSync> attachment_store, |
| 74 const syncer::UserShare& user_share, | 72 const syncer::UserShare& user_share, |
| 75 const std::string& store_birthday, | 73 const std::string& store_birthday, |
| 76 syncer::ModelType model_type, | 74 syncer::ModelType model_type, |
| 77 syncer::AttachmentService::Delegate* delegate) override; | 75 syncer::AttachmentService::Delegate* delegate) override; |
| 78 | 76 |
| 79 // Legacy datatypes that need to be converted to the SyncableService API. | 77 // Legacy datatypes that need to be converted to the SyncableService API. |
| 80 SyncComponents CreateBookmarkSyncComponents( | 78 sync_driver::SyncApiComponentFactory::SyncComponents |
| 81 ProfileSyncService* profile_sync_service, | 79 CreateBookmarkSyncComponents( |
| 80 sync_driver::SyncService* sync_service, |
| 82 sync_driver::DataTypeErrorHandler* error_handler) override; | 81 sync_driver::DataTypeErrorHandler* error_handler) override; |
| 83 SyncComponents CreateTypedUrlSyncComponents( | 82 sync_driver::SyncApiComponentFactory::SyncComponents |
| 84 ProfileSyncService* profile_sync_service, | 83 CreateTypedUrlSyncComponents( |
| 84 sync_driver::SyncService* sync_service, |
| 85 history::HistoryBackend* history_backend, | 85 history::HistoryBackend* history_backend, |
| 86 sync_driver::DataTypeErrorHandler* error_handler) override; | 86 sync_driver::DataTypeErrorHandler* error_handler) override; |
| 87 | 87 |
| 88 private: | 88 private: |
| 89 // Register data types which are enabled on desktop platforms only. | 89 // Register data types which are enabled on desktop platforms only. |
| 90 // |disabled_types| and |enabled_types| correspond only to those types | 90 // |disabled_types| and |enabled_types| correspond only to those types |
| 91 // being explicitly enabled/disabled by the command line. | 91 // being explicitly enabled/disabled by the command line. |
| 92 void RegisterDesktopDataTypes(syncer::ModelTypeSet disabled_types, | 92 void RegisterDesktopDataTypes(syncer::ModelTypeSet disabled_types, |
| 93 syncer::ModelTypeSet enabled_types, | 93 syncer::ModelTypeSet enabled_types, |
| 94 ProfileSyncService* pss); | 94 sync_driver::SyncService* pss); |
| 95 // Register data types which are enabled on both desktop and mobile. | 95 // Register data types which are enabled on both desktop and mobile. |
| 96 // |disabled_types| and |enabled_types| correspond only to those types | 96 // |disabled_types| and |enabled_types| correspond only to those types |
| 97 // being explicitly enabled/disabled by the command line. | 97 // being explicitly enabled/disabled by the command line. |
| 98 void RegisterCommonDataTypes(syncer::ModelTypeSet disabled_types, | 98 void RegisterCommonDataTypes(syncer::ModelTypeSet disabled_types, |
| 99 syncer::ModelTypeSet enabled_types, | 99 syncer::ModelTypeSet enabled_types, |
| 100 ProfileSyncService* pss); | 100 sync_driver::SyncService* pss); |
| 101 // Used to bind a callback to give to DataTypeControllers to disable | 101 // Used to bind a callback to give to DataTypeControllers to disable |
| 102 // data types. | 102 // data types. |
| 103 sync_driver::DataTypeController::DisableTypeCallback | 103 sync_driver::DataTypeController::DisableTypeCallback |
| 104 MakeDisableCallbackFor(syncer::ModelType type); | 104 MakeDisableCallbackFor(syncer::ModelType type); |
| 105 void DisableBrokenType(syncer::ModelType type, | 105 void DisableBrokenType(syncer::ModelType type, |
| 106 const tracked_objects::Location& from_here, | 106 const tracked_objects::Location& from_here, |
| 107 const std::string& message); | 107 const std::string& message); |
| 108 | 108 |
| 109 Profile* profile_; | 109 Profile* profile_; |
| 110 base::CommandLine* command_line_; | 110 base::CommandLine* command_line_; |
| 111 scoped_refptr<autofill::AutofillWebDataService> web_data_service_; | 111 scoped_refptr<autofill::AutofillWebDataService> web_data_service_; |
| 112 | 112 |
| 113 const GURL sync_service_url_; | 113 const GURL sync_service_url_; |
| 114 OAuth2TokenService* const token_service_; | 114 OAuth2TokenService* const token_service_; |
| 115 net::URLRequestContextGetter* const url_request_context_getter_; | 115 net::URLRequestContextGetter* const url_request_context_getter_; |
| 116 | 116 |
| 117 // Chrome specific implementation of SyncClient. | 117 // Chrome specific implementation of SyncClient. |
| 118 // TODO(zea): Move the creation of this into the ProfileSyncServiceFactory, |
| 119 // and ownership to the ProfileSyncService itself. |
| 118 browser_sync::ChromeSyncClient chrome_sync_client_; | 120 browser_sync::ChromeSyncClient chrome_sync_client_; |
| 119 | 121 |
| 120 base::WeakPtrFactory<ProfileSyncComponentsFactoryImpl> weak_factory_; | 122 base::WeakPtrFactory<ProfileSyncComponentsFactoryImpl> weak_factory_; |
| 121 | 123 |
| 122 DISALLOW_COPY_AND_ASSIGN(ProfileSyncComponentsFactoryImpl); | 124 DISALLOW_COPY_AND_ASSIGN(ProfileSyncComponentsFactoryImpl); |
| 123 }; | 125 }; |
| 124 | 126 |
| 125 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ | 127 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_COMPONENTS_FACTORY_IMPL_H__ |
| OLD | NEW |