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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/api/sync_data.cc
diff --git a/chrome/browser/sync/api/sync_data.cc b/chrome/browser/sync/api/sync_data.cc
index d1cc86cb0d3b62e8050e874858c508234d7ed74f..ad56553a5d151c69d0e523cffe0985314e509759 100644
--- a/chrome/browser/sync/api/sync_data.cc
+++ b/chrome/browser/sync/api/sync_data.cc
@@ -6,34 +6,43 @@
#include "chrome/browser/sync/protocol/sync.pb.h"
-SyncData::SharedSyncEntity::SharedSyncEntity(
- sync_pb::SyncEntity* sync_entity)
- : sync_entity_(new sync_pb::SyncEntity()){
- sync_entity_->Swap(sync_entity);
+void SyncData::ImmutableSyncEntityTraits::InitializeWrapper(
+ Wrapper* wrapper) {
+ *wrapper = new sync_pb::SyncEntity();
}
-const sync_pb::SyncEntity& SyncData::SharedSyncEntity::sync_entity() const {
- return *sync_entity_;
+void SyncData::ImmutableSyncEntityTraits::DestroyWrapper(
+ Wrapper* wrapper) {
+ delete *wrapper;
}
-SyncData::SharedSyncEntity::~SharedSyncEntity() {}
-
+const sync_pb::SyncEntity& SyncData::ImmutableSyncEntityTraits::Unwrap(
+ const Wrapper& wrapper) {
+ return *wrapper;
+}
-SyncData::SyncData()
- : is_local_(true) {
+sync_pb::SyncEntity* SyncData::ImmutableSyncEntityTraits::UnwrapMutable(
+ Wrapper* wrapper) {
+ return *wrapper;
}
-SyncData::~SyncData() {
+void SyncData::ImmutableSyncEntityTraits::Swap(sync_pb::SyncEntity* t1,
+ sync_pb::SyncEntity* t2) {
+ t1->Swap(t2);
}
+SyncData::SyncData() : is_valid_(false), is_local_(true) {}
+
+SyncData::SyncData(sync_pb::SyncEntity* entity, bool is_local)
+ : is_valid_(true), is_local_(is_local), immutable_entity_(entity) {}
+
+SyncData::~SyncData() {}
+
// Static.
SyncData SyncData::CreateLocalData(const std::string& sync_tag) {
sync_pb::SyncEntity entity;
entity.set_client_defined_unique_tag(sync_tag);
- SyncData a;
- a.shared_entity_ = new SharedSyncEntity(&entity);
- a.is_local_ = true;
- return a;
+ return SyncData(&entity, true);
}
// Static.
@@ -45,10 +54,7 @@ SyncData SyncData::CreateLocalData(
entity.set_client_defined_unique_tag(sync_tag);
entity.set_non_unique_name(non_unique_title);
entity.mutable_specifics()->CopyFrom(specifics);
- SyncData a;
- a.shared_entity_ = new SharedSyncEntity(&entity);
- a.is_local_ = true;
- return a;
+ return SyncData(&entity, true);
}
// Static.
@@ -64,18 +70,15 @@ SyncData SyncData::CreateRemoteData(
const sync_pb::EntitySpecifics& specifics) {
sync_pb::SyncEntity entity;
entity.mutable_specifics()->CopyFrom(specifics);
- SyncData a;
- a.shared_entity_ = new SharedSyncEntity(&entity);
- a.is_local_ = false;
- return a;
+ return SyncData(&entity, false);
}
bool SyncData::IsValid() const {
- return (shared_entity_.get() != NULL);
+ return is_valid_;
}
const sync_pb::EntitySpecifics& SyncData::GetSpecifics() const {
- return shared_entity_->sync_entity().specifics();
+ return immutable_entity_.Get().specifics();
}
syncable::ModelType SyncData::GetDataType() const {
@@ -84,13 +87,13 @@ syncable::ModelType SyncData::GetDataType() const {
const std::string& SyncData::GetTag() const {
DCHECK(is_local_);
- return shared_entity_->sync_entity().client_defined_unique_tag();
+ return immutable_entity_.Get().client_defined_unique_tag();
}
const std::string& SyncData::GetTitle() const {
// TODO(zea): set this for data coming from the syncer too.
- DCHECK(shared_entity_->sync_entity().has_non_unique_name());
- return shared_entity_->sync_entity().non_unique_name();
+ DCHECK(immutable_entity_.Get().has_non_unique_name());
+ return immutable_entity_.Get().non_unique_name();
}
bool SyncData::IsLocal() const {
« 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