Chromium Code Reviews| Index: chrome/browser/bookmarks/bookmark_utils.cc |
| diff --git a/chrome/browser/bookmarks/bookmark_utils.cc b/chrome/browser/bookmarks/bookmark_utils.cc |
| index 01c00475b8983905cd1996c005f417eb3f488dc5..8c0681107ef730a66c1fbb6002f9c13b722c1a51 100644 |
| --- a/chrome/browser/bookmarks/bookmark_utils.cc |
| +++ b/chrome/browser/bookmarks/bookmark_utils.cc |
| @@ -111,6 +111,18 @@ bool HasSelectedAncestor(BookmarkModel* model, |
| return HasSelectedAncestor(model, selected_nodes, node->parent()); |
| } |
| +const BookmarkNode* GetBookmarkNodeByID(const BookmarkNode* node, int64 id) { |
| + if (node->id() == id) |
| + return node; |
| + |
| + for (int i = 0, child_count = node->child_count(); i < child_count; ++i) { |
| + const BookmarkNode* result = GetBookmarkNodeByID(node->GetChild(i), id); |
| + if (result) |
| + return result; |
| + } |
| + return NULL; |
| +} |
| + |
| } // namespace |
| namespace bookmark_utils { |
| @@ -340,7 +352,7 @@ void DeleteBookmarkFolders(BookmarkModel* model, |
| for (std::vector<int64>::const_iterator iter = ids.begin(); |
| iter != ids.end(); |
| ++iter) { |
| - const BookmarkNode* node = model->GetNodeByID(*iter); |
| + const BookmarkNode* node = GetNodeByID(model, *iter); |
| if (!node) |
| continue; |
| const BookmarkNode* parent = node->parent(); |
| @@ -374,4 +386,9 @@ void RemoveAllBookmarks(BookmarkModel* model, const GURL& url) { |
| } |
| } |
| +const BookmarkNode* GetNodeByID(BookmarkModel* model, int64 id) { |
|
sky
2014/04/18 14:07:44
Make this take a const BookmarkModel.
tfarina
2014/04/18 22:55:46
This introduced an ugly const_cast, but if you wan
|
| + // TODO(sky): TreeNode needs a method that visits all nodes using a predicate. |
| + return GetBookmarkNodeByID(model->root_node(), id); |
| +} |
| + |
| } // namespace bookmark_utils |