blob: 0aa016deb849f59339d2c264877178e3c6a8ed81 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/model/mock_model_type_change_processor.h"
#include <utility>
#include "base/bind.h"
#include "base/memory/ptr_util.h"
#include "components/sync/model/metadata_batch.h"
namespace syncer {
namespace {
using testing::Invoke;
using testing::_;
class ForwardingModelTypeChangeProcessor : public ModelTypeChangeProcessor {
public:
// |other| must not be nullptr and must outlive this object.
explicit ForwardingModelTypeChangeProcessor(ModelTypeChangeProcessor* other)
: other_(other) {}
~ForwardingModelTypeChangeProcessor() override {}
void Put(const std::string& client_tag,
std::unique_ptr<EntityData> entity_data,
MetadataChangeList* metadata_change_list) override {
other_->Put(client_tag, std::move(entity_data), metadata_change_list);
}
void Delete(const std::string& client_tag,
MetadataChangeList* metadata_change_list) override {
other_->Delete(client_tag, metadata_change_list);
}
void UpdateStorageKey(const EntityData& entity_data,
const std::string& storage_key,
MetadataChangeList* metadata_change_list) override {
other_->UpdateStorageKey(entity_data, storage_key, metadata_change_list);
}
void UntrackEntityForStorageKey(const std::string& storage_key) override {
other_->UntrackEntityForStorageKey(storage_key);
}
void UntrackEntityForClientTagHash(
const std::string& client_tag_hash) override {
other_->UntrackEntityForClientTagHash(client_tag_hash);
}
bool IsEntityUnsynced(const std::string& storage_key) override {
return other_->IsEntityUnsynced(storage_key);
}
base::Time GetEntityCreationTime(
const std::string& storage_key) const override {
return other_->GetEntityCreationTime(storage_key);
}
base::Time GetEntityModificationTime(
const std::string& storage_key) const override {
return other_->GetEntityModificationTime(storage_key);
}
void OnModelStarting(ModelTypeSyncBridge* bridge) override {
other_->OnModelStarting(bridge);
}
void ModelReadyToSync(std::unique_ptr<MetadataBatch> batch) override {
other_->ModelReadyToSync(std::move(batch));
}
bool IsTrackingMetadata() override { return other_->IsTrackingMetadata(); }
std::string TrackedAccountId() override { return other_->TrackedAccountId(); }
std::string TrackedCacheGuid() override { return other_->TrackedCacheGuid(); }
void ReportError(const ModelError& error) override {
other_->ReportError(error);
}
base::Optional<ModelError> GetError() const override {
return other_->GetError();
}
base::WeakPtr<ModelTypeControllerDelegate> GetControllerDelegate() override {
return other_->GetControllerDelegate();
}
private:
ModelTypeChangeProcessor* other_;
};
} // namespace
MockModelTypeChangeProcessor::MockModelTypeChangeProcessor() {}
MockModelTypeChangeProcessor::~MockModelTypeChangeProcessor() {}
std::unique_ptr<ModelTypeChangeProcessor>
MockModelTypeChangeProcessor::CreateForwardingProcessor() {
return base::WrapUnique<ModelTypeChangeProcessor>(
new ForwardingModelTypeChangeProcessor(this));
}
void MockModelTypeChangeProcessor::DelegateCallsByDefaultTo(
ModelTypeChangeProcessor* delegate) {
DCHECK(delegate);
ON_CALL(*this, Put(_, _, _))
.WillByDefault([delegate](const std::string& storage_key,
std::unique_ptr<EntityData> entity_data,
MetadataChangeList* metadata_change_list) {
delegate->Put(storage_key, std::move(entity_data),
metadata_change_list);
});
ON_CALL(*this, Delete(_, _))
.WillByDefault(Invoke(delegate, &ModelTypeChangeProcessor::Delete));
ON_CALL(*this, UpdateStorageKey(_, _, _))
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::UpdateStorageKey));
ON_CALL(*this, UntrackEntityForStorageKey(_))
.WillByDefault(Invoke(
delegate, &ModelTypeChangeProcessor::UntrackEntityForStorageKey));
ON_CALL(*this, UntrackEntityForClientTagHash(_))
.WillByDefault(Invoke(
delegate, &ModelTypeChangeProcessor::UntrackEntityForClientTagHash));
ON_CALL(*this, IsEntityUnsynced(_))
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::IsEntityUnsynced));
ON_CALL(*this, OnModelStarting(_))
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::OnModelStarting));
ON_CALL(*this, ModelReadyToSync(_))
.WillByDefault([delegate](std::unique_ptr<MetadataBatch> batch) {
delegate->ModelReadyToSync(std::move(batch));
});
ON_CALL(*this, IsTrackingMetadata())
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::IsTrackingMetadata));
ON_CALL(*this, TrackedAccountId())
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::TrackedAccountId));
ON_CALL(*this, TrackedCacheGuid())
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::TrackedCacheGuid));
ON_CALL(*this, ReportError(_))
.WillByDefault(Invoke(delegate, &ModelTypeChangeProcessor::ReportError));
ON_CALL(*this, GetError())
.WillByDefault(Invoke(delegate, &ModelTypeChangeProcessor::GetError));
ON_CALL(*this, GetControllerDelegate())
.WillByDefault(
Invoke(delegate, &ModelTypeChangeProcessor::GetControllerDelegate));
}
} // namespace syncer