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

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

Issue 2473553003: [Sync] Improve MetadataChangeList usage for types using ModelTypeStore. (Closed)
Patch Set: Fix comments + protected constructor. 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
(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 "components/sync/model/simple_metadata_change_list.h"
6
7 namespace syncer {
8
9 SimpleMetadataChangeList::SimpleMetadataChangeList() {}
10
11 SimpleMetadataChangeList::~SimpleMetadataChangeList() {}
12
13 void SimpleMetadataChangeList::UpdateModelTypeState(
14 const sync_pb::ModelTypeState& model_type_state) {
15 state_change_.reset(new ModelTypeStateChange{UPDATE, model_type_state});
16 }
17
18 void SimpleMetadataChangeList::ClearModelTypeState() {
19 state_change_.reset(new ModelTypeStateChange{CLEAR});
20 }
21
22 void SimpleMetadataChangeList::UpdateMetadata(
23 const std::string& storage_key,
24 const sync_pb::EntityMetadata& metadata) {
25 metadata_changes_[storage_key] = {UPDATE, metadata};
26 }
27
28 void SimpleMetadataChangeList::ClearMetadata(const std::string& storage_key) {
29 metadata_changes_[storage_key] = {CLEAR, sync_pb::EntityMetadata()};
30 }
31
32 const SimpleMetadataChangeList::MetadataChanges&
33 SimpleMetadataChangeList::GetMetadataChanges() const {
34 return metadata_changes_;
35 }
36
37 bool SimpleMetadataChangeList::HasModelTypeStateChange() const {
38 return state_change_.get() != nullptr;
39 }
40
41 const SimpleMetadataChangeList::ModelTypeStateChange&
42 SimpleMetadataChangeList::GetModelTypeStateChange() 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& storage_key = pair.first;
53 const MetadataChange& change = pair.second;
54 switch (change.type) {
55 case UPDATE:
56 store->WriteMetadata(write_batch, storage_key,
57 change.metadata.SerializeAsString());
58 break;
59 case CLEAR:
60 store->DeleteMetadata(write_batch, storage_key);
61 break;
62 }
63 }
64 metadata_changes_.clear();
65 if (HasModelTypeStateChange()) {
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
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