Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1349)

Side by Side Diff: components/bookmarks/core/browser/bookmark_expanded_state_tracker.cc

Issue 284893003: Move bookmarks/core/... to bookmarks/... (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing errors reported by presubmit Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 #include "components/bookmarks/core/browser/bookmark_expanded_state_tracker.h"
6
7 #include "base/prefs/pref_service.h"
8 #include "base/strings/string_number_conversions.h"
9 #include "base/values.h"
10 #include "components/bookmarks/core/browser/bookmark_model.h"
11 #include "components/bookmarks/core/browser/bookmark_utils.h"
12 #include "components/bookmarks/core/common/bookmark_pref_names.h"
13
14 BookmarkExpandedStateTracker::BookmarkExpandedStateTracker(
15 BookmarkModel* bookmark_model,
16 PrefService* pref_service)
17 : bookmark_model_(bookmark_model),
18 pref_service_(pref_service) {
19 bookmark_model->AddObserver(this);
20 }
21
22 BookmarkExpandedStateTracker::~BookmarkExpandedStateTracker() {
23 }
24
25 void BookmarkExpandedStateTracker::SetExpandedNodes(const Nodes& nodes) {
26 UpdatePrefs(nodes);
27 }
28
29 BookmarkExpandedStateTracker::Nodes
30 BookmarkExpandedStateTracker::GetExpandedNodes() {
31 Nodes nodes;
32 if (!bookmark_model_->loaded())
33 return nodes;
34
35 if (!pref_service_)
36 return nodes;
37
38 const base::ListValue* value =
39 pref_service_->GetList(prefs::kBookmarkEditorExpandedNodes);
40 if (!value)
41 return nodes;
42
43 bool changed = false;
44 for (base::ListValue::const_iterator i = value->begin();
45 i != value->end(); ++i) {
46 std::string value;
47 int64 node_id;
48 const BookmarkNode* node;
49 if ((*i)->GetAsString(&value) && base::StringToInt64(value, &node_id) &&
50 (node = GetBookmarkNodeByID(bookmark_model_, node_id)) != NULL &&
51 node->is_folder()) {
52 nodes.insert(node);
53 } else {
54 changed = true;
55 }
56 }
57 if (changed)
58 UpdatePrefs(nodes);
59 return nodes;
60 }
61
62 void BookmarkExpandedStateTracker::BookmarkModelLoaded(BookmarkModel* model,
63 bool ids_reassigned) {
64 if (ids_reassigned) {
65 // If the ids change we can't trust the value in preferences and need to
66 // reset it.
67 SetExpandedNodes(Nodes());
68 }
69 }
70
71 void BookmarkExpandedStateTracker::BookmarkModelChanged() {
72 }
73
74 void BookmarkExpandedStateTracker::BookmarkModelBeingDeleted(
75 BookmarkModel* model) {
76 model->RemoveObserver(this);
77 }
78
79 void BookmarkExpandedStateTracker::BookmarkNodeRemoved(
80 BookmarkModel* model,
81 const BookmarkNode* parent,
82 int old_index,
83 const BookmarkNode* node,
84 const std::set<GURL>& removed_urls) {
85 if (!node->is_folder())
86 return; // Only care about folders.
87
88 // Ask for the nodes again, which removes any nodes that were deleted.
89 GetExpandedNodes();
90 }
91
92 void BookmarkExpandedStateTracker::BookmarkAllNodesRemoved(
93 BookmarkModel* model,
94 const std::set<GURL>& removed_urls) {
95 // Ask for the nodes again, which removes any nodes that were deleted.
96 GetExpandedNodes();
97 }
98
99 void BookmarkExpandedStateTracker::UpdatePrefs(const Nodes& nodes) {
100 if (!pref_service_)
101 return;
102
103 base::ListValue values;
104 for (Nodes::const_iterator i = nodes.begin(); i != nodes.end(); ++i) {
105 values.Set(values.GetSize(),
106 new base::StringValue(base::Int64ToString((*i)->id())));
107 }
108
109 pref_service_->Set(prefs::kBookmarkEditorExpandedNodes, values);
110 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698