OLD | NEW |
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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/file_manager/arc_file_tasks.h" | 5 #include "chrome/browser/chromeos/file_manager/arc_file_tasks.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 } | 150 } |
151 | 151 |
152 // TODO(kinaba): Add conversion logic once other file systems are supported. | 152 // TODO(kinaba): Add conversion logic once other file systems are supported. |
153 return false; | 153 return false; |
154 } | 154 } |
155 | 155 |
156 // Below is the sequence of thread-hopping for loading ARC file tasks. | 156 // Below is the sequence of thread-hopping for loading ARC file tasks. |
157 void OnArcHandlerList( | 157 void OnArcHandlerList( |
158 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, | 158 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, |
159 const FindTasksCallback& callback, | 159 const FindTasksCallback& callback, |
160 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers); | 160 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers); |
161 | 161 |
162 void OnArcIconLoaded( | 162 void OnArcIconLoaded( |
163 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, | 163 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, |
164 const FindTasksCallback& callback, | 164 const FindTasksCallback& callback, |
165 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers, | 165 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers, |
166 std::unique_ptr<arc::ActivityIconLoader::ActivityToIconsMap> icons); | 166 std::unique_ptr<arc::ActivityIconLoader::ActivityToIconsMap> icons); |
167 | 167 |
168 typedef std::map<arc::ActivityIconLoader::ActivityName, GURL> IconUrlMap; | 168 typedef std::map<arc::ActivityIconLoader::ActivityName, GURL> IconUrlMap; |
169 | 169 |
170 std::unique_ptr<IconUrlMap> EncodeIconsToDataURLs( | 170 std::unique_ptr<IconUrlMap> EncodeIconsToDataURLs( |
171 std::unique_ptr<arc::ActivityIconLoader::ActivityToIconsMap> icons); | 171 std::unique_ptr<arc::ActivityIconLoader::ActivityToIconsMap> icons); |
172 | 172 |
173 void OnArcIconEncoded( | 173 void OnArcIconEncoded( |
174 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, | 174 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, |
175 const FindTasksCallback& callback, | 175 const FindTasksCallback& callback, |
176 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers, | 176 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers, |
177 std::unique_ptr<IconUrlMap> icons); | 177 std::unique_ptr<IconUrlMap> icons); |
178 | 178 |
179 // Called after the handlers from ARC is obtained. Proceeds to OnArcIconLoaded. | 179 // Called after the handlers from ARC is obtained. Proceeds to OnArcIconLoaded. |
180 void OnArcHandlerList( | 180 void OnArcHandlerList( |
181 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, | 181 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, |
182 const FindTasksCallback& callback, | 182 const FindTasksCallback& callback, |
183 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers) { | 183 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers) { |
184 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 184 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
185 | 185 |
186 scoped_refptr<arc::ActivityIconLoader> icon_loader = | 186 scoped_refptr<arc::ActivityIconLoader> icon_loader = |
187 GetArcActivityIconLoader(); | 187 GetArcActivityIconLoader(); |
188 if (!icon_loader) { | 188 if (!icon_loader) { |
189 callback.Run(std::move(result_list)); | 189 callback.Run(std::move(result_list)); |
190 return; | 190 return; |
191 } | 191 } |
192 | 192 |
193 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers_filtered = | 193 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers_filtered = |
194 arc::ArcIntentHelperBridge::FilterOutIntentHelper(std::move(handlers)); | 194 arc::ArcIntentHelperBridge::FilterOutIntentHelper(std::move(handlers)); |
195 std::vector<arc::ActivityIconLoader::ActivityName> activity_names; | 195 std::vector<arc::ActivityIconLoader::ActivityName> activity_names; |
196 for (const arc::mojom::UrlHandlerInfoPtr& handler : handlers_filtered) | 196 for (const arc::mojom::IntentHandlerInfoPtr& handler : handlers_filtered) |
197 activity_names.emplace_back(handler->package_name, handler->activity_name); | 197 activity_names.emplace_back(handler->package_name, handler->activity_name); |
198 | 198 |
199 icon_loader->GetActivityIcons( | 199 icon_loader->GetActivityIcons( |
200 activity_names, base::Bind(&OnArcIconLoaded, base::Passed(&result_list), | 200 activity_names, base::Bind(&OnArcIconLoaded, base::Passed(&result_list), |
201 callback, base::Passed(&handlers_filtered))); | 201 callback, base::Passed(&handlers_filtered))); |
202 } | 202 } |
203 | 203 |
204 // Called after icon data for ARC apps are loaded. Proceeds to OnArcIconEncoded. | 204 // Called after icon data for ARC apps are loaded. Proceeds to OnArcIconEncoded. |
205 void OnArcIconLoaded( | 205 void OnArcIconLoaded( |
206 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, | 206 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, |
207 const FindTasksCallback& callback, | 207 const FindTasksCallback& callback, |
208 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers, | 208 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers, |
209 std::unique_ptr<arc::ActivityIconLoader::ActivityToIconsMap> icons) { | 209 std::unique_ptr<arc::ActivityIconLoader::ActivityToIconsMap> icons) { |
210 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 210 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
211 | 211 |
212 base::PostTaskAndReplyWithResult( | 212 base::PostTaskAndReplyWithResult( |
213 content::BrowserThread::GetBlockingPool(), FROM_HERE, | 213 content::BrowserThread::GetBlockingPool(), FROM_HERE, |
214 base::Bind(&EncodeIconsToDataURLs, base::Passed(&icons)), | 214 base::Bind(&EncodeIconsToDataURLs, base::Passed(&icons)), |
215 base::Bind(&OnArcIconEncoded, base::Passed(&result_list), callback, | 215 base::Bind(&OnArcIconEncoded, base::Passed(&result_list), callback, |
216 base::Passed(&handlers))); | 216 base::Passed(&handlers))); |
217 } | 217 } |
218 | 218 |
(...skipping 15 matching lines...) Expand all Loading... |
234 result->insert( | 234 result->insert( |
235 std::make_pair(entry.first, GURL(kPngDataUrlPrefix + encoded))); | 235 std::make_pair(entry.first, GURL(kPngDataUrlPrefix + encoded))); |
236 } | 236 } |
237 return result; | 237 return result; |
238 } | 238 } |
239 | 239 |
240 // Called after icon data is encoded on the blocking pool. | 240 // Called after icon data is encoded on the blocking pool. |
241 void OnArcIconEncoded( | 241 void OnArcIconEncoded( |
242 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, | 242 std::unique_ptr<std::vector<FullTaskDescriptor>> result_list, |
243 const FindTasksCallback& callback, | 243 const FindTasksCallback& callback, |
244 mojo::Array<arc::mojom::UrlHandlerInfoPtr> handlers, | 244 mojo::Array<arc::mojom::IntentHandlerInfoPtr> handlers, |
245 std::unique_ptr<IconUrlMap> icons) { | 245 std::unique_ptr<IconUrlMap> icons) { |
246 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 246 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
247 | 247 |
248 using extensions::api::file_manager_private::Verb; | 248 using extensions::api::file_manager_private::Verb; |
249 for (const arc::mojom::UrlHandlerInfoPtr& handler : handlers) { | 249 for (const arc::mojom::IntentHandlerInfoPtr& handler : handlers) { |
250 std::string name(handler->name); | 250 std::string name(handler->name); |
251 Verb handler_verb = Verb::VERB_NONE; | 251 Verb handler_verb = Verb::VERB_NONE; |
252 if (handler->action == arc::mojom::ActionType::SEND || | 252 if (handler->action == arc::mojom::ActionType::SEND || |
253 handler->action == arc::mojom::ActionType::SEND_MULTIPLE) { | 253 handler->action == arc::mojom::ActionType::SEND_MULTIPLE) { |
254 handler_verb = Verb::VERB_SHARE_WITH; | 254 handler_verb = Verb::VERB_SHARE_WITH; |
255 } | 255 } |
256 const GURL& icon_url = (*icons)[arc::ActivityIconLoader::ActivityName( | 256 const GURL& icon_url = (*icons)[arc::ActivityIconLoader::ActivityName( |
257 handler->package_name, handler->activity_name)]; | 257 handler->package_name, handler->activity_name)]; |
258 result_list->push_back(FullTaskDescriptor( | 258 result_list->push_back(FullTaskDescriptor( |
259 TaskDescriptor( | 259 TaskDescriptor( |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 } else { | 339 } else { |
340 arc_intent_helper->HandleUrlListDeprecated( | 340 arc_intent_helper->HandleUrlListDeprecated( |
341 std::move(urls), AppIdToActivityName(task.app_id)->package_name, | 341 std::move(urls), AppIdToActivityName(task.app_id)->package_name, |
342 StringToArcAction(task.action_id)); | 342 StringToArcAction(task.action_id)); |
343 } | 343 } |
344 return true; | 344 return true; |
345 } | 345 } |
346 | 346 |
347 } // namespace file_tasks | 347 } // namespace file_tasks |
348 } // namespace file_manager | 348 } // namespace file_manager |
OLD | NEW |