Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / components / bookmarks / browser / bookmark_model_observer.h
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 COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_MODEL_OBSERVER_H_
6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_MODEL_OBSERVER_H_
7
8 #include <set>
9
10 class BookmarkModel;
11 class BookmarkNode;
12 class GURL;
13
14 // Observer for the BookmarkModel.
15 class BookmarkModelObserver {
16  public:
17   // Invoked when the model has finished loading. |ids_reassigned| mirrors
18   // that of BookmarkLoadDetails::ids_reassigned. See it for details.
19   virtual void BookmarkModelLoaded(BookmarkModel* model,
20                                    bool ids_reassigned) = 0;
21
22   // Invoked from the destructor of the BookmarkModel.
23   virtual void BookmarkModelBeingDeleted(BookmarkModel* model) {}
24
25   // Invoked when a node has moved.
26   virtual void BookmarkNodeMoved(BookmarkModel* model,
27                                  const BookmarkNode* old_parent,
28                                  int old_index,
29                                  const BookmarkNode* new_parent,
30                                  int new_index) = 0;
31
32   // Invoked when a node has been added.
33   virtual void BookmarkNodeAdded(BookmarkModel* model,
34                                  const BookmarkNode* parent,
35                                  int index) = 0;
36
37   // Invoked before a node is removed.
38   // |parent| the parent of the node that will be removed.
39   // |old_index| the index of the node about to be removed in |parent|.
40   // |node| is the node to be removed.
41   virtual void OnWillRemoveBookmarks(BookmarkModel* model,
42                                      const BookmarkNode* parent,
43                                      int old_index,
44                                      const BookmarkNode* node) {}
45
46   // Invoked when a node has been removed, the item may still be starred though.
47   // |parent| the parent of the node that was removed.
48   // |old_index| the index of the removed node in |parent| before it was
49   // removed.
50   // |node| is the node that was removed.
51   // |removed_urls| is populated with the urls which no longer have any
52   // bookmarks associated with them.
53   virtual void BookmarkNodeRemoved(BookmarkModel* model,
54                                    const BookmarkNode* parent,
55                                    int old_index,
56                                    const BookmarkNode* node,
57                                    const std::set<GURL>& removed_urls) = 0;
58
59   // Invoked before the title or url of a node is changed.
60   virtual void OnWillChangeBookmarkNode(BookmarkModel* model,
61                                         const BookmarkNode* node) {}
62
63   // Invoked when the title or url of a node changes.
64   virtual void BookmarkNodeChanged(BookmarkModel* model,
65                                    const BookmarkNode* node) = 0;
66
67   // Invoked before the metainfo of a node is changed.
68   virtual void OnWillChangeBookmarkMetaInfo(BookmarkModel* model,
69                                             const BookmarkNode* node) {}
70
71   // Invoked when the metainfo on a node changes.
72   virtual void BookmarkMetaInfoChanged(BookmarkModel* model,
73                                        const BookmarkNode* node) {}
74
75   // Invoked when a favicon has been loaded or changed.
76   virtual void BookmarkNodeFaviconChanged(BookmarkModel* model,
77                                           const BookmarkNode* node) = 0;
78
79   // Invoked before the direct children of |node| have been reordered in some
80   // way, such as sorted.
81   virtual void OnWillReorderBookmarkNode(BookmarkModel* model,
82                                          const BookmarkNode* node) {}
83
84   // Invoked when the children (just direct children, not descendants) of
85   // |node| have been reordered in some way, such as sorted.
86   virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
87                                              const BookmarkNode* node) = 0;
88
89   // Invoked before an extensive set of model changes is about to begin.
90   // This tells UI intensive observers to wait until the updates finish to
91   // update themselves.
92   // These methods should only be used for imports and sync.
93   // Observers should still respond to BookmarkNodeRemoved immediately,
94   // to avoid holding onto stale node pointers.
95   virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) {}
96
97   // Invoked after an extensive set of model changes has ended.
98   // This tells observers to update themselves if they were waiting for the
99   // update to finish.
100   virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) {}
101
102   // Invoked before all non-permanent bookmark nodes that are editable by
103   // the user are removed.
104   virtual void OnWillRemoveAllUserBookmarks(BookmarkModel* model) {}
105
106   // Invoked when all non-permanent bookmark nodes that are editable by the
107   // user have been removed.
108   // |removed_urls| is populated with the urls which no longer have any
109   // bookmarks associated with them.
110   virtual void BookmarkAllUserNodesRemoved(
111       BookmarkModel* model,
112       const std::set<GURL>& removed_urls) = 0;
113
114   // Invoked before a set of model changes that is initiated by a single user
115   // action. For example, this is called a single time when pasting from the
116   // clipboard before each pasted bookmark is added to the bookmark model.
117   virtual void GroupedBookmarkChangesBeginning(BookmarkModel* model) {}
118
119   // Invoked after a set of model changes triggered by a single user action has
120   // ended.
121   virtual void GroupedBookmarkChangesEnded(BookmarkModel* model) {}
122
123  protected:
124   virtual ~BookmarkModelObserver() {}
125 };
126
127 #endif  // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_MODEL_OBSERVER_H_