// Copyright 2015 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. #ifndef SYNC_API_METADATA_CHANGE_LIST_H_ #define SYNC_API_METADATA_CHANGE_LIST_H_ #include #include "sync/base/sync_export.h" namespace sync_pb { class DataTypeState; class EntityMetadata; } // namespace sync_pb namespace syncer_v2 { // 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 sync_pb::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 #endif // SYNC_API_METADATA_CHANGE_LIST_H_