blob: f3382972fd079a577648c25cfd8033bd18a4545d [file] [log] [blame]
// Copyright 2018 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 <memory>
#include <string>
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "components/keyed_service/core/keyed_service.h"
class BookmarkUndoService;
namespace syncer {
class ModelTypeControllerDelegate;
namespace bookmarks {
class BookmarkModel;
namespace favicon {
class FaviconService;
namespace sync_bookmarks {
class BookmarkModelTypeProcessor;
// This service owns the BookmarkModelTypeProcessor.
class BookmarkSyncService : public KeyedService {
// |bookmark_undo_service| must not be null and must outlive this object.
explicit BookmarkSyncService(BookmarkUndoService* bookmark_undo_service);
// KeyedService implemenation.
~BookmarkSyncService() override;
// Analgous to Encode/Decode methods in BookmarkClient.
std::string EncodeBookmarkSyncMetadata();
void DecodeBookmarkSyncMetadata(
const std::string& metadata_str,
const base::RepeatingClosure& schedule_save_closure,
bookmarks::BookmarkModel* model);
// Returns the ModelTypeControllerDelegate for syncer::BOOKMARKS.
// |favicon_service| is the favicon service used when processing updates in
// the underlying processor. It could have been a separate a setter in
// BookmarkSyncService instead of passing it as a parameter to
// GetBookmarkSyncControllerDelegate(). However, this would incur the risk of
// overlooking setting it. Therefore, it has been added as a parameter to the
// GetBookmarkSyncControllerDelegate() in order to gauarantee it will be set
// before the processor starts receiving updates.
virtual base::WeakPtr<syncer::ModelTypeControllerDelegate>
GetBookmarkSyncControllerDelegate(favicon::FaviconService* favicon_service);
// BookmarkModelTypeProcessor handles communications between sync engine and
// BookmarkModel/HistoryService.
} // namespace sync_bookmarks