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

Unified Diff: chrome/browser/bookmarks/bookmark_utils.cc

Issue 8273041: Permanent folders changes (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Nit fixing. Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/bookmarks/bookmark_model.cc ('k') | ui/base/models/tree_node_iterator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/bookmarks/bookmark_utils.cc
diff --git a/chrome/browser/bookmarks/bookmark_utils.cc b/chrome/browser/bookmarks/bookmark_utils.cc
index 22563c98475d89331bc75348ec549ab1e08e0fec..0eec58a3ecaf98a3847340390ea9f5d9c9a29534 100644
--- a/chrome/browser/bookmarks/bookmark_utils.cc
+++ b/chrome/browser/bookmarks/bookmark_utils.cc
@@ -469,11 +469,18 @@ string16 GetNameForURL(const GURL& url) {
}
}
+// This is used with a tree iterator to skip subtrees which are not visible.
+static bool PruneInvisibleFolders(const BookmarkNode* node) {
+ return !node->IsVisible();
+}
+
std::vector<const BookmarkNode*> GetMostRecentlyModifiedFolders(
BookmarkModel* model,
size_t max_count) {
std::vector<const BookmarkNode*> nodes;
- ui::TreeNodeIterator<const BookmarkNode> iterator(model->root_node());
+ ui::TreeNodeIterator<const BookmarkNode>
+ iterator(model->root_node(), PruneInvisibleFolders);
+
while (iterator.has_next()) {
const BookmarkNode* parent = iterator.Next();
if (parent->is_folder() && parent->date_folder_modified() > base::Time()) {
@@ -494,21 +501,19 @@ std::vector<const BookmarkNode*> GetMostRecentlyModifiedFolders(
}
if (nodes.size() < max_count) {
- // Add the bookmark bar and other nodes if there is space.
- if (find(nodes.begin(), nodes.end(), model->bookmark_bar_node()) ==
- nodes.end()) {
- nodes.push_back(model->bookmark_bar_node());
- }
-
- if (nodes.size() < max_count &&
- find(nodes.begin(), nodes.end(), model->other_node()) == nodes.end()) {
- nodes.push_back(model->other_node());
- }
-
- if (nodes.size() < max_count && model->synced_node()->IsVisible() &&
- find(nodes.begin(), nodes.end(),
- model->synced_node()) == nodes.end()) {
- nodes.push_back(model->synced_node());
+ // Add the permanent nodes if there is space. The permanent nodes are the
+ // only children of the root_node.
+ const BookmarkNode* root_node = model->root_node();
+
+ for (int i = 0; i < root_node->child_count(); ++i) {
+ const BookmarkNode* node = root_node->GetChild(i);
+ if (node->IsVisible() &&
+ find(nodes.begin(), nodes.end(), node) == nodes.end()) {
+ nodes.push_back(node);
+
+ if (nodes.size() == max_count)
+ break;
+ }
}
}
return nodes;
« no previous file with comments | « chrome/browser/bookmarks/bookmark_model.cc ('k') | ui/base/models/tree_node_iterator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698