#ifndef CHROMEOS_DBUS_MISSIVE_FAKE_MISSIVE_CLIENT_H_
#define CHROMEOS_DBUS_MISSIVE_FAKE_MISSIVE_CLIENT_H_
#include <vector>
#include "base/containers/flat_map.h"
#include "base/functional/callback.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/task/sequenced_task_runner.h"
#include "chromeos/dbus/missive/missive_client.h"
#include "components/reporting/proto/synced/record.pb.h"
#include "components/reporting/proto/synced/record_constants.pb.h"
namespace chromeos {
class COMPONENT_EXPORT(MISSIVE) FakeMissiveClient
: public MissiveClient,
public MissiveClient::TestInterface {
public:
FakeMissiveClient();
~FakeMissiveClient() override;
FakeMissiveClient(const FakeMissiveClient& other) = delete;
FakeMissiveClient& operator=(const FakeMissiveClient& other) = delete;
void Init();
void EnqueueRecord(
const reporting::Priority priority,
reporting::Record record,
base::OnceCallback<void(reporting::Status)> completion_callback) override;
void Flush(
const reporting::Priority priority,
base::OnceCallback<void(reporting::Status)> completion_callback) override;
void UpdateEncryptionKey(
const reporting::SignedEncryptionInfo& encryption_info) override;
void UpdateConfigInMissive(
const reporting::ListOfBlockedDestinations& destinations) override;
void ReportSuccess(const reporting::SequenceInformation& sequence_information,
bool force_confirm) override;
TestInterface* GetTestInterface() override;
base::WeakPtr<MissiveClient> GetWeakPtr() override;
const std::vector<::reporting::Record>& GetEnqueuedRecords(
::reporting::Priority priority) override;
void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override;
private:
base::flat_map<::reporting::Priority, std::vector<::reporting::Record>>
enqueued_records_;
base::ObserverList<Observer> observer_list_;
base::WeakPtrFactory<FakeMissiveClient> weak_ptr_factory_{this};
};
}
#endif