Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ | 5 #ifndef COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ |
| 6 #define COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ | 6 #define COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ |
| 7 | 7 |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
| 10 #include "components/sync_driver/data_type_controller.h" | |
| 10 #include "sync/api/syncable_service.h" | 11 #include "sync/api/syncable_service.h" |
| 11 #include "sync/internal_api/public/attachments/attachment_service.h" | 12 #include "sync/internal_api/public/attachments/attachment_service.h" |
| 12 #include "sync/internal_api/public/base/model_type.h" | 13 #include "sync/internal_api/public/base/model_type.h" |
| 13 | 14 |
| 15 namespace base { | |
| 16 class FilePath; | |
| 17 } // namespace base | |
| 18 | |
| 19 namespace browser_sync { | |
| 20 class SyncBackendHost; | |
| 21 } // namespace browser_sync | |
| 22 | |
| 23 namespace history { | |
| 24 class HistoryBackend; | |
| 25 } | |
| 26 | |
| 27 namespace invalidation { | |
| 28 class InvalidationService; | |
| 29 } // namespace invalidation | |
| 30 | |
| 14 namespace syncer { | 31 namespace syncer { |
| 32 class DataTypeDebugInfoListener; | |
| 33 class SyncableService; | |
| 34 | |
| 15 struct UserShare; | 35 struct UserShare; |
| 16 } // namespace syncer | 36 } // namespace syncer |
| 17 | 37 |
| 18 namespace sync_driver { | 38 namespace sync_driver { |
| 19 | 39 |
| 40 class AssociatorInterface; | |
| 41 class ChangeProcessor; | |
| 42 class DataTypeEncryptionHandler; | |
| 43 class DataTypeErrorHandler; | |
| 44 class DataTypeManager; | |
| 45 class DataTypeManagerObserver; | |
| 46 class DataTypeStatusTable; | |
| 47 class GenericChangeProcessor; | |
| 48 class LocalDeviceInfoProvider; | |
| 49 class SyncPrefs; | |
| 50 class SyncService; | |
| 51 | |
| 20 // This factory provides sync driver code with the model type specific sync/api | 52 // This factory provides sync driver code with the model type specific sync/api |
| 21 // service (like SyncableService) implementations. | 53 // service (like SyncableService) implementations. |
| 22 class SyncApiComponentFactory { | 54 class SyncApiComponentFactory { |
| 23 public: | 55 public: |
| 24 virtual ~SyncApiComponentFactory() {} | 56 virtual ~SyncApiComponentFactory() {} |
| 25 | 57 |
| 26 // Returns a weak pointer to the syncable service specified by |type|. | 58 // The various factory methods for the data type model associators |
| 27 // Weak pointer may be unset if service is already destroyed. | 59 // and change processors all return this struct. This is needed |
| 28 // Note: Should only be called from the model type thread. | 60 // because the change processors typically require a type-specific |
| 29 virtual base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( | 61 // model associator at construction time. |
| 30 syncer::ModelType type) = 0; | 62 // |
| 63 // Note: This interface is deprecated in favor of the SyncableService API. | |
| 64 // New datatypes that do not live on the UI thread should directly return a | |
| 65 // weak pointer to a syncer::SyncableService. All others continue to return | |
| 66 // SyncComponents. It is safe to assume that the factory methods below are | |
| 67 // called on the same thread in which the datatype resides. | |
| 68 // | |
| 69 // TODO(zea): Have all datatypes using the new API switch to returning | |
| 70 // SyncableService weak pointers instead of SyncComponents (crbug.com/100114). | |
| 71 struct SyncComponents { | |
| 72 sync_driver::AssociatorInterface* model_associator; | |
| 73 sync_driver::ChangeProcessor* change_processor; | |
| 74 SyncComponents(sync_driver::AssociatorInterface* ma, | |
| 75 sync_driver::ChangeProcessor* cp) | |
| 76 : model_associator(ma), change_processor(cp) {} | |
| 77 }; | |
| 78 | |
| 79 virtual void Initialize(sync_driver::SyncService* pss) = 0; | |
|
stanisc
2015/08/27 22:14:04
not "pss" anymore
Nicolas Zea
2015/08/27 23:37:16
Done.
| |
| 80 | |
| 81 // Creates and registers enabled datatypes with the provided SyncService. | |
| 82 virtual void RegisterDataTypes(sync_driver::SyncService* pss) = 0; | |
|
stanisc
2015/08/27 22:14:04
The same here
Nicolas Zea
2015/08/27 23:37:16
Removed this param.
| |
| 83 | |
| 84 // Instantiates a new DataTypeManager with a SyncBackendHost, a list of data | |
| 85 // type controllers and a DataTypeManagerObserver. The return pointer is | |
| 86 // owned by the caller. | |
| 87 virtual sync_driver::DataTypeManager* CreateDataTypeManager( | |
| 88 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& | |
| 89 debug_info_listener, | |
| 90 const sync_driver::DataTypeController::TypeMap* controllers, | |
| 91 const sync_driver::DataTypeEncryptionHandler* encryption_handler, | |
| 92 browser_sync::SyncBackendHost* backend, | |
| 93 sync_driver::DataTypeManagerObserver* observer) = 0; | |
| 94 | |
| 95 // Creating this in the factory helps us mock it out in testing. | |
| 96 virtual browser_sync::SyncBackendHost* CreateSyncBackendHost( | |
| 97 const std::string& name, | |
| 98 invalidation::InvalidationService* invalidator, | |
| 99 const base::WeakPtr<sync_driver::SyncPrefs>& sync_prefs, | |
| 100 const base::FilePath& sync_folder) = 0; | |
| 101 | |
| 102 // Creating this in the factory helps us mock it out in testing. | |
| 103 virtual scoped_ptr<sync_driver::LocalDeviceInfoProvider> | |
| 104 CreateLocalDeviceInfoProvider() = 0; | |
| 105 | |
| 106 // Legacy datatypes that need to be converted to the SyncableService API. | |
| 107 virtual SyncComponents CreateBookmarkSyncComponents( | |
| 108 sync_driver::SyncService* sync_service, | |
| 109 sync_driver::DataTypeErrorHandler* error_handler) = 0; | |
| 110 virtual SyncComponents CreateTypedUrlSyncComponents( | |
| 111 sync_driver::SyncService* sync_service, | |
| 112 history::HistoryBackend* history_backend, | |
| 113 sync_driver::DataTypeErrorHandler* error_handler) = 0; | |
| 31 | 114 |
| 32 // Creates attachment service. | 115 // Creates attachment service. |
| 33 // Note: Should only be called from the model type thread. | 116 // Note: Should only be called from the model type thread. |
| 34 // | 117 // |
| 35 // |store_birthday| is the store birthday. Must not be empty. | 118 // |store_birthday| is the store birthday. Must not be empty. |
| 36 // | 119 // |
| 37 // |model_type| is the model type this AttachmentService will be used with. | 120 // |model_type| is the model type this AttachmentService will be used with. |
| 38 // | 121 // |
| 39 // |delegate| is optional delegate for AttachmentService to notify about | 122 // |delegate| is optional delegate for AttachmentService to notify about |
| 40 // asynchronous events (AttachmentUploaded). Pass NULL if delegate is not | 123 // asynchronous events (AttachmentUploaded). Pass NULL if delegate is not |
| 41 // provided. AttachmentService doesn't take ownership of delegate, the pointer | 124 // provided. AttachmentService doesn't take ownership of delegate, the pointer |
| 42 // must be valid throughout AttachmentService lifetime. | 125 // must be valid throughout AttachmentService lifetime. |
| 43 virtual scoped_ptr<syncer::AttachmentService> CreateAttachmentService( | 126 virtual scoped_ptr<syncer::AttachmentService> CreateAttachmentService( |
| 44 scoped_ptr<syncer::AttachmentStoreForSync> attachment_store, | 127 scoped_ptr<syncer::AttachmentStoreForSync> attachment_store, |
| 45 const syncer::UserShare& user_share, | 128 const syncer::UserShare& user_share, |
| 46 const std::string& store_birthday, | 129 const std::string& store_birthday, |
| 47 syncer::ModelType model_type, | 130 syncer::ModelType model_type, |
| 48 syncer::AttachmentService::Delegate* delegate) = 0; | 131 syncer::AttachmentService::Delegate* delegate) = 0; |
| 49 }; | 132 }; |
| 50 | 133 |
| 51 } // namespace sync_driver | 134 } // namespace sync_driver |
| 52 | 135 |
| 53 #endif // COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ | 136 #endif // COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_ |
| OLD | NEW |