blob: ad960d2e13627b95844bbdae2afbb779545dd4f8 [file] [log] [blame]
// Copyright 2016 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 COMPONENTS_READING_LIST_CORE_READING_LIST_STORE_DELEGATE_H_
#define COMPONENTS_READING_LIST_CORE_READING_LIST_STORE_DELEGATE_H_
#include <map>
#include "base/macros.h"
class ReadingListEntry;
// The delegate to handle callbacks from the ReadingListStore.
class ReadingListStoreDelegate {
public:
using ReadingListEntries = std::map<GURL, ReadingListEntry>;
// These three methods handle callbacks from a ReadingListStore.
// This method is called when the local store is loaded. |entries| contains
// the ReadingListEntry present on the device before sync starts.
virtual void StoreLoaded(std::unique_ptr<ReadingListEntries> entries) = 0;
// Handle sync events.
// Called to add a new entry to the model.
// |entry| must not already exist in the model.
virtual void SyncAddEntry(std::unique_ptr<ReadingListEntry> entry) = 0;
// Called to merge a sync entry with a local entry in the model.
// A local entry with the same URL must exist in the local store and have an
// older UpdateTime.
// Return a pointer to the merged entry.
virtual ReadingListEntry* SyncMergeEntry(
std::unique_ptr<ReadingListEntry> entry) = 0;
// Called to remove an entry to the model.
virtual void SyncRemoveEntry(const GURL& url) = 0;
protected:
ReadingListStoreDelegate() {}
virtual ~ReadingListStoreDelegate() {}
private:
DISALLOW_COPY_AND_ASSIGN(ReadingListStoreDelegate);
};
#endif // COMPONENTS_READING_LIST_CORE_READING_LIST_STORE_DELEGATE_H_