chrome_bookmark_client.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_BOOKMARKS_CHROME_BOOKMARK_CLIENT_H_ 6#define CHROME_BROWSER_BOOKMARKS_CHROME_BOOKMARK_CLIENT_H_ 7 8#include <vector> 9 10#include "base/compiler_specific.h" 11#include "base/deferred_sequenced_task_runner.h" 12#include "base/memory/ref_counted.h" 13#include "components/bookmarks/browser/base_bookmark_model_observer.h" 14#include "components/bookmarks/browser/bookmark_client.h" 15#include "components/keyed_service/core/keyed_service.h" 16#include "components/policy/core/browser/managed_bookmarks_tracker.h" 17#include "content/public/browser/notification_observer.h" 18#include "content/public/browser/notification_registrar.h" 19 20class BookmarkModel; 21class Profile; 22 23class ChromeBookmarkClient : public BookmarkClient, 24 public content::NotificationObserver, 25 public KeyedService, 26 public BaseBookmarkModelObserver { 27 public: 28 // |index_urls| says whether URLs should be stored in the BookmarkIndex 29 // in addition to bookmark titles. 30 ChromeBookmarkClient(Profile* profile, bool index_urls); 31 virtual ~ChromeBookmarkClient(); 32 33 // Returns the BookmarkModel that corresponds to this ChromeBookmarkClient. 34 BookmarkModel* model() { return model_.get(); } 35 36 // Returns the managed_node. 37 const BookmarkNode* managed_node() { return managed_node_; } 38 39 // Returns true if the given node belongs to the managed bookmarks tree. 40 bool IsDescendantOfManagedNode(const BookmarkNode* node); 41 42 // Returns true if there is at least one managed node in the |list|. 43 bool HasDescendantsOfManagedNode( 44 const std::vector<const BookmarkNode*>& list); 45 46 // BookmarkClient: 47 virtual bool PreferTouchIcon() OVERRIDE; 48 virtual base::CancelableTaskTracker::TaskId GetFaviconImageForURL( 49 const GURL& page_url, 50 int icon_types, 51 int desired_size_in_dip, 52 const favicon_base::FaviconImageCallback& callback, 53 base::CancelableTaskTracker* tracker) OVERRIDE; 54 virtual bool SupportsTypedCountForNodes() OVERRIDE; 55 virtual void GetTypedCountForNodes( 56 const NodeSet& nodes, 57 NodeTypedCountPairs* node_typed_count_pairs) OVERRIDE; 58 virtual bool IsPermanentNodeVisible( 59 const BookmarkPermanentNode* node) OVERRIDE; 60 virtual void RecordAction(const base::UserMetricsAction& action) OVERRIDE; 61 virtual bookmarks::LoadExtraCallback GetLoadExtraNodesCallback() OVERRIDE; 62 virtual bool CanSetPermanentNodeTitle( 63 const BookmarkNode* permanent_node) OVERRIDE; 64 virtual bool CanSyncNode(const BookmarkNode* node) OVERRIDE; 65 virtual bool CanBeEditedByUser(const BookmarkNode* node) OVERRIDE; 66 67 // content::NotificationObserver: 68 virtual void Observe(int type, 69 const content::NotificationSource& source, 70 const content::NotificationDetails& details) OVERRIDE; 71 72 // KeyedService: 73 virtual void Shutdown() OVERRIDE; 74 75 private: 76 // BaseBookmarkModelObserver: 77 virtual void BookmarkModelChanged() OVERRIDE; 78 virtual void BookmarkNodeRemoved(BookmarkModel* model, 79 const BookmarkNode* parent, 80 int old_index, 81 const BookmarkNode* node, 82 const std::set<GURL>& removed_urls) OVERRIDE; 83 virtual void BookmarkAllNodesRemoved( 84 BookmarkModel* model, 85 const std::set<GURL>& removed_urls) OVERRIDE; 86 virtual void BookmarkModelLoaded(BookmarkModel* model, 87 bool ids_reassigned) OVERRIDE; 88 89 // Helper for GetLoadExtraNodesCallback(). 90 static bookmarks::BookmarkPermanentNodeList LoadExtraNodes( 91 const scoped_refptr<base::DeferredSequencedTaskRunner>& profile_io_runner, 92 BookmarkPermanentNode* managed_node, 93 scoped_ptr<base::ListValue> initial_managed_bookmarks, 94 int64* next_node_id); 95 96 // Returns the management domain that configured the managed bookmarks, 97 // or an empty string. 98 std::string GetManagedBookmarksDomain(); 99 100 Profile* profile_; 101 102 content::NotificationRegistrar registrar_; 103 104 scoped_ptr<BookmarkModel> model_; 105 106 policy::ManagedBookmarksTracker managed_bookmarks_tracker_; 107 BookmarkPermanentNode* managed_node_; 108 109 DISALLOW_COPY_AND_ASSIGN(ChromeBookmarkClient); 110}; 111 112#endif // CHROME_BROWSER_BOOKMARKS_CHROME_BOOKMARK_CLIENT_H_ 113