OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/file_manager/file_browser_handlers.
h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_handlers.
h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/i18n/case_conversion.h" | 9 #include "base/i18n/case_conversion.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 if (ShouldBeOpenedWithBrowser(extension->id(), action_id)) { | 519 if (ShouldBeOpenedWithBrowser(extension->id(), action_id)) { |
520 return OpenFilesWithBrowser(profile, file_urls); | 520 return OpenFilesWithBrowser(profile, file_urls); |
521 } | 521 } |
522 | 522 |
523 // The executor object will be self deleted on completion. | 523 // The executor object will be self deleted on completion. |
524 (new FileBrowserHandlerExecutor( | 524 (new FileBrowserHandlerExecutor( |
525 profile, extension, tab_id, action_id))->Execute(file_urls, done); | 525 profile, extension, tab_id, action_id))->Execute(file_urls, done); |
526 return true; | 526 return true; |
527 } | 527 } |
528 | 528 |
529 bool IsFallbackFileBrowserHandler(const FileBrowserHandler* handler) { | 529 bool IsFallbackFileBrowserHandler(const file_tasks::TaskDescriptor& task) { |
530 const std::string& extension_id = handler->extension_id(); | 530 return (task.task_type == file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER && |
531 return (extension_id == kFileManagerAppId || | 531 (task.app_id == kFileManagerAppId || |
532 extension_id == extension_misc::kQuickOfficeComponentExtensionId || | 532 task.app_id == extension_misc::kQuickOfficeComponentExtensionId || |
533 extension_id == extension_misc::kQuickOfficeDevExtensionId || | 533 task.app_id == extension_misc::kQuickOfficeDevExtensionId || |
534 extension_id == extension_misc::kQuickOfficeExtensionId); | 534 task.app_id == extension_misc::kQuickOfficeExtensionId)); |
535 } | 535 } |
536 | 536 |
537 FileBrowserHandlerList FindDefaultFileBrowserHandlers( | 537 FileBrowserHandlerList FindDefaultFileBrowserHandlers( |
538 const PrefService& pref_service, | 538 const PrefService& pref_service, |
539 const std::vector<base::FilePath>& file_list, | 539 const std::vector<base::FilePath>& file_list, |
540 const FileBrowserHandlerList& common_handlers) { | 540 const FileBrowserHandlerList& common_handlers) { |
541 FileBrowserHandlerList default_handlers; | 541 FileBrowserHandlerList default_handlers; |
542 | 542 |
543 std::set<std::string> default_ids; | 543 std::set<std::string> default_ids; |
544 for (std::vector<base::FilePath>::const_iterator it = file_list.begin(); | 544 for (std::vector<base::FilePath>::const_iterator it = file_list.begin(); |
545 it != file_list.end(); ++it) { | 545 it != file_list.end(); ++it) { |
546 std::string task_id = file_tasks::GetDefaultTaskIdFromPrefs( | 546 std::string task_id = file_tasks::GetDefaultTaskIdFromPrefs( |
547 pref_service, "", it->Extension()); | 547 pref_service, "", it->Extension()); |
548 if (!task_id.empty()) | 548 if (!task_id.empty()) |
549 default_ids.insert(task_id); | 549 default_ids.insert(task_id); |
550 } | 550 } |
551 | 551 |
552 const FileBrowserHandler* fallback_handler = NULL; | 552 const FileBrowserHandler* fallback_handler = NULL; |
553 // Convert the default task IDs collected above to one of the handler pointers | 553 // Convert the default task IDs collected above to one of the handler pointers |
554 // from common_handlers. | 554 // from common_handlers. |
555 for (size_t i = 0; i < common_handlers.size(); ++i) { | 555 for (size_t i = 0; i < common_handlers.size(); ++i) { |
556 const FileBrowserHandler* handler = common_handlers[i]; | 556 const FileBrowserHandler* handler = common_handlers[i]; |
557 std::string task_id = file_tasks::MakeTaskID( | 557 const file_tasks::TaskDescriptor task_descriptor( |
558 handler->extension_id(), | 558 handler->extension_id(), |
559 file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER, | 559 file_tasks::TASK_TYPE_FILE_BROWSER_HANDLER, |
560 handler->id()); | 560 handler->id()); |
| 561 const std::string task_id = |
| 562 file_tasks::TaskDescriptorToId(task_descriptor); |
561 std::set<std::string>::iterator default_iter = default_ids.find(task_id); | 563 std::set<std::string>::iterator default_iter = default_ids.find(task_id); |
562 if (default_iter != default_ids.end()) { | 564 if (default_iter != default_ids.end()) { |
563 default_handlers.push_back(handler); | 565 default_handlers.push_back(handler); |
564 continue; | 566 continue; |
565 } | 567 } |
566 | 568 |
567 // Remember the first fallback handler. | 569 // Remember the first fallback handler. |
568 if (!fallback_handler && IsFallbackFileBrowserHandler(handler)) | 570 if (!fallback_handler && IsFallbackFileBrowserHandler(task_descriptor)) |
569 fallback_handler = handler; | 571 fallback_handler = handler; |
570 } | 572 } |
571 | 573 |
572 // If there are no default handlers found, use fallback as default. | 574 // If there are no default handlers found, use fallback as default. |
573 if (fallback_handler && default_handlers.empty()) | 575 if (fallback_handler && default_handlers.empty()) |
574 default_handlers.push_back(fallback_handler); | 576 default_handlers.push_back(fallback_handler); |
575 | 577 |
576 return default_handlers; | 578 return default_handlers; |
577 } | 579 } |
578 | 580 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 } | 658 } |
657 | 659 |
658 // If there are no default handlers, use first handler in the list (file | 660 // If there are no default handlers, use first handler in the list (file |
659 // manager does the same in this situation). TODO(tbarzic): This is not so | 661 // manager does the same in this situation). TODO(tbarzic): This is not so |
660 // optimal behaviour. | 662 // optimal behaviour. |
661 return *common_handlers.begin(); | 663 return *common_handlers.begin(); |
662 } | 664 } |
663 | 665 |
664 } // namespace file_browser_handlers | 666 } // namespace file_browser_handlers |
665 } // namespace file_manager | 667 } // namespace file_manager |
OLD | NEW |