Chromium Code Reviews| 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..cc9dd314f3c861939bbe272b6e998c3d8ebc9a14 100644 |
| --- a/chrome/browser/chromeos/launcher_search_provider/service.cc |
| +++ b/chrome/browser/chromeos/launcher_search_provider/service.cc |
| @@ -4,8 +4,9 @@ |
| #include "chrome/browser/chromeos/launcher_search_provider/service.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 "extensions/browser/extension_registry.h" |
| #include "extensions/common/extension_set.h" |
| #include "extensions/common/permissions/permissions_data.h" |
| @@ -22,6 +23,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 +36,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 +61,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 +79,30 @@ void Service::OnQueryEnded() { |
| is_query_running_ = false; |
| } |
| +void Service::SetSearchResults( |
| + const extensions::Extension* extension, |
| + const std::string& query_id, |
| + 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_); |
| + std::vector<linked_ptr<app_list::LauncherSearchResult>> search_results; |
| + for (const auto& result : results) { |
| + app_list::LauncherSearchResult* search_result = |
| + new app_list::LauncherSearchResult( |
| + result->item_id, result->icon_url.Pass(), result->relevance, |
|
Matt Giuca
2015/04/10 13:29:13
It looks like you are going to trust relevance val
yawano
2015/04/13 07:30:52
Done.
|
| + profile_, extension); |
| + search_result->set_title(base::UTF8ToUTF16(result->title)); |
| + search_results.push_back(make_linked_ptr(search_result)); |
| + } |
| + provider_->SetSearchResults(extension->id(), search_results); |
| +} |
| + |
| bool Service::IsQueryRunning() const { |
| return is_query_running_; |
| } |