summaryrefslogtreecommitdiffstats
path: root/sync/internal_api
diff options
context:
space:
mode:
authormaxbogue <maxbogue@chromium.org>2016-02-17 13:08:30 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-17 21:10:06 +0000
commit8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22 (patch)
tree6651e108c37ad6e90159835a99aa40bfdb72895b /sync/internal_api
parent2600fd7ce8de2bbb1ec1e02bbbb0558ff8d4782d (diff)
downloadchromium_src-8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22.zip
chromium_src-8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22.tar.gz
chromium_src-8e0e9fe76dd49a8aa6d2db410e485a4265cc0d22.tar.bz2
[Sync] USS: Implement SimpleMetadataChangeList.
BUG= Review URL: https://codereview.chromium.org/1691013002 Cr-Commit-Position: refs/heads/master@{#375978}
Diffstat (limited to 'sync/internal_api')
-rw-r--r--sync/internal_api/public/simple_metadata_change_list.cc28
-rw-r--r--sync/internal_api/public/simple_metadata_change_list.h28
2 files changed, 48 insertions, 8 deletions
diff --git a/sync/internal_api/public/simple_metadata_change_list.cc b/sync/internal_api/public/simple_metadata_change_list.cc
index 999eda6..e358dda 100644
--- a/sync/internal_api/public/simple_metadata_change_list.cc
+++ b/sync/internal_api/public/simple_metadata_change_list.cc
@@ -12,24 +12,38 @@ SimpleMetadataChangeList::~SimpleMetadataChangeList() {}
void SimpleMetadataChangeList::UpdateDataTypeState(
const sync_pb::DataTypeState& data_type_state) {
- // TODO(skym): Implementation.
+ state_change_.reset(new DataTypeStateChange{UPDATE, data_type_state});
+}
+
+void SimpleMetadataChangeList::ClearDataTypeState() {
+ state_change_.reset(new DataTypeStateChange{CLEAR});
}
void SimpleMetadataChangeList::UpdateMetadata(
const std::string& client_tag,
const sync_pb::EntityMetadata& metadata) {
- // TODO(skym): Implementation.
+ metadata_changes_[client_tag] = {UPDATE, metadata};
}
-void SimpleMetadataChangeList::ClearDataTypeState() {
- // TODO(skym): Implementation.
+void SimpleMetadataChangeList::ClearMetadata(const std::string& client_tag) {
+ metadata_changes_[client_tag] = {CLEAR, sync_pb::EntityMetadata()};
}
-void SimpleMetadataChangeList::ClearMetadata(const std::string& client_tag) {
- // TODO(skym): Implementation.
+const SimpleMetadataChangeList::MetadataChanges&
+SimpleMetadataChangeList::GetMetadataChanges() const {
+ return metadata_changes_;
+}
+
+bool SimpleMetadataChangeList::HasDataTypeStateChange() const {
+ return state_change_.get() != nullptr;
+}
+
+const SimpleMetadataChangeList::DataTypeStateChange&
+SimpleMetadataChangeList::GetDataTypeStateChange() const {
+ return *state_change_.get();
}
-void SimpleMetadataChangeList::TranfserChanges(
+void SimpleMetadataChangeList::TransferChanges(
ModelTypeStore* store,
ModelTypeStore::WriteBatch* write_batch) {
// TODO(skym): Implementation.
diff --git a/sync/internal_api/public/simple_metadata_change_list.h b/sync/internal_api/public/simple_metadata_change_list.h
index f302b12..9daaee4 100644
--- a/sync/internal_api/public/simple_metadata_change_list.h
+++ b/sync/internal_api/public/simple_metadata_change_list.h
@@ -5,11 +5,15 @@
#ifndef SYNC_INTERNAL_API_PUBLIC_SIMPLE_METADATA_CHANGE_LIST_H_
#define SYNC_INTERNAL_API_PUBLIC_SIMPLE_METADATA_CHANGE_LIST_H_
+#include <map>
#include <string>
#include "sync/api/metadata_change_list.h"
#include "sync/api/model_type_store.h"
#include "sync/base/sync_export.h"
+#include "sync/internal_api/public/non_blocking_sync_common.h"
+#include "sync/protocol/data_type_state.pb.h"
+#include "sync/protocol/entity_metadata.pb.h"
namespace syncer_v2 {
@@ -18,6 +22,20 @@ namespace syncer_v2 {
// requested transfers them to the store/write batch.
class SYNC_EXPORT SimpleMetadataChangeList : public MetadataChangeList {
public:
+ enum ChangeType { UPDATE, CLEAR };
+
+ struct MetadataChange {
+ ChangeType type;
+ sync_pb::EntityMetadata metadata;
+ };
+
+ struct DataTypeStateChange {
+ ChangeType type;
+ sync_pb::DataTypeState state;
+ };
+
+ typedef std::map<std::string, MetadataChange> MetadataChanges;
+
SimpleMetadataChangeList();
~SimpleMetadataChangeList() override;
@@ -28,11 +46,19 @@ class SYNC_EXPORT SimpleMetadataChangeList : public MetadataChangeList {
const sync_pb::EntityMetadata& metadata) override;
void ClearMetadata(const std::string& client_tag) override;
+ const MetadataChanges& GetMetadataChanges() const;
+ bool HasDataTypeStateChange() const;
+ const DataTypeStateChange& GetDataTypeStateChange() const;
+
// Moves all currently accumulated changes into the write batch, clear out
// local copies. Calling this multiple times will work, but should not be
// necessary.
- void TranfserChanges(ModelTypeStore* store,
+ void TransferChanges(ModelTypeStore* store,
ModelTypeStore::WriteBatch* write_batch);
+
+ private:
+ MetadataChanges metadata_changes_;
+ scoped_ptr<DataTypeStateChange> state_change_;
};
} // namespace syncer_v2