| // Copyright 2014 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef COMPONENTS_SYNC_SERVICE_SYNC_ENGINE_FACTORY_H_ | |
| #define COMPONENTS_SYNC_SERVICE_SYNC_ENGINE_FACTORY_H_ | |
| #include <memory> | |
| #include <string> | |
| namespace signin { | |
| class GaiaIdHash; | |
| } // namespace signin | |
| namespace syncer { | |
| class SyncEngine; | |
| class SyncInvalidationsService; | |
| // Class responsible for instantiating SyncEngine and restoring its state | |
| // (transport data including cache GUID, birthday, Nigori, etc.). In addition to | |
| // acting as a factory, it fully abstrcts and encapsulates the storage of | |
| // transport data and offers APIs to interact with this data even without having | |
| // to instantiate SyncEngine. | |
| class SyncEngineFactory { | |
| public: | |
| virtual ~SyncEngineFactory() = default; | |
| // Instantiates SyncEngine for a specific account determined by | |
| // `gaia_id_hash`. `sync_invalidation_service` must not be null. `name` is for | |
| // logging purposes only, useful in integration tests that involve multiple | |
| // clients. | |
| virtual std::unique_ptr<SyncEngine> CreateSyncEngine( | |
| const std::string& name, | |
| const signin::GaiaIdHash& gaia_id_hash, | |
| SyncInvalidationsService* sync_invalidation_service) = 0; | |
| // Returns whether the local transport data indicates that a sync engine | |
| // previously initialized successfully and hence populated at least some | |
| // transport data (e.g. birthday). It also implies that the client | |
| // successfully communicated to the server at least once. | |
| virtual bool HasTransportDataIncludingFirstSync( | |
| const signin::GaiaIdHash& gaia_id_hash) = 0; | |
| // Cleans up potentially-leftover sync data. Usually the SyncEngine is | |
| // responsible for that; this is meant to be called if sync gets disabled | |
| // while the engine doesn't exist. | |
| virtual void CleanupOnDisableSync() = 0; | |
| // Clears local transport data (cache GUID etc) for the given account. | |
| virtual void ClearTransportDataForAccount( | |
| const signin::GaiaIdHash& gaia_id_hash) = 0; | |
| }; | |
| } // namespace syncer | |
| #endif // COMPONENTS_SYNC_SERVICE_SYNC_ENGINE_FACTORY_H_ |