OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/enhanced_bookmarks/enhanced_bookmark_utils.h" | 5 #include "components/enhanced_bookmarks/enhanced_bookmark_utils.h" |
6 | 6 |
7 #include "base/i18n/string_compare.h" | 7 #include "base/i18n/string_compare.h" |
8 #include "components/bookmarks/browser/bookmark_model.h" | 8 #include "components/bookmarks/browser/bookmark_model.h" |
9 | 9 |
10 using bookmarks::BookmarkModel; | 10 using bookmarks::BookmarkModel; |
(...skipping 28 matching lines...) Expand all Loading... |
39 if (U_FAILURE(error)) | 39 if (U_FAILURE(error)) |
40 collator.reset(NULL); | 40 collator.reset(NULL); |
41 std::sort(nodes.begin(), nodes.end(), BookmarkNameComparator(collator.get())); | 41 std::sort(nodes.begin(), nodes.end(), BookmarkNameComparator(collator.get())); |
42 } | 42 } |
43 | 43 |
44 std::vector<const BookmarkNode*> PrimaryPermanentNodes(BookmarkModel* model) { | 44 std::vector<const BookmarkNode*> PrimaryPermanentNodes(BookmarkModel* model) { |
45 DCHECK(model->loaded()); | 45 DCHECK(model->loaded()); |
46 std::vector<const BookmarkNode*> nodes; | 46 std::vector<const BookmarkNode*> nodes; |
47 nodes.push_back(model->other_node()); | 47 nodes.push_back(model->other_node()); |
48 nodes.push_back(model->mobile_node()); | 48 nodes.push_back(model->mobile_node()); |
| 49 nodes.push_back(model->bookmark_bar_node()); |
49 return nodes; | 50 return nodes; |
50 } | 51 } |
51 | 52 |
52 std::vector<const BookmarkNode*> RootLevelFolders(BookmarkModel* model) { | 53 std::vector<const BookmarkNode*> RootLevelFolders(BookmarkModel* model) { |
53 std::vector<const BookmarkNode*> root_level_folders; | 54 std::vector<const BookmarkNode*> root_level_folders; |
54 | 55 |
55 // Find the direct folder children of the primary permanent nodes. | 56 // Find the direct folder children of the primary permanent nodes. |
56 std::vector<const BookmarkNode*> primary_permanent_nodes = | 57 std::vector<const BookmarkNode*> primary_permanent_nodes = |
57 PrimaryPermanentNodes(model); | 58 PrimaryPermanentNodes(model); |
58 for (const BookmarkNode* parent : primary_permanent_nodes) { | 59 for (const BookmarkNode* parent : primary_permanent_nodes) { |
59 int child_count = parent->child_count(); | 60 int child_count = parent->child_count(); |
60 for (int i = 0; i < child_count; ++i) { | 61 for (int i = 0; i < child_count; ++i) { |
61 const BookmarkNode* node = parent->GetChild(i); | 62 const BookmarkNode* node = parent->GetChild(i); |
62 if (node->is_folder() && node->IsVisible()) | 63 if (node->is_folder() && node->IsVisible()) |
63 root_level_folders.push_back(node); | 64 root_level_folders.push_back(node); |
64 } | 65 } |
65 } | 66 } |
66 | |
67 // Add the bookmark bar if it has children. | |
68 const BookmarkNode* bb_node = model->bookmark_bar_node(); | |
69 if (bb_node->child_count() > 0) | |
70 root_level_folders.push_back(bb_node); | |
71 | |
72 return root_level_folders; | 67 return root_level_folders; |
73 } | 68 } |
74 | 69 |
75 bool IsPrimaryPermanentNode(const BookmarkNode* node, BookmarkModel* model) { | 70 bool IsPrimaryPermanentNode(const BookmarkNode* node, BookmarkModel* model) { |
76 std::vector<const BookmarkNode*> primary_nodes(PrimaryPermanentNodes(model)); | 71 std::vector<const BookmarkNode*> primary_nodes(PrimaryPermanentNodes(model)); |
77 if (std::find(primary_nodes.begin(), primary_nodes.end(), node) != | 72 if (std::find(primary_nodes.begin(), primary_nodes.end(), node) != |
78 primary_nodes.end()) { | 73 primary_nodes.end()) { |
79 return true; | 74 return true; |
80 } | 75 } |
81 return false; | 76 return false; |
(...skipping 10 matching lines...) Expand all Loading... |
92 const BookmarkNode* top = node; | 87 const BookmarkNode* top = node; |
93 while (top && | 88 while (top && |
94 std::find(root_folders.begin(), root_folders.end(), top) == | 89 std::find(root_folders.begin(), root_folders.end(), top) == |
95 root_folders.end()) { | 90 root_folders.end()) { |
96 top = top->parent(); | 91 top = top->parent(); |
97 } | 92 } |
98 return top; | 93 return top; |
99 } | 94 } |
100 | 95 |
101 } // namespace enhanced_bookmarks | 96 } // namespace enhanced_bookmarks |
OLD | NEW |