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 const 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, error_reporter); |
126 search_result->set_title(base::UTF8ToUTF16(result->title)); | 127 search_result->set_title(base::UTF8ToUTF16(result->title)); |
127 search_results.push_back(search_result); | 128 search_results.push_back(search_result); |
128 } | 129 } |
129 provider_->SetSearchResults(extension->id(), search_results.Pass()); | 130 provider_->SetSearchResults(extension->id(), search_results.Pass()); |
130 } | 131 } |
131 | 132 |
132 bool Service::IsQueryRunning() const { | 133 bool Service::IsQueryRunning() const { |
133 return is_query_running_; | 134 return is_query_running_; |
134 } | 135 } |
135 | 136 |
136 std::set<ExtensionId> Service::GetListenerExtensionIds() { | 137 std::set<ExtensionId> Service::GetListenerExtensionIds() { |
| 138 // TODO(yawano): Cache this result for optimization (crbug.com/440649). |
137 std::set<ExtensionId> extension_ids; | 139 std::set<ExtensionId> extension_ids; |
138 | 140 |
139 const ExtensionSet& extension_set = extension_registry_->enabled_extensions(); | 141 const ExtensionSet& extension_set = extension_registry_->enabled_extensions(); |
140 for (scoped_refptr<const extensions::Extension> extension : extension_set) { | 142 for (scoped_refptr<const extensions::Extension> extension : extension_set) { |
141 const extensions::PermissionsData* permission_data = | 143 const extensions::PermissionsData* permission_data = |
142 extension->permissions_data(); | 144 extension->permissions_data(); |
143 const bool has_permission = permission_data->HasAPIPermission( | 145 const bool has_permission = permission_data->HasAPIPermission( |
144 extensions::APIPermission::kLauncherSearchProvider); | 146 extensions::APIPermission::kLauncherSearchProvider); |
145 if (has_permission) | 147 if (has_permission) |
146 extension_ids.insert(extension->id()); | 148 extension_ids.insert(extension->id()); |
147 } | 149 } |
148 | 150 |
149 return extension_ids; | 151 return extension_ids; |
150 } | 152 } |
151 | 153 |
152 } // namespace launcher_search_provider | 154 } // namespace launcher_search_provider |
153 } // namespace chromeos | 155 } // namespace chromeos |
OLD | NEW |