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

Side by Side Diff: chrome/browser/sync/api/sync_data.cc

Issue 7904021: [Sync] Rework SharedValue<T> into Immutable<T> (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/api/sync_data.h ('k') | chrome/browser/sync/js/js_arg_list.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/sync/api/sync_data.h" 5 #include "chrome/browser/sync/api/sync_data.h"
6 6
7 #include "chrome/browser/sync/protocol/sync.pb.h" 7 #include "chrome/browser/sync/protocol/sync.pb.h"
8 8
9 SyncData::SharedSyncEntity::SharedSyncEntity( 9 void SyncData::ImmutableSyncEntityTraits::InitializeWrapper(
10 sync_pb::SyncEntity* sync_entity) 10 Wrapper* wrapper) {
11 : sync_entity_(new sync_pb::SyncEntity()){ 11 *wrapper = new sync_pb::SyncEntity();
12 sync_entity_->Swap(sync_entity);
13 } 12 }
14 13
15 const sync_pb::SyncEntity& SyncData::SharedSyncEntity::sync_entity() const { 14 void SyncData::ImmutableSyncEntityTraits::DestroyWrapper(
16 return *sync_entity_; 15 Wrapper* wrapper) {
16 delete *wrapper;
17 } 17 }
18 18
19 SyncData::SharedSyncEntity::~SharedSyncEntity() {} 19 const sync_pb::SyncEntity& SyncData::ImmutableSyncEntityTraits::Unwrap(
20 20 const Wrapper& wrapper) {
21 21 return *wrapper;
22 SyncData::SyncData()
23 : is_local_(true) {
24 } 22 }
25 23
26 SyncData::~SyncData() { 24 sync_pb::SyncEntity* SyncData::ImmutableSyncEntityTraits::UnwrapMutable(
25 Wrapper* wrapper) {
26 return *wrapper;
27 } 27 }
28 28
29 void SyncData::ImmutableSyncEntityTraits::Swap(sync_pb::SyncEntity* t1,
30 sync_pb::SyncEntity* t2) {
31 t1->Swap(t2);
32 }
33
34 SyncData::SyncData() : is_valid_(false), is_local_(true) {}
35
36 SyncData::SyncData(sync_pb::SyncEntity* entity, bool is_local)
37 : is_valid_(true), is_local_(is_local), immutable_entity_(entity) {}
38
39 SyncData::~SyncData() {}
40
29 // Static. 41 // Static.
30 SyncData SyncData::CreateLocalData(const std::string& sync_tag) { 42 SyncData SyncData::CreateLocalData(const std::string& sync_tag) {
31 sync_pb::SyncEntity entity; 43 sync_pb::SyncEntity entity;
32 entity.set_client_defined_unique_tag(sync_tag); 44 entity.set_client_defined_unique_tag(sync_tag);
33 SyncData a; 45 return SyncData(&entity, true);
34 a.shared_entity_ = new SharedSyncEntity(&entity);
35 a.is_local_ = true;
36 return a;
37 } 46 }
38 47
39 // Static. 48 // Static.
40 SyncData SyncData::CreateLocalData( 49 SyncData SyncData::CreateLocalData(
41 const std::string& sync_tag, 50 const std::string& sync_tag,
42 const std::string& non_unique_title, 51 const std::string& non_unique_title,
43 const sync_pb::EntitySpecifics& specifics) { 52 const sync_pb::EntitySpecifics& specifics) {
44 sync_pb::SyncEntity entity; 53 sync_pb::SyncEntity entity;
45 entity.set_client_defined_unique_tag(sync_tag); 54 entity.set_client_defined_unique_tag(sync_tag);
46 entity.set_non_unique_name(non_unique_title); 55 entity.set_non_unique_name(non_unique_title);
47 entity.mutable_specifics()->CopyFrom(specifics); 56 entity.mutable_specifics()->CopyFrom(specifics);
48 SyncData a; 57 return SyncData(&entity, true);
49 a.shared_entity_ = new SharedSyncEntity(&entity);
50 a.is_local_ = true;
51 return a;
52 } 58 }
53 59
54 // Static. 60 // Static.
55 SyncData SyncData::CreateRemoteData(const sync_pb::SyncEntity& entity) { 61 SyncData SyncData::CreateRemoteData(const sync_pb::SyncEntity& entity) {
56 // TODO(zea): eventually use this for building changes from the original sync 62 // TODO(zea): eventually use this for building changes from the original sync
57 // entities if possible. 63 // entities if possible.
58 NOTIMPLEMENTED(); 64 NOTIMPLEMENTED();
59 return SyncData(); 65 return SyncData();
60 } 66 }
61 67
62 // Static. 68 // Static.
63 SyncData SyncData::CreateRemoteData( 69 SyncData SyncData::CreateRemoteData(
64 const sync_pb::EntitySpecifics& specifics) { 70 const sync_pb::EntitySpecifics& specifics) {
65 sync_pb::SyncEntity entity; 71 sync_pb::SyncEntity entity;
66 entity.mutable_specifics()->CopyFrom(specifics); 72 entity.mutable_specifics()->CopyFrom(specifics);
67 SyncData a; 73 return SyncData(&entity, false);
68 a.shared_entity_ = new SharedSyncEntity(&entity);
69 a.is_local_ = false;
70 return a;
71 } 74 }
72 75
73 bool SyncData::IsValid() const { 76 bool SyncData::IsValid() const {
74 return (shared_entity_.get() != NULL); 77 return is_valid_;
75 } 78 }
76 79
77 const sync_pb::EntitySpecifics& SyncData::GetSpecifics() const { 80 const sync_pb::EntitySpecifics& SyncData::GetSpecifics() const {
78 return shared_entity_->sync_entity().specifics(); 81 return immutable_entity_.Get().specifics();
79 } 82 }
80 83
81 syncable::ModelType SyncData::GetDataType() const { 84 syncable::ModelType SyncData::GetDataType() const {
82 return syncable::GetModelTypeFromSpecifics(GetSpecifics()); 85 return syncable::GetModelTypeFromSpecifics(GetSpecifics());
83 } 86 }
84 87
85 const std::string& SyncData::GetTag() const { 88 const std::string& SyncData::GetTag() const {
86 DCHECK(is_local_); 89 DCHECK(is_local_);
87 return shared_entity_->sync_entity().client_defined_unique_tag(); 90 return immutable_entity_.Get().client_defined_unique_tag();
88 } 91 }
89 92
90 const std::string& SyncData::GetTitle() const { 93 const std::string& SyncData::GetTitle() const {
91 // TODO(zea): set this for data coming from the syncer too. 94 // TODO(zea): set this for data coming from the syncer too.
92 DCHECK(shared_entity_->sync_entity().has_non_unique_name()); 95 DCHECK(immutable_entity_.Get().has_non_unique_name());
93 return shared_entity_->sync_entity().non_unique_name(); 96 return immutable_entity_.Get().non_unique_name();
94 } 97 }
95 98
96 bool SyncData::IsLocal() const { 99 bool SyncData::IsLocal() const {
97 return is_local_; 100 return is_local_;
98 } 101 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/api/sync_data.h ('k') | chrome/browser/sync/js/js_arg_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698