Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / bookmarks / core / browser / bookmark_expanded_state_tracker.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_CORE_BROWSER_BOOKMARK_EXPANDED_STATE_TRACKER_H_
6 #define COMPONENTS_BOOKMARKS_CORE_BROWSER_BOOKMARK_EXPANDED_STATE_TRACKER_H_
7
8 #include <set>
9
10 #include "components/bookmarks/core/browser/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 BookmarkModelLoaded(BookmarkModel* model,
34                                    bool ids_reassigned) OVERRIDE;
35   virtual void BookmarkModelChanged() OVERRIDE;
36   virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE;
37   virtual void BookmarkNodeRemoved(BookmarkModel* model,
38                                    const BookmarkNode* parent,
39                                    int old_index,
40                                    const BookmarkNode* node,
41                                    const std::set<GURL>& removed_urls) OVERRIDE;
42   virtual void BookmarkAllNodesRemoved(
43       BookmarkModel* model,
44       const std::set<GURL>& removed_urls) OVERRIDE;
45
46   // Updates the value for |prefs::kBookmarkEditorExpandedNodes| from
47   // GetExpandedNodes().
48   void UpdatePrefs(const Nodes& nodes);
49
50   BookmarkModel* bookmark_model_;
51   PrefService* pref_service_;
52
53   DISALLOW_COPY_AND_ASSIGN(BookmarkExpandedStateTracker);
54 };
55
56 #endif  // COMPONENTS_BOOKMARKS_CORE_BROWSER_BOOKMARK_EXPANDED_STATE_TRACKER_H_