• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_EXPANDED_STATE_TRACKER_H_
6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_EXPANDED_STATE_TRACKER_H_
7 
8 #include <set>
9 
10 #include "components/bookmarks/browser/base_bookmark_model_observer.h"
11 
12 class BookmarkModel;
13 class BookmarkNode;
14 class PrefService;
15 
16 namespace bookmarks {
17 
18 // BookmarkExpandedStateTracker is used to track a set of expanded nodes. The
19 // nodes are persisted in preferences. If an expanded node is removed from the
20 // model BookmarkExpandedStateTracker removes the node.
21 class BookmarkExpandedStateTracker : public BaseBookmarkModelObserver {
22  public:
23   typedef std::set<const BookmarkNode*> Nodes;
24 
25   BookmarkExpandedStateTracker(BookmarkModel* bookmark_model,
26                                PrefService* pref_service);
27   virtual ~BookmarkExpandedStateTracker();
28 
29   // The set of expanded nodes.
30   void SetExpandedNodes(const Nodes& nodes);
31   Nodes GetExpandedNodes();
32 
33  private:
34   // BaseBookmarkModelObserver:
35   virtual void BookmarkModelLoaded(BookmarkModel* model,
36                                    bool ids_reassigned) OVERRIDE;
37   virtual void BookmarkModelChanged() OVERRIDE;
38   virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE;
39   virtual void BookmarkNodeRemoved(BookmarkModel* model,
40                                    const BookmarkNode* parent,
41                                    int old_index,
42                                    const BookmarkNode* node,
43                                    const std::set<GURL>& removed_urls) OVERRIDE;
44   virtual void BookmarkAllUserNodesRemoved(
45       BookmarkModel* model,
46       const std::set<GURL>& removed_urls) OVERRIDE;
47 
48   // Updates the value for |prefs::kBookmarkEditorExpandedNodes| from
49   // GetExpandedNodes().
50   void UpdatePrefs(const Nodes& nodes);
51 
52   BookmarkModel* bookmark_model_;
53   PrefService* pref_service_;
54 
55   DISALLOW_COPY_AND_ASSIGN(BookmarkExpandedStateTracker);
56 };
57 
58 }  // namespace bookmarks
59 
60 #endif  // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_EXPANDED_STATE_TRACKER_H_
61