chromium/components/power_bookmarks/core/power_bookmark_service.h

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_POWER_BOOKMARKS_CORE_POWER_BOOKMARK_SERVICE_H_
#define COMPONENTS_POWER_BOOKMARKS_CORE_POWER_BOOKMARK_SERVICE_H_

#include <memory>
#include <vector>

#include "base/files/file_path.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/sequence_checker.h"
#include "base/task/sequenced_task_runner.h"
#include "base/threading/sequence_bound.h"
#include "base/uuid.h"
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/power_bookmarks/common/power_bookmark_observer.h"
#include "components/sync/protocol/power_bookmark_specifics.pb.h"

namespace bookmarks {
class BookmarkModel;
}  // namespace bookmarks

namespace syncer {
class DataTypeControllerDelegate;
}  // namespace syncer

namespace power_bookmarks {

class Power;
class PowerOverview;
class PowerBookmarkDataProvider;
class PowerBookmarkBackend;
struct SearchParams;

PowersCallback;
PowerOverviewsCallback;
SuccessCallback;

// Provides a public API surface for power bookmarks. The storage lives on a
// background thread, all results from there require a callback.
// Callbacks for the result of create/update/delete calls are wrapped so that
// observers can be notified when any changes to the storage occur.
class PowerBookmarkService : public KeyedService,
                             public bookmarks::BaseBookmarkModelObserver,
                             public PowerBookmarkObserver {};

}  // namespace power_bookmarks

#endif  // COMPONENTS_POWER_BOOKMARKS_CORE_POWER_BOOKMARK_SERVICE_H_