Home | History | Annotate | Download | only in bookmarks
      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