| Index: chrome/browser/chromeos/file_manager/open_util.cc
|
| diff --git a/chrome/browser/chromeos/file_manager/open_util.cc b/chrome/browser/chromeos/file_manager/open_util.cc
|
| index de05b8b7c39c07a9983d9acfe069d6a204b9daa6..9cbc3a072708a49f3f30b844fbbe6604df4dbae8 100644
|
| --- a/chrome/browser/chromeos/file_manager/open_util.cc
|
| +++ b/chrome/browser/chromeos/file_manager/open_util.cc
|
| @@ -103,21 +103,23 @@ void OpenFileWithMimeType(Profile* profile,
|
| file_urls,
|
| &tasks);
|
|
|
| - if (tasks.empty()) {
|
| - callback.Run(false);
|
| - return;
|
| - }
|
| -
|
| - const file_tasks::FullTaskDescriptor* chosen_task = &tasks[0];
|
| - for (size_t i = 0; i < tasks.size(); ++i) {
|
| - if (tasks[i].is_default()) {
|
| - chosen_task = &tasks[i];
|
| - break;
|
| + // Select a default handler. If a default handler is not available, select
|
| + // a non-generic file handler.
|
| + const file_tasks::FullTaskDescriptor* chosen_task = nullptr;
|
| + for (const auto& task : tasks) {
|
| + if (!task.is_generic_file_handler()) {
|
| + chosen_task = &task;
|
| + if (task.is_default())
|
| + break;
|
| }
|
| }
|
|
|
| - ExecuteFileTaskForUrl(profile, chosen_task->task_descriptor(), url);
|
| - callback.Run(true);
|
| + if (chosen_task != nullptr) {
|
| + ExecuteFileTaskForUrl(profile, chosen_task->task_descriptor(), url);
|
| + callback.Run(true);
|
| + } else {
|
| + callback.Run(false);
|
| + }
|
| }
|
|
|
| // Opens the file specified by |url| by finding and executing a file task for
|
|
|