| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/launcher_search_provider/service.h" | 5 #include "chrome/browser/chromeos/launcher_search_provider/service.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_vector.h" | 7 #include "base/memory/scoped_vector.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/chromeos/launcher_search_provider/service_factory.h" | 9 #include "chrome/browser/chromeos/launcher_search_provider/service_factory.h" |
| 10 #include "chrome/browser/ui/app_list/search/launcher_search/launcher_search_prov
ider.h" | 10 #include "chrome/browser/ui/app_list/search/launcher_search/launcher_search_prov
ider.h" |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 extensions::EventRouter::Get(profile_); | 92 extensions::EventRouter::Get(profile_); |
| 93 event_router->DispatchEventToExtension( | 93 event_router->DispatchEventToExtension( |
| 94 extension_id, | 94 extension_id, |
| 95 make_scoped_ptr(new extensions::Event( | 95 make_scoped_ptr(new extensions::Event( |
| 96 api_launcher_search_provider::OnOpenResult::kEventName, | 96 api_launcher_search_provider::OnOpenResult::kEventName, |
| 97 api_launcher_search_provider::OnOpenResult::Create(item_id)))); | 97 api_launcher_search_provider::OnOpenResult::Create(item_id)))); |
| 98 } | 98 } |
| 99 | 99 |
| 100 void Service::SetSearchResults( | 100 void Service::SetSearchResults( |
| 101 const extensions::Extension* extension, | 101 const extensions::Extension* extension, |
| 102 scoped_ptr<ErrorReporter> error_reporter, |
| 102 const std::string& query_id, | 103 const std::string& query_id, |
| 103 const std::vector<linked_ptr< | 104 const std::vector<linked_ptr< |
| 104 extensions::api::launcher_search_provider::SearchResult>>& results) { | 105 extensions::api::launcher_search_provider::SearchResult>>& results) { |
| 105 // If query is not running or query_id is different from current query id, | 106 // If query is not running or query_id is different from current query id, |
| 106 // discard the results. | 107 // discard the results. |
| 107 if (!is_query_running_ || query_id != std::to_string(query_id_)) | 108 if (!is_query_running_ || query_id != std::to_string(query_id_)) |
| 108 return; | 109 return; |
| 109 | 110 |
| 110 // If |extension| is not in the listener extensions list, ignore it. | 111 // If |extension| is not in the listener extensions list, ignore it. |
| 111 if (!ContainsValue(GetListenerExtensionIds(), extension->id())) | 112 if (!ContainsValue(GetListenerExtensionIds(), extension->id())) |
| 112 return; | 113 return; |
| 113 | 114 |
| 114 // Set search results to provider. | 115 // Set search results to provider. |
| 115 DCHECK(provider_); | 116 DCHECK(provider_); |
| 116 ScopedVector<app_list::LauncherSearchResult> search_results; | 117 ScopedVector<app_list::LauncherSearchResult> search_results; |
| 117 for (const auto& result : results) { | 118 for (const auto& result : results) { |
| 118 const int relevance = | 119 const int relevance = |
| 119 std::min(kMaxSearchResultScore, std::max(result->relevance, 0)); | 120 std::min(kMaxSearchResultScore, std::max(result->relevance, 0)); |
| 120 const GURL icon_url = | 121 const GURL icon_url = |
| 121 result->icon_url ? GURL(*result->icon_url.get()) : GURL(); | 122 result->icon_url ? GURL(*result->icon_url.get()) : GURL(); |
| 122 | 123 |
| 123 app_list::LauncherSearchResult* search_result = | 124 app_list::LauncherSearchResult* search_result = |
| 124 new app_list::LauncherSearchResult(result->item_id, icon_url, relevance, | 125 new app_list::LauncherSearchResult(result->item_id, icon_url, relevance, |
| 125 profile_, extension); | 126 profile_, extension, |
| 127 error_reporter->Duplicate()); |
| 126 search_result->set_title(base::UTF8ToUTF16(result->title)); | 128 search_result->set_title(base::UTF8ToUTF16(result->title)); |
| 127 search_results.push_back(search_result); | 129 search_results.push_back(search_result); |
| 128 } | 130 } |
| 129 provider_->SetSearchResults(extension->id(), search_results.Pass()); | 131 provider_->SetSearchResults(extension->id(), search_results.Pass()); |
| 130 } | 132 } |
| 131 | 133 |
| 132 bool Service::IsQueryRunning() const { | 134 bool Service::IsQueryRunning() const { |
| 133 return is_query_running_; | 135 return is_query_running_; |
| 134 } | 136 } |
| 135 | 137 |
| 136 std::set<ExtensionId> Service::GetListenerExtensionIds() { | 138 std::set<ExtensionId> Service::GetListenerExtensionIds() { |
| 139 // TODO(yawano): Cache this result for optimization (crbug.com/440649). |
| 137 std::set<ExtensionId> extension_ids; | 140 std::set<ExtensionId> extension_ids; |
| 138 | 141 |
| 139 const ExtensionSet& extension_set = extension_registry_->enabled_extensions(); | 142 const ExtensionSet& extension_set = extension_registry_->enabled_extensions(); |
| 140 for (scoped_refptr<const extensions::Extension> extension : extension_set) { | 143 for (scoped_refptr<const extensions::Extension> extension : extension_set) { |
| 141 const extensions::PermissionsData* permission_data = | 144 const extensions::PermissionsData* permission_data = |
| 142 extension->permissions_data(); | 145 extension->permissions_data(); |
| 143 const bool has_permission = permission_data->HasAPIPermission( | 146 const bool has_permission = permission_data->HasAPIPermission( |
| 144 extensions::APIPermission::kLauncherSearchProvider); | 147 extensions::APIPermission::kLauncherSearchProvider); |
| 145 if (has_permission) | 148 if (has_permission) |
| 146 extension_ids.insert(extension->id()); | 149 extension_ids.insert(extension->id()); |
| 147 } | 150 } |
| 148 | 151 |
| 149 return extension_ids; | 152 return extension_ids; |
| 150 } | 153 } |
| 151 | 154 |
| 152 } // namespace launcher_search_provider | 155 } // namespace launcher_search_provider |
| 153 } // namespace chromeos | 156 } // namespace chromeos |
| OLD | NEW |