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

Unified Diff: components/enhanced_bookmarks/bookmark_server_search_service.cc

Issue 538903003: Bring up of the server side full text search. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: s/SigninManager/SigninManagerBase for ChromeOS. Created 6 years, 3 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: components/enhanced_bookmarks/bookmark_server_search_service.cc
diff --git a/components/enhanced_bookmarks/bookmark_server_search_service.cc b/components/enhanced_bookmarks/bookmark_server_search_service.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e019e4b24b607f4f97f1235bd28f7a99f6c46503
--- /dev/null
+++ b/components/enhanced_bookmarks/bookmark_server_search_service.cc
@@ -0,0 +1,116 @@
+// 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.
+
+#include "components/enhanced_bookmarks/bookmark_server_search_service.h"
+
+#include "components/bookmarks/browser/bookmark_model.h"
+#include "components/enhanced_bookmarks/enhanced_bookmark_utils.h"
+#include "components/enhanced_bookmarks/proto/search.pb.h"
+#include "net/base/url_util.h"
+#include "net/url_request/url_fetcher.h"
+
+namespace {
+const std::string kSearchUrl(
+ "https://www.google.com/stars/search");
+} // namespace
+
+namespace enhanced_bookmarks {
+
+BookmarkServerSearchService::BookmarkServerSearchService(
+ scoped_refptr<net::URLRequestContextGetter> request_context_getter,
+ ProfileOAuth2TokenService* token_service,
+ SigninManagerBase* signin_manager,
+ BookmarkModel* bookmark_model)
+ : BookmarkServerService(request_context_getter,
+ token_service,
+ signin_manager,
+ bookmark_model) {
+}
+
+BookmarkServerSearchService::~BookmarkServerSearchService() {
+}
+
+void BookmarkServerSearchService::Search(const std::string& query) {
+ DCHECK(query.length());
+ current_query_ = query;
+ TriggerTokenRequest(true);
+}
+
+std::vector<const BookmarkNode*> BookmarkServerSearchService::ResultForQuery(
+ const std::string& query) {
+ DCHECK(query.length());
+ std::vector<const BookmarkNode*> result;
+
+ std::map<std::string, std::vector<std::string> >::iterator it =
+ searches_.find(query);
+ if (it == searches_.end())
+ return result;
+
+ for (std::vector<std::string>::iterator clip_it = it->second.begin();
+ clip_it != it->second.end();
+ ++clip_it) {
+ const BookmarkNode* node = BookmarkForRemoteId(*clip_it);
+ if (node)
+ result.push_back(node);
+ }
+ return result;
+}
+
+net::URLFetcher* BookmarkServerSearchService::CreateFetcherWithToken(
+ const std::string& access_token) {
+ // Add the necessary arguments to the URI.
+ GURL url(kSearchUrl);
Mark 2014/09/05 18:23:14 I'm assuming the bearer is being set magically som
Yaron 2014/09/05 18:26:52 BookmarkServerService::OnGetTokenSuccess adds it a
noyau (Ping after 24h) 2014/09/08 09:46:48 Ah, good catch. This argument is a remnant of anci
+ url = net::AppendQueryParameter(url, "output", "proto");
+ url = net::AppendQueryParameter(url, "q", current_query_);
Mark 2014/09/05 18:23:14 Make sure to add a v=[version id] here.
noyau (Ping after 24h) 2014/09/08 09:46:48 Yup, once the code to get a revision lands. I'll p
+
+ // Build the URLFetcher to perform the request.
+ net::URLFetcher* url_fetcher =
+ net::URLFetcher::Create(url, net::URLFetcher::GET, this);
+
+ return url_fetcher;
+}
+
+bool BookmarkServerSearchService::ProcessResponse(const std::string& response,
+ bool* should_notify) {
+ DCHECK(*should_notify);
Yaron 2014/09/05 04:37:52 this doesn't match the header. It can't actually e
noyau (Ping after 24h) 2014/09/08 09:46:48 For this class should_notify is always true, and t
+ DCHECK(current_query_.length());
+ image::collections::CorpusSearchResult response_proto;
+ bool result = response_proto.ParseFromString(response);
+ if (!result)
+ return false; // Not formatted properly.
+
+ std::vector<std::string> clip_ids;
+ for (google::protobuf::RepeatedPtrField<
+ image::collections::CorpusSearchResult_ClipResult>::const_iterator
+ it = response_proto.results().begin();
+ it != response_proto.results().end();
+ ++it) {
+ const std::string& clip_id = it->clip_id();
+ if (!clip_id.length())
Mark 2014/09/05 18:23:14 You also get snippets back as to why clips matched
noyau (Ping after 24h) 2014/09/08 09:46:48 Acknowledged.
+ continue;
+ clip_ids.push_back(clip_id);
+ }
+ searches_[current_query_] = clip_ids;
+ current_query_.clear();
+ return true;
+}
+
+void BookmarkServerSearchService::CleanAfterFailure() {
+ searches_.clear();
+}
+
+void BookmarkServerSearchService::BookmarkNodeAdded(BookmarkModel* model,
Yaron 2014/09/05 04:37:52 Why is a bookmark removal ignorable? I guess the U
noyau (Ping after 24h) 2014/09/08 09:46:48 This is not ignored, this is catched by the superc
+ const BookmarkNode* parent,
+ int index) {
+ BookmarkServerService::BookmarkNodeAdded(model, parent, index);
+ searches_.clear();
+}
+
+void BookmarkServerSearchService::BookmarkMetaInfoChanged(
+ BookmarkModel* model,
+ const BookmarkNode* node) {
+ BookmarkServerService::BookmarkMetaInfoChanged(model, node);
+ searches_.clear();
+}
+} // namespace enhanced_bookmarks

Powered by Google App Engine
This is Rietveld 408576698