// Copyright 2015 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 IOS_CHROME_BROWSER_HISTORY_HISTORY_CLIENT_IMPL_H_ #define IOS_CHROME_BROWSER_HISTORY_HISTORY_CLIENT_IMPL_H_ #include <set> #include "base/callback_forward.h" #include "base/callback_list.h" #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "components/bookmarks/browser/base_bookmark_model_observer.h" #include "components/history/core/browser/history_client.h" class GURL; namespace bookmarks { class BookmarkModel; class BookmarkNode; } class HistoryClientImpl : public history::HistoryClient, public bookmarks::BaseBookmarkModelObserver { public: explicit HistoryClientImpl(bookmarks::BookmarkModel* bookmark_model); ~HistoryClientImpl() override; private: // history::HistoryClient implementation. void OnHistoryServiceCreated( history::HistoryService* history_service) override; void Shutdown() override; bool CanAddURL(const GURL& url) override; void NotifyProfileError(sql::InitStatus init_status) override; scoped_ptr<history::HistoryBackendClient> CreateBackendClient() override; // bookmarks::BaseBookmarkModelObserver implementation. void BookmarkModelChanged() override; // bookmarks::BookmarkModelObserver implementation. void BookmarkNodeRemoved(bookmarks::BookmarkModel* model, const bookmarks::BookmarkNode* parent, int old_index, const bookmarks::BookmarkNode* node, const std::set<GURL>& no_longer_bookmarked) override; void BookmarkAllUserNodesRemoved(bookmarks::BookmarkModel* model, const std::set<GURL>& removed_urls) override; // BookmarkModel instance providing access to bookmarks. May be null during // testing but must outlive HistoryClientImpl if non-null. bookmarks::BookmarkModel* bookmark_model_; bool is_bookmark_model_observer_; // Callback invoked when URLs are removed from BookmarkModel. base::Callback<void(const std::set<GURL>&)> on_bookmarks_removed_; // Subscription for notifications of changes to favicons. scoped_ptr<base::CallbackList<void(const std::set<GURL>&, const GURL&)>::Subscription> favicons_changed_subscription_; DISALLOW_COPY_AND_ASSIGN(HistoryClientImpl); }; #endif // IOS_CHROME_BROWSER_HISTORY_HISTORY_CLIENT_IMPL_H_