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 |