#ifndef COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_
#define COMPONENTS_SYNC_DRIVER_SYNC_API_COMPONENT_FACTORY_H_
#include <memory>
#include <string>
#include "components/sync/base/model_type.h"
#include "components/sync/driver/data_type_controller.h"
namespace invalidation {
class InvalidationService;
}
namespace syncer {
class DataTypeEncryptionHandler;
class DataTypeManager;
class DataTypeManagerObserver;
class ModelTypeConfigurer;
class SyncEngine;
class SyncInvalidationsService;
class SyncApiComponentFactory {
public:
virtual ~SyncApiComponentFactory() = default;
virtual std::unique_ptr<DataTypeManager> CreateDataTypeManager(
const DataTypeController::TypeMap* controllers,
const DataTypeEncryptionHandler* encryption_handler,
ModelTypeConfigurer* configurer,
DataTypeManagerObserver* observer) = 0;
virtual std::unique_ptr<SyncEngine> CreateSyncEngine(
const std::string& name,
invalidation::InvalidationService* invalidator,
SyncInvalidationsService* sync_invalidation_service) = 0;
virtual void ClearAllTransportData() = 0;
};
}
#endif