chrome_bookmark_client.h revision 010d83a9304c5a91596085d917d248abff47903a
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 "base/compiler_specific.h"
9#include "components/bookmarks/core/browser/base_bookmark_model_observer.h"
10#include "components/bookmarks/core/browser/bookmark_client.h"
11#include "components/keyed_service/core/keyed_service.h"
12#include "content/public/browser/notification_observer.h"
13#include "content/public/browser/notification_registrar.h"
14
15class BookmarkModel;
16class Profile;
17
18class ChromeBookmarkClient : public BookmarkClient,
19                             public content::NotificationObserver,
20                             public KeyedService,
21                             public BaseBookmarkModelObserver {
22  public:
23  // |index_urls| says whether URLs should be stored in the BookmarkIndex
24  // in addition to bookmark titles.
25  ChromeBookmarkClient(Profile* profile, bool index_urls);
26  virtual ~ChromeBookmarkClient();
27
28  // Returns the BookmarkModel that corresponds to this ChromeBookmarkClient.
29  BookmarkModel* model() { return model_.get(); }
30
31  // BookmarkClient:
32  virtual bool PreferTouchIcon() OVERRIDE;
33  virtual base::CancelableTaskTracker::TaskId GetFaviconImageForURL(
34      const GURL& page_url,
35      int icon_types,
36      int desired_size_in_dip,
37      const FaviconImageCallback& callback,
38      base::CancelableTaskTracker* tracker) OVERRIDE;
39  virtual bool SupportsTypedCountForNodes() OVERRIDE;
40  virtual void GetTypedCountForNodes(
41      const NodeSet& nodes,
42      NodeTypedCountPairs* node_typed_count_pairs) OVERRIDE;
43  virtual void RecordAction(const base::UserMetricsAction& action) OVERRIDE;
44
45  // content::NotificationObserver:
46  virtual void Observe(int type,
47                       const content::NotificationSource& source,
48                       const content::NotificationDetails& details) OVERRIDE;
49
50  // KeyedService:
51  virtual void Shutdown() OVERRIDE;
52
53 private:
54  // BaseBookmarkModelObserver:
55  virtual void BookmarkModelChanged() OVERRIDE;
56  virtual void BookmarkNodeRemoved(BookmarkModel* model,
57                                   const BookmarkNode* parent,
58                                   int old_index,
59                                   const BookmarkNode* node,
60                                   const std::set<GURL>& removed_urls) OVERRIDE;
61  virtual void BookmarkAllNodesRemoved(
62      BookmarkModel* model,
63      const std::set<GURL>& removed_urls) OVERRIDE;
64
65  Profile* profile_;
66
67  content::NotificationRegistrar registrar_;
68
69  scoped_ptr<BookmarkModel> model_;
70
71  DISALLOW_COPY_AND_ASSIGN(ChromeBookmarkClient);
72};
73
74#endif  // CHROME_BROWSER_BOOKMARKS_CHROME_BOOKMARK_CLIENT_H_
75