Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Side by Side Diff: sync/internal_api/public/simple_metadata_change_list.cc

Issue 2130453004: [Sync] Move //sync to //components/sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "sync/internal_api/public/simple_metadata_change_list.h"
6
7 namespace syncer_v2 {
8
9 SimpleMetadataChangeList::SimpleMetadataChangeList() {}
10
11 SimpleMetadataChangeList::~SimpleMetadataChangeList() {}
12
13 void SimpleMetadataChangeList::UpdateDataTypeState(
14 const sync_pb::DataTypeState& data_type_state) {
15 state_change_.reset(new DataTypeStateChange{UPDATE, data_type_state});
16 }
17
18 void SimpleMetadataChangeList::ClearDataTypeState() {
19 state_change_.reset(new DataTypeStateChange{CLEAR});
20 }
21
22 void SimpleMetadataChangeList::UpdateMetadata(
23 const std::string& client_tag,
24 const sync_pb::EntityMetadata& metadata) {
25 metadata_changes_[client_tag] = {UPDATE, metadata};
26 }
27
28 void SimpleMetadataChangeList::ClearMetadata(const std::string& client_tag) {
29 metadata_changes_[client_tag] = {CLEAR, sync_pb::EntityMetadata()};
30 }
31
32 const SimpleMetadataChangeList::MetadataChanges&
33 SimpleMetadataChangeList::GetMetadataChanges() const {
34 return metadata_changes_;
35 }
36
37 bool SimpleMetadataChangeList::HasDataTypeStateChange() const {
38 return state_change_.get() != nullptr;
39 }
40
41 const SimpleMetadataChangeList::DataTypeStateChange&
42 SimpleMetadataChangeList::GetDataTypeStateChange() const {
43 return *state_change_.get();
44 }
45
46 void SimpleMetadataChangeList::TransferChanges(
47 ModelTypeStore* store,
48 ModelTypeStore::WriteBatch* write_batch) {
49 DCHECK(write_batch);
50 DCHECK(store);
51 for (const auto& pair : metadata_changes_) {
52 const std::string& key = pair.first;
53 const MetadataChange& change = pair.second;
54 switch (change.type) {
55 case UPDATE:
56 store->WriteMetadata(write_batch, key,
57 change.metadata.SerializeAsString());
58 break;
59 case CLEAR:
60 store->DeleteMetadata(write_batch, key);
61 break;
62 }
63 }
64 metadata_changes_.clear();
65 if (HasDataTypeStateChange()) {
66 switch (state_change_->type) {
67 case UPDATE:
68 store->WriteGlobalMetadata(write_batch,
69 state_change_->state.SerializeAsString());
70 break;
71 case CLEAR:
72 store->DeleteGlobalMetadata(write_batch);
73 break;
74 }
75 state_change_.reset();
76 }
77 }
78
79 } // namespace syncer_v2
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698