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

Side by Side Diff: components/sync/model/simple_metadata_change_list.cc

Issue 2470953002: [Sync] Adding a passthrough MetadataChangeList implementation. (Closed)
Patch Set: Last update for Max. Created 4 years, 1 month 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/sync/model/simple_metadata_change_list.h" 5 #include "components/sync/model/simple_metadata_change_list.h"
6 6
7 namespace syncer { 7 namespace syncer {
8 8
9 SimpleMetadataChangeList::SimpleMetadataChangeList() {} 9 SimpleMetadataChangeList::SimpleMetadataChangeList() {}
10 10
11 SimpleMetadataChangeList::~SimpleMetadataChangeList() {} 11 SimpleMetadataChangeList::~SimpleMetadataChangeList() {}
12 12
13 void SimpleMetadataChangeList::UpdateModelTypeState( 13 void SimpleMetadataChangeList::UpdateModelTypeState(
14 const sync_pb::ModelTypeState& model_type_state) { 14 const sync_pb::ModelTypeState& model_type_state) {
15 state_change_.reset(new ModelTypeStateChange{UPDATE, model_type_state}); 15 state_change_.reset(new ModelTypeStateChange{UPDATE, model_type_state});
16 } 16 }
17 17
18 void SimpleMetadataChangeList::ClearModelTypeState() { 18 void SimpleMetadataChangeList::ClearModelTypeState() {
19 state_change_.reset(new ModelTypeStateChange{CLEAR}); 19 state_change_.reset(new ModelTypeStateChange{CLEAR});
20 } 20 }
21 21
22 void SimpleMetadataChangeList::UpdateMetadata( 22 void SimpleMetadataChangeList::UpdateMetadata(
23 const std::string& client_tag, 23 const std::string& storage_key,
24 const sync_pb::EntityMetadata& metadata) { 24 const sync_pb::EntityMetadata& metadata) {
25 metadata_changes_[client_tag] = {UPDATE, metadata}; 25 metadata_changes_[storage_key] = {UPDATE, metadata};
26 } 26 }
27 27
28 void SimpleMetadataChangeList::ClearMetadata(const std::string& client_tag) { 28 void SimpleMetadataChangeList::ClearMetadata(const std::string& storage_key) {
29 metadata_changes_[client_tag] = {CLEAR, sync_pb::EntityMetadata()}; 29 metadata_changes_[storage_key] = {CLEAR, sync_pb::EntityMetadata()};
30 } 30 }
31 31
32 const SimpleMetadataChangeList::MetadataChanges& 32 const SimpleMetadataChangeList::MetadataChanges&
33 SimpleMetadataChangeList::GetMetadataChanges() const { 33 SimpleMetadataChangeList::GetMetadataChanges() const {
34 return metadata_changes_; 34 return metadata_changes_;
35 } 35 }
36 36
37 bool SimpleMetadataChangeList::HasModelTypeStateChange() const { 37 bool SimpleMetadataChangeList::HasModelTypeStateChange() const {
38 return state_change_.get() != nullptr; 38 return state_change_.get() != nullptr;
39 } 39 }
40 40
41 const SimpleMetadataChangeList::ModelTypeStateChange& 41 const SimpleMetadataChangeList::ModelTypeStateChange&
42 SimpleMetadataChangeList::GetModelTypeStateChange() const { 42 SimpleMetadataChangeList::GetModelTypeStateChange() const {
43 return *state_change_.get(); 43 return *state_change_.get();
44 } 44 }
45 45
46 void SimpleMetadataChangeList::TransferChanges( 46 void SimpleMetadataChangeList::TransferChanges(
47 ModelTypeStore* store, 47 ModelTypeStore* store,
48 ModelTypeStore::WriteBatch* write_batch) { 48 ModelTypeStore::WriteBatch* write_batch) {
49 DCHECK(write_batch); 49 DCHECK(write_batch);
50 DCHECK(store); 50 DCHECK(store);
51 for (const auto& pair : metadata_changes_) { 51 for (const auto& pair : metadata_changes_) {
52 const std::string& key = pair.first; 52 const std::string& storage_key = pair.first;
53 const MetadataChange& change = pair.second; 53 const MetadataChange& change = pair.second;
54 switch (change.type) { 54 switch (change.type) {
55 case UPDATE: 55 case UPDATE:
56 store->WriteMetadata(write_batch, key, 56 store->WriteMetadata(write_batch, storage_key,
57 change.metadata.SerializeAsString()); 57 change.metadata.SerializeAsString());
58 break; 58 break;
59 case CLEAR: 59 case CLEAR:
60 store->DeleteMetadata(write_batch, key); 60 store->DeleteMetadata(write_batch, storage_key);
61 break; 61 break;
62 } 62 }
63 } 63 }
64 metadata_changes_.clear(); 64 metadata_changes_.clear();
65 if (HasModelTypeStateChange()) { 65 if (HasModelTypeStateChange()) {
66 switch (state_change_->type) { 66 switch (state_change_->type) {
67 case UPDATE: 67 case UPDATE:
68 store->WriteGlobalMetadata(write_batch, 68 store->WriteGlobalMetadata(write_batch,
69 state_change_->state.SerializeAsString()); 69 state_change_->state.SerializeAsString());
70 break; 70 break;
71 case CLEAR: 71 case CLEAR:
72 store->DeleteGlobalMetadata(write_batch); 72 store->DeleteGlobalMetadata(write_batch);
73 break; 73 break;
74 } 74 }
75 state_change_.reset(); 75 state_change_.reset();
76 } 76 }
77 } 77 }
78 78
79 } // namespace syncer 79 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/model/simple_metadata_change_list.h ('k') | components/sync/model/simple_metadata_change_list_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698