| // 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 CHROME_BROWSER_OFFLINE_PAGES_OFFLINE_PAGE_BOOKMARK_OBSERVER_H_ |
| #define CHROME_BROWSER_OFFLINE_PAGES_OFFLINE_PAGE_BOOKMARK_OBSERVER_H_ |
| |
| #include "base/memory/weak_ptr.h" |
| #include "chrome/browser/offline_pages/offline_page_model_factory.h" |
| #include "components/bookmarks/browser/base_bookmark_model_observer.h" |
| #include "components/offline_pages/core/offline_page_types.h" |
| |
| class GURL; |
| |
| namespace bookmarks { |
| class BookmarkModel; |
| class BookmarkNode; |
| } |
| |
| namespace content { |
| class BrowserContext; |
| } |
| |
| namespace offline_pages { |
| |
| class OfflinePageBookmarkObserver |
| : public bookmarks::BaseBookmarkModelObserver { |
| public: |
| explicit OfflinePageBookmarkObserver(content::BrowserContext* context); |
| ~OfflinePageBookmarkObserver() override; |
| |
| // Implement bookmarks::OfflinePageBookmarkObserver |
| void BookmarkModelChanged() override; |
| void BookmarkNodeRemoved(bookmarks::BookmarkModel* model, |
| const bookmarks::BookmarkNode* parent, |
| int old_index, |
| const bookmarks::BookmarkNode* node, |
| const std::set<GURL>& removed_urls) override; |
| |
| private: |
| // Does work for actual deleting removed bookmark pages. |
| void DoDeleteRemovedBookmarkPages(const MultipleOfflineIdResult& offline_ids); |
| |
| // Callback for deleting removed bookmark pages. |
| void OnDeleteRemovedBookmarkPagesDone(DeletePageResult result); |
| |
| content::BrowserContext* context_; |
| |
| OfflinePageModel* offline_page_model_; |
| |
| base::WeakPtrFactory<OfflinePageBookmarkObserver> weak_ptr_factory_; |
| }; |
| } // namespace offline_pages |
| |
| #endif // CHROME_BROWSER_OFFLINE_PAGES_OFFLINE_PAGE_BOOKMARK_OBSERVER_H_ |