blob: fea2ffdc90eef0cf5679ec2fd32a0514b0a555ee [file] [log] [blame]
// Copyright 2021 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_TEST_FAKE_SYNC_ENGINE_FACTORY_H_
#define COMPONENTS_SYNC_TEST_FAKE_SYNC_ENGINE_FACTORY_H_
#include <memory>
#include <string>
#include "components/sync/base/data_type.h"
#include "components/sync/engine/sync_engine.h"
#include "components/sync/service/sync_engine_factory.h"
namespace syncer {
class FakeSyncEngine;
class FakeSyncEngineFactory : public SyncEngineFactory {
public:
FakeSyncEngineFactory();
~FakeSyncEngineFactory() override;
// Enables or disables FakeSyncEngine's synchronous completion of
// Initialize(). Defaults to true.
void AllowFakeEngineInitCompletion(bool allow);
FakeSyncEngine* last_created_engine() { return last_created_engine_.get(); }
// Determines whether future initialization of FakeSyncEngine will report
// being an initial sync.
void set_first_time_sync_configure_done(bool done) {
is_first_time_sync_configure_done_ = done;
}
// SyncEngineFactory overrides.
std::unique_ptr<SyncEngine> CreateSyncEngine(
const std::string& name,
const signin::GaiaIdHash& gaia_id_hash,
syncer::SyncInvalidationsService* sync_invalidations_service) override;
bool HasTransportDataIncludingFirstSync(
const signin::GaiaIdHash& gaia_id_hash) override;
void CleanupOnDisableSync() override;
void ClearTransportDataForAccount(
const signin::GaiaIdHash& gaia_id_hash) override;
private:
base::WeakPtr<FakeSyncEngine> last_created_engine_;
bool allow_fake_engine_init_completion_ = true;
bool is_first_time_sync_configure_done_ = false;
base::WeakPtrFactory<FakeSyncEngineFactory> weak_factory_{this};
};
} // namespace syncer
#endif // COMPONENTS_SYNC_TEST_FAKE_SYNC_ENGINE_FACTORY_H_