Chromium Code Reviews| 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..11959b3bd00fe5e98ab05c81d3fb41d73b01aa4e 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]; |
| + // 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 (size_t i = 0; i < tasks.size(); ++i) { |
|
mtomasz
2015/02/09 04:28:00
nit: Can we use auto and for range loop?
yawano
2015/02/09 04:44:26
Done.
|
| - if (tasks[i].is_default()) { |
| + if (!tasks[i].is_generic_file_handler()) { |
| chosen_task = &tasks[i]; |
| - break; |
| + if (tasks[i].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 |