Index: sync/api/metadata_change_list.h |
diff --git a/sync/api/metadata_change_list.h b/sync/api/metadata_change_list.h |
index e4435a83f386f75dc8ad380d29b6ae9854899b18..a8c0d95e3aeb730e26f7e9f73e0fcba647697c06 100644 |
--- a/sync/api/metadata_change_list.h |
+++ b/sync/api/metadata_change_list.h |
@@ -5,15 +5,45 @@ |
#ifndef SYNC_API_METADATA_CHANGE_LIST_H_ |
#define SYNC_API_METADATA_CHANGE_LIST_H_ |
+#include <string> |
+ |
#include "sync/base/sync_export.h" |
+namespace sync_pb { |
+class EntityMetadata; |
+} // namespace sync_pb |
+ |
namespace syncer_v2 { |
+struct DataTypeState; |
// Interface used by the processor and service to communicate about metadata. |
+// The purpose of the interface is to record changes to data type global and |
+// per entity metadata for the purpose of propagating changes to the datatype |
+// specific storage implementation. |
+// The implementation of the interface is supposed to keep the record of all |
+// updated / deleted metadata records and provide a mechanism to enumerate |
+// them. If there are multiple UpdateMetadata / ClearMetadata calls made for the |
+// same metadata record the last one is supposed to win. |
class SYNC_EXPORT MetadataChangeList { |
public: |
MetadataChangeList() {} |
virtual ~MetadataChangeList() {} |
+ |
+ // Requests DataTypeState to be updated in the storage. |
+ virtual void UpdateDataTypeState(const DataTypeState& data_type_state) = 0; |
+ |
+ // Requests DataTypeState to be cleared from the storage. |
+ virtual void ClearDataTypeState() = 0; |
+ |
+ // Requests metadata entry to be updated in the storage. |
+ // Please note that the update might contain a deleted entry if |
+ // metadata.is_deleted() is true (as opposed to clearing the entry from the |
+ // storage completely by calling the Clear method). |
+ virtual void UpdateMetadata(const std::string& client_tag, |
+ const sync_pb::EntityMetadata& metadata) = 0; |
+ |
+ // Requests metadata entry to be cleared from the storage. |
+ virtual void ClearMetadata(const std::string& client_tag) = 0; |
}; |
} // namespace syncer_v2 |