blob: 8cc5996c0c8b4e5834af0f0104ec730b50cefd0a [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARK_UTILS_H_
#define COMPONENTS_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARK_UTILS_H_
#include <set>
#include <string>
#include <vector>
class BookmarkModel;
class BookmarkNode;
namespace enhanced_bookmarks {
// Returns an ordered vector of bookmarks that are urls that match |query|.
// |query| must be UTF8 encoded.
std::vector<const BookmarkNode*> FindBookmarksWithQuery(
BookmarkModel* bookmark_model,
const std::string& query);
// The vector is sorted in place.
// All of the bookmarks in |nodes| must be urls.
void SortBookmarksByName(std::vector<const BookmarkNode*>& nodes);
// Returns the permanent nodes whose url children are considered uncategorized
// and whose folder children should be shown in the bookmark menu.
// |model| must be loaded.
std::vector<const BookmarkNode*> PrimaryPermanentNodes(BookmarkModel* model);
// Returns an unsorted vector of folders that are considered to be at the "root"
// level of the bookmark hierarchy. Functionally, this means all direct
// descendants of PrimaryPermanentNodes, and possibly a node for the bookmarks
// bar.
std::vector<const BookmarkNode*> RootLevelFolders(BookmarkModel* model);
// Returns whether |node| is a primary permanent node in the sense of
// |PrimaryPermanentNodes|.
bool IsPrimaryPermanentNode(const BookmarkNode* node, BookmarkModel* model);
// Returns the root level folder in which this node is directly, or indirectly
// via subfolders, located.
const BookmarkNode* RootLevelFolderForNode(const BookmarkNode* node,
BookmarkModel* model);
} // namespace enhanced_bookmarks
#endif // COMPONENTS_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARK_UTILS_H_