blob: 8646b3e7d894cea76aaf7df1688ee8d5f8a522de [file] [log] [blame]
// Copyright 2013 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_H_
#define COMPONENTS_SYNC_TEST_FAKE_SYNC_ENGINE_H_
#include <memory>
#include <string>
#include <vector>
#include "base/compiler_specific.h"
#include "base/functional/callback_forward.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "components/sync/engine/configure_reason.h"
#include "components/sync/engine/sync_engine.h"
#include "components/sync/engine/sync_status.h"
#include "google_apis/gaia/core_account_id.h"
namespace syncer {
// A fake of the SyncEngine.
//
// This class implements the bare minimum required for the SyncServiceImpl to
// get through initialization. It often returns null pointers or nonsense
// values; it is not intended to be used in tests that depend on SyncEngine
// behavior.
class FakeSyncEngine final : public SyncEngine {
public:
static constexpr char kTestBirthday[] = "1";
FakeSyncEngine(bool allow_init_completion,
bool is_first_time_sync_configure,
const base::RepeatingClosure& sync_transport_data_cleared_cb);
~FakeSyncEngine() override;
CoreAccountId authenticated_account_id() const {
return authenticated_account_id_;
}
ConfigureReason last_configure_reason() const {
return last_configure_reason_;
}
bool started_handling_invalidations() {
return started_handling_invalidations_;
}
void SetPollIntervalElapsed(bool elapsed);
// Manual completion of Initialize(), required if auto-completion was disabled
// in the constructor.
void TriggerInitializationCompletion(bool success);
void SetDetailedStatus(const SyncStatus& status);
// Immediately calls params.host->OnEngineInitialized.
void Initialize(InitParams params) override;
bool IsInitialized() const override;
void TriggerRefresh(const DataTypeSet& types) override;
void UpdateCredentials(const SyncCredentials& credentials) override;
void InvalidateCredentials() override;
std::string GetCacheGuid() const override;
std::string GetBirthday() const override;
base::Time GetLastSyncedTimeForDebugging() const override;
void StartConfiguration() override;
void StartHandlingInvalidations() override;
void StartSyncingWithServer() override;
void SetEncryptionPassphrase(
const std::string& passphrase,
const KeyDerivationParams& key_derivation_params) override;
void SetExplicitPassphraseDecryptionKey(std::unique_ptr<Nigori> key) override;
void AddTrustedVaultDecryptionKeys(
const std::vector<std::vector<uint8_t>>& keys,
base::OnceClosure done_cb) override;
void StopSyncingForShutdown() override;
void Shutdown(ShutdownReason reason) override;
void ConfigureDataTypes(ConfigureParams params) override;
void ConnectDataType(DataType type,
std::unique_ptr<DataTypeActivationResponse>) override;
void DisconnectDataType(DataType type) override;
const SyncStatus& GetDetailedStatus() const override;
void GetTypesWithUnsyncedData(
base::OnceCallback<void(DataTypeSet)> cb) const override;
void HasUnsyncedItemsForTest(
base::OnceCallback<void(bool)> cb) const override;
void GetThrottledDataTypesForTest(
base::OnceCallback<void(DataTypeSet)> cb) const override;
void RequestBufferedProtocolEventsAndEnableForwarding() override;
void DisableProtocolEventForwarding() override;
void OnCookieJarChanged(bool account_mismatch,
base::OnceClosure callback) override;
bool IsNextPollTimeInThePast() const override;
void GetNigoriNodeForDebugging(AllNodesCallback callback) override;
void RecordNigoriMemoryUsageAndCountsHistograms() override;
base::WeakPtr<FakeSyncEngine> AsWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
private:
const bool allow_init_completion_;
const bool is_first_time_sync_configure_;
const base::RepeatingClosure sync_transport_data_cleared_cb_;
// AcrossTasksDanglingUntriaged because it is assigned a
// AcrossTasksDanglingUntriaged pointer.
raw_ptr<SyncEngineHost, AcrossTasksDanglingUntriaged> host_ = nullptr;
bool initialized_ = false;
SyncStatus sync_status_;
CoreAccountId authenticated_account_id_;
bool started_handling_invalidations_ = false;
bool is_next_poll_time_in_the_past_ = false;
ConfigureReason last_configure_reason_ = CONFIGURE_REASON_UNKNOWN;
base::WeakPtrFactory<FakeSyncEngine> weak_ptr_factory_{this};
};
} // namespace syncer
#endif // COMPONENTS_SYNC_TEST_FAKE_SYNC_ENGINE_H_