blob: 92a4a66e1262518b9f1728b4a42373b7c6bdf965 [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.
#ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_SYNC_SERVICE_H_
#define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_SYNC_SERVICE_H_
#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 sync_bookmarks {
class BookmarkModelTypeProcessor;
// This service owns the BookmarkModelTypeProcessor.
class BookmarkSyncService : public KeyedService {
public:
// |bookmark_undo_service| must not be null and must outlive this object.
explicit BookmarkSyncService(BookmarkUndoService* bookmark_undo_service);
// KeyedService implemenation.
~BookmarkSyncService() override;
void Shutdown() 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.
virtual base::WeakPtr<syncer::ModelTypeControllerDelegate>
GetBookmarkSyncControllerDelegateOnUIThread();
private:
// BookmarkModelTypeProcessor handles communications between sync engine and
// BookmarkModel/HistoryService.
std::unique_ptr<sync_bookmarks::BookmarkModelTypeProcessor>
bookmark_model_type_processor_;
DISALLOW_COPY_AND_ASSIGN(BookmarkSyncService);
};
} // namespace sync_bookmarks
#endif // COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_SYNC_SERVICE_H_