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

Unified Diff: chrome/browser/chromeos/launcher_search_provider/service.cc

Issue 1071093002: Implement setSearchResults. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix memory leak. Created 5 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/chromeos/launcher_search_provider/service.cc
diff --git a/chrome/browser/chromeos/launcher_search_provider/service.cc b/chrome/browser/chromeos/launcher_search_provider/service.cc
index eadb11d82e05e7c9b2e2c472f7203f55c99c94ed..3e1663aab5cfdb0e41659c91329658555a293e6e 100644
--- a/chrome/browser/chromeos/launcher_search_provider/service.cc
+++ b/chrome/browser/chromeos/launcher_search_provider/service.cc
@@ -4,8 +4,11 @@
#include "chrome/browser/chromeos/launcher_search_provider/service.h"
+#include "base/memory/scoped_vector.h"
+#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chromeos/launcher_search_provider/service_factory.h"
-#include "chrome/common/extensions/api/launcher_search_provider.h"
+#include "chrome/browser/ui/app_list/search/launcher_search/launcher_search_provider.h"
+#include "chrome/browser/ui/app_list/search/launcher_search/launcher_search_result.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/extension_set.h"
#include "extensions/common/permissions/permissions_data.h"
@@ -22,6 +25,7 @@ Service::Service(Profile* profile,
extensions::ExtensionRegistry* extension_registry)
: profile_(profile),
extension_registry_(extension_registry),
+ provider_(nullptr),
query_id_(0),
is_query_running_(false) {
}
@@ -34,9 +38,12 @@ Service* Service::Get(content::BrowserContext* context) {
return ServiceFactory::Get(context);
}
-void Service::OnQueryStarted(const std::string& query, const int max_result) {
+void Service::OnQueryStarted(app_list::LauncherSearchProvider* provider,
+ const std::string& query,
+ const int max_result) {
DCHECK(!is_query_running_);
is_query_running_ = true;
+ provider_ = provider;
++query_id_;
@@ -56,6 +63,7 @@ void Service::OnQueryStarted(const std::string& query, const int max_result) {
void Service::OnQueryEnded() {
DCHECK(is_query_running_);
+ provider_ = nullptr;
extensions::EventRouter* event_router =
extensions::EventRouter::Get(profile_);
@@ -73,6 +81,34 @@ void Service::OnQueryEnded() {
is_query_running_ = false;
}
+void Service::SetSearchResults(
+ const extensions::Extension* extension,
+ const std::string& query_id,
+ const std::vector<linked_ptr<
+ extensions::api::launcher_search_provider::SearchResult>>& results) {
+ // If query is not running or query_id is different from current query id,
+ // discard the results.
+ if (!is_query_running_ || query_id != std::to_string(query_id_))
+ return;
+
+ // Set search results to provider.
+ DCHECK(provider_);
+ ScopedVector<app_list::LauncherSearchResult> search_results;
+ for (const auto& result : results) {
+ const int relevance =
+ std::min(kMaxSearchResultScore, std::max(result->relevance, 0));
+ const GURL icon_url =
+ result->icon_url ? GURL(*result->icon_url.get()) : GURL();
+
+ app_list::LauncherSearchResult* search_result =
+ new app_list::LauncherSearchResult(result->item_id, icon_url, relevance,
+ profile_, extension);
+ search_result->set_title(base::UTF8ToUTF16(result->title));
+ search_results.push_back(search_result);
+ }
+ provider_->SetSearchResults(extension->id(), search_results.Pass());
+}
+
bool Service::IsQueryRunning() const {
return is_query_running_;
}

Powered by Google App Engine
This is Rietveld 408576698