Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync / profile_sync_components_factory_impl.h
index b87647b..9ab519d 100644 (file)
@@ -9,12 +9,16 @@
 
 #include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/memory/weak_ptr.h"
 #include "chrome/browser/sync/profile_sync_components_factory.h"
 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
+#include "google_apis/gaia/oauth2_token_service.h"
 
+class Profile;
 
+namespace base {
 class CommandLine;
-class Profile;
+}
 
 namespace extensions {
 class ExtensionSystem;
@@ -22,69 +26,90 @@ class ExtensionSystem;
 
 class ProfileSyncComponentsFactoryImpl : public ProfileSyncComponentsFactory {
  public:
-  ProfileSyncComponentsFactoryImpl(Profile* profile,
-                                   CommandLine* command_line);
+  // Constructs a ProfileSyncComponentsFactoryImpl.
+  //
+  // |sync_service_url| is the base URL of the sync server.
+  //
+  // |token_service| must outlive the ProfileSyncComponentsFactoryImpl.
+  //
+  // |url_request_context_getter| must outlive the
+  // ProfileSyncComponentsFactoryImpl.
+  ProfileSyncComponentsFactoryImpl(
+      Profile* profile,
+      base::CommandLine* command_line,
+      const GURL& sync_service_url,
+      OAuth2TokenService* token_service,
+      net::URLRequestContextGetter* url_request_context_getter);
   virtual ~ProfileSyncComponentsFactoryImpl();
 
   virtual void RegisterDataTypes(ProfileSyncService* pss) OVERRIDE;
 
-  virtual browser_sync::DataTypeManager* CreateDataTypeManager(
+  virtual sync_driver::DataTypeManager* CreateDataTypeManager(
       const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
           debug_info_listener,
-      const browser_sync::DataTypeController::TypeMap* controllers,
-      const browser_sync::DataTypeEncryptionHandler* encryption_handler,
+      const sync_driver::DataTypeController::TypeMap* controllers,
+      const sync_driver::DataTypeEncryptionHandler* encryption_handler,
       browser_sync::SyncBackendHost* backend,
-      browser_sync::DataTypeManagerObserver* observer,
-      browser_sync::FailedDataTypesHandler* failed_data_types_handler)
+      sync_driver::DataTypeManagerObserver* observer,
+      sync_driver::FailedDataTypesHandler* failed_data_types_handler)
           OVERRIDE;
 
   virtual browser_sync::SyncBackendHost* CreateSyncBackendHost(
       const std::string& name,
       Profile* profile,
-      const base::WeakPtr<browser_sync::SyncPrefs>& sync_prefs) OVERRIDE;
-
-  virtual browser_sync::GenericChangeProcessor* CreateGenericChangeProcessor(
-      ProfileSyncService* profile_sync_service,
-      browser_sync::DataTypeErrorHandler* error_handler,
-      const base::WeakPtr<syncer::SyncableService>& local_service,
-      const base::WeakPtr<syncer::SyncMergeResult>& merge_result) OVERRIDE;
+      invalidation::InvalidationService* invalidator,
+      const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs,
+      const base::FilePath& sync_folder) OVERRIDE;
 
-  virtual browser_sync::SharedChangeProcessor*
-      CreateSharedChangeProcessor() OVERRIDE;
+  virtual scoped_ptr<browser_sync::LocalDeviceInfoProvider>
+      CreateLocalDeviceInfoProvider() OVERRIDE;
 
   virtual base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
       syncer::ModelType type) OVERRIDE;
+  virtual scoped_ptr<syncer::AttachmentService> CreateAttachmentService(
+      const syncer::UserShare& user_share,
+      syncer::AttachmentService::Delegate* delegate) OVERRIDE;
 
   // Legacy datatypes that need to be converted to the SyncableService API.
   virtual SyncComponents CreateBookmarkSyncComponents(
       ProfileSyncService* profile_sync_service,
-      browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
-  virtual SyncComponents CreatePasswordSyncComponents(
-      ProfileSyncService* profile_sync_service,
-      PasswordStore* password_store,
-      browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
+      sync_driver::DataTypeErrorHandler* error_handler) OVERRIDE;
   virtual SyncComponents CreateTypedUrlSyncComponents(
       ProfileSyncService* profile_sync_service,
       history::HistoryBackend* history_backend,
-      browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
-  virtual SyncComponents CreateSessionSyncComponents(
-      ProfileSyncService* profile_sync_service,
-      browser_sync::DataTypeErrorHandler* error_handler) OVERRIDE;
+      sync_driver::DataTypeErrorHandler* error_handler) OVERRIDE;
 
  private:
   // Register data types which are enabled on desktop platforms only.
-  void RegisterDesktopDataTypes(ProfileSyncService* pss);
+  // |disabled_types| and |enabled_types| correspond only to those types
+  // being explicitly enabled/disabled by the command line.
+  void RegisterDesktopDataTypes(syncer::ModelTypeSet disabled_types,
+                                syncer::ModelTypeSet enabled_types,
+                                ProfileSyncService* pss);
   // Register data types which are enabled on both desktop and mobile.
-  void RegisterCommonDataTypes(ProfileSyncService* pss);
+  // |disabled_types| and |enabled_types| correspond only to those types
+  // being explicitly enabled/disabled by the command line.
+  void RegisterCommonDataTypes(syncer::ModelTypeSet disabled_types,
+                               syncer::ModelTypeSet enabled_types,
+                               ProfileSyncService* pss);
+  // Used to bind a callback to give to DataTypeControllers to disable
+  // data types.
+  sync_driver::DataTypeController::DisableTypeCallback
+      MakeDisableCallbackFor(syncer::ModelType type);
+  void DisableBrokenType(syncer::ModelType type,
+                         const tracked_objects::Location& from_here,
+                         const std::string& message);
 
   Profile* profile_;
-  CommandLine* command_line_;
-  // Set on the UI thread (since extensions::ExtensionSystemFactory is
-  // non-threadsafe); accessed on both the UI and FILE threads in
-  // GetSyncableServiceForType.
-  extensions::ExtensionSystem* extension_system_;
+  base::CommandLine* command_line_;
   scoped_refptr<autofill::AutofillWebDataService> web_data_service_;
 
+  const GURL sync_service_url_;
+  OAuth2TokenService* const token_service_;
+  net::URLRequestContextGetter* const url_request_context_getter_;
+
+  base::WeakPtrFactory<ProfileSyncComponentsFactoryImpl> weak_factory_;
+
   DISALLOW_COPY_AND_ASSIGN(ProfileSyncComponentsFactoryImpl);
 };