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 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3cdf340acf61c425cabdfcf974145651655967a0 |
--- /dev/null |
+++ b/chrome/browser/sync/api/sync_data.cc |
@@ -0,0 +1,90 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/sync/api/sync_data.h" |
+ |
+#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); |
+} |
+ |
+const sync_pb::SyncEntity& SyncData::SharedSyncEntity::sync_entity() const { |
+ return *sync_entity_; |
+} |
+ |
+SyncData::SharedSyncEntity::~SharedSyncEntity() {} |
+ |
+ |
+SyncData::SyncData() |
+ : is_local_(true) { |
+} |
+ |
+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; |
+} |
+ |
+// Static. |
+SyncData SyncData::CreateLocalData( |
+ const std::string& sync_tag, |
+ const sync_pb::EntitySpecifics& specifics) { |
+ sync_pb::SyncEntity entity; |
+ entity.set_client_defined_unique_tag(sync_tag); |
+ entity.mutable_specifics()->CopyFrom(specifics); |
+ SyncData a; |
+ a.shared_entity_ = new SharedSyncEntity(&entity); |
+ a.is_local_ = true; |
+ return a; |
+} |
+ |
+// Static. |
+SyncData SyncData::CreateRemoteData(const sync_pb::SyncEntity& entity) { |
+ // TODO(zea): eventually use this for building changes from the original sync |
+ // entities if possible. |
+ NOTIMPLEMENTED(); |
+ return SyncData(); |
+} |
+ |
+// Static. |
+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; |
+} |
+ |
+bool SyncData::IsValid() const { |
+ return (shared_entity_.get() != NULL); |
+} |
+ |
+const sync_pb::EntitySpecifics& SyncData::GetSpecifics() const { |
+ return shared_entity_->sync_entity().specifics(); |
+} |
+ |
+syncable::ModelType SyncData::GetDataType() const { |
+ return syncable::GetModelTypeFromSpecifics(GetSpecifics()); |
+} |
+ |
+const std::string& SyncData::GetTag() const { |
+ DCHECK(is_local_); |
+ return shared_entity_->sync_entity().client_defined_unique_tag(); |
+} |
+ |
+bool SyncData::IsLocal() const { |
+ return is_local_; |
+} |