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_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARK_UTILS_H_ 6 #define COMPONENTS_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARK_UTILS_H_ 7 8 #include <set> 9 #include <string> 10 #include <vector> 11 12 class BookmarkModel; 13 class BookmarkNode; 14 15 namespace enhanced_bookmarks { 16 17 // Returns an ordered vector of bookmarks that are urls that match |query|. 18 // |query| must be UTF8 encoded. 19 std::vector<const BookmarkNode*> FindBookmarksWithQuery( 20 BookmarkModel* bookmark_model, 21 const std::string& query); 22 23 // The vector is sorted in place. 24 // All of the bookmarks in |nodes| must be urls. 25 void SortBookmarksByName(std::vector<const BookmarkNode*>& nodes); 26 27 // Returns the permanent nodes whose url children are considered uncategorized 28 // and whose folder children should be shown in the bookmark menu. 29 // |model| must be loaded. 30 std::vector<const BookmarkNode*> PrimaryPermanentNodes(BookmarkModel* model); 31 32 // Returns an unsorted vector of folders that are considered to be at the "root" 33 // level of the bookmark hierarchy. Functionally, this means all direct 34 // descendants of PrimaryPermanentNodes, and possibly a node for the bookmarks 35 // bar. 36 std::vector<const BookmarkNode*> RootLevelFolders(BookmarkModel* model); 37 38 // Returns whether |node| is a primary permanent node in the sense of 39 // |PrimaryPermanentNodes|. 40 bool IsPrimaryPermanentNode(const BookmarkNode* node, BookmarkModel* model); 41 42 // Returns the root level folder in which this node is directly, or indirectly 43 // via subfolders, located. 44 const BookmarkNode* RootLevelFolderForNode(const BookmarkNode* node, 45 BookmarkModel* model); 46 47 } // namespace enhanced_bookmarks 48 49 #endif // COMPONENTS_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARK_UTILS_H_ 50