1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/model/sync_metadata_store_change_list.h"
#include <utility>
#include "base/location.h"
#include "components/sync/protocol/data_type_state.pb.h"
#include "components/sync/protocol/entity_metadata.pb.h"
namespace syncer {
SyncMetadataStoreChangeList::SyncMetadataStoreChangeList(
SyncMetadataStore* store,
syncer::DataType type,
ErrorCallback error_callback)
: store_(store), type_(type), error_callback_(std::move(error_callback)) {
if (!store_) {
SetError(ModelError(FROM_HERE, "Invalid SyncMetadataStore"));
}
}
SyncMetadataStoreChangeList::~SyncMetadataStoreChangeList() = default;
void SyncMetadataStoreChangeList::UpdateDataTypeState(
const sync_pb::DataTypeState& data_type_state) {
if (error_encountered_) {
return;
}
if (!store_->UpdateDataTypeState(type_, data_type_state)) {
SetError(ModelError(FROM_HERE, "Failed to update DataTypeState."));
}
}
void SyncMetadataStoreChangeList::ClearDataTypeState() {
if (error_encountered_) {
return;
}
if (!store_->ClearDataTypeState(type_)) {
SetError(ModelError(FROM_HERE, "Failed to clear DataTypeState."));
}
}
void SyncMetadataStoreChangeList::UpdateMetadata(
const std::string& storage_key,
const sync_pb::EntityMetadata& metadata) {
if (error_encountered_) {
return;
}
if (!store_->UpdateEntityMetadata(type_, storage_key, metadata)) {
SetError(ModelError(FROM_HERE, "Failed to update entity metadata."));
}
}
void SyncMetadataStoreChangeList::ClearMetadata(
const std::string& storage_key) {
if (error_encountered_) {
return;
}
if (!store_->ClearEntityMetadata(type_, storage_key)) {
SetError(ModelError(FROM_HERE, "Failed to clear entity metadata."));
}
}
const SyncMetadataStore*
SyncMetadataStoreChangeList::GetMetadataStoreForTesting() const {
return store_;
}
void SyncMetadataStoreChangeList::SetError(ModelError error) {
if (!error_encountered_) {
error_encountered_ = true;
error_callback_.Run(error);
}
}
} // namespace syncer
|