blob: 4a06f7d8f0b36b55f9659633c1f8fb02c5d0ef0c [file] [log] [blame]
// Copyright 2017 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 <string>
#include "components/sync/base/model_type.h"
namespace sync_pb {
class EntityMetadata;
class ModelTypeState;
} // namespace sync_pb
namespace syncer {
// SyncMetadataStore defines interface implemented by model types for persisting
// sync metadata and datatype state. It allows model type to use common
// implementation of MetadataChangeList (SyncMetadataStoreChangeList) instead of
// implementing their own.
// Model type in implementation of ModelTypeSyncBridge::CreateMetadataChangeList
// should create instance of SyncMetadataStoreChangeList passing pointer to
// SyncMetadataStore to its constructor.
// Implementations of SyncMetadataStore methods should support add/update/delete
// metadata in model type specific sync metadata storage.
class SyncMetadataStore {
SyncMetadataStore() {}
virtual ~SyncMetadataStore() {}
// Update the metadata row for |model_type|, keyed by |storage_key|, to
// contain the contents of |metadata|.
// Return true on success.
virtual bool UpdateSyncMetadata(syncer::ModelType model_type,
const std::string& storage_key,
const sync_pb::EntityMetadata& metadata) = 0;
// Remove the metadata row of type |model_type| keyed by |storage_key|.
// Return true on success.
virtual bool ClearSyncMetadata(syncer::ModelType model_type,
const std::string& storage_key) = 0;
// Update the stored sync state for the |model_type|.
// Return true on success.
virtual bool UpdateModelTypeState(
syncer::ModelType model_type,
const sync_pb::ModelTypeState& model_type_state) = 0;
// Clear the stored sync state for |model_type|.
// Return true on success.
virtual bool ClearModelTypeState(syncer::ModelType model_type) = 0;
} // namespace syncer