| 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 |