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

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

Issue 242693003: Introduce BookmarkClient interface to abstract embedder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Introduce ChromeBookmarkClient Created 6 years, 8 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
Index: chrome/browser/bookmarks/bookmark_index.cc
diff --git a/chrome/browser/bookmarks/bookmark_index.cc b/chrome/browser/bookmarks/bookmark_index.cc
index feb2384f9d82ef473a929867b52a089a87118a47..85d4f645e747cb9db27ba6f23ed598c47b3aa06a 100644
--- a/chrome/browser/bookmarks/bookmark_index.cc
+++ b/chrome/browser/bookmarks/bookmark_index.cc
@@ -10,10 +10,8 @@
#include "base/i18n/case_conversion.h"
#include "base/strings/string16.h"
-#include "chrome/browser/bookmarks/bookmark_model.h"
-#include "chrome/browser/history/history_service.h"
-#include "chrome/browser/history/history_service_factory.h"
-#include "chrome/browser/history/url_database.h"
+#include "components/bookmarks/core/browser/bookmark_client.h"
+#include "components/bookmarks/core/browser/bookmark_node.h"
#include "components/bookmarks/core/browser/bookmark_title_match.h"
#include "components/query_parser/query_parser.h"
#include "third_party/icu/source/common/unicode/normalizer2.h"
@@ -71,8 +69,7 @@ BookmarkIndex::NodeSet::const_iterator BookmarkIndex::Match::nodes_end() const {
return nodes.empty() ? terms.front()->second.end() : nodes.end();
}
-BookmarkIndex::BookmarkIndex(content::BrowserContext* browser_context)
- : browser_context_(browser_context) {
+BookmarkIndex::BookmarkIndex(BookmarkClient* client) : client_(client) {
}
BookmarkIndex::~BookmarkIndex() {
@@ -134,43 +131,26 @@ void BookmarkIndex::GetBookmarksWithTitlesMatching(
void BookmarkIndex::SortMatches(const Matches& matches,
NodeTypedCountPairs* node_typed_counts) const {
- HistoryService* const history_service = browser_context_ ?
- HistoryServiceFactory::GetForProfile(
- Profile::FromBrowserContext(browser_context_),
- Profile::EXPLICIT_ACCESS) : NULL;
-
- history::URLDatabase* url_db = history_service ?
- history_service->InMemoryDatabase() : NULL;
-
- for (Matches::const_iterator i = matches.begin(); i != matches.end(); ++i)
- ExtractBookmarkNodePairs(url_db, *i, node_typed_counts);
-
- std::sort(node_typed_counts->begin(), node_typed_counts->end(),
- &NodeTypedCountPairSortFunc);
- // Eliminate duplicates.
- node_typed_counts->erase(std::unique(node_typed_counts->begin(),
- node_typed_counts->end()),
- node_typed_counts->end());
-}
-
-void BookmarkIndex::ExtractBookmarkNodePairs(
- history::URLDatabase* url_db,
- const Match& match,
- NodeTypedCountPairs* node_typed_counts) const {
-
- for (NodeSet::const_iterator i = match.nodes_begin();
- i != match.nodes_end(); ++i) {
- int typed_count = 0;
-
- // If |url_db| is the InMemoryDatabase, it might not cache all URLRows, but
- // it guarantees to contain those with |typed_count| > 0. Thus, if we cannot
- // fetch the URLRow, it is safe to assume that its |typed_count| is 0.
- history::URLRow url;
- if (url_db && url_db->GetRowForURL((*i)->url(), &url))
- typed_count = url.typed_count();
+ for (Matches::const_iterator i = matches.begin(); i != matches.end(); ++i) {
+ const NodeSet& nodes =
+ i->nodes.empty() ? i->terms.front()->second : i->nodes;
+ if (client_->SupportsTypedCountForNodes()) {
+ client_->GetTypedCountForNodes(nodes, node_typed_counts);
+ } else {
+ for (NodeSet::const_iterator n = nodes.begin(); n != nodes.end(); ++n) {
+ node_typed_counts->push_back(NodeTypedCountPair(*n, 0));
+ }
+ }
+ }
- NodeTypedCountPair pair(*i, typed_count);
- node_typed_counts->push_back(pair);
+ if (client_->SupportsTypedCountForNodes()) {
+ std::sort(node_typed_counts->begin(),
+ node_typed_counts->end(),
+ &NodeTypedCountPairSortFunc);
+ // Eliminate duplicates.
+ node_typed_counts->erase(
+ std::unique(node_typed_counts->begin(), node_typed_counts->end()),
+ node_typed_counts->end());
}
}

Powered by Google App Engine
This is Rietveld 408576698