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