| Index: chrome/browser/chromeos/file_manager/file_tasks.cc
|
| diff --git a/chrome/browser/chromeos/file_manager/file_tasks.cc b/chrome/browser/chromeos/file_manager/file_tasks.cc
|
| index 9572b954c89f3ec5e8649f55737d89eaeb37bd38..720c4015fff3bce5f317b3021c557f3a4c73dc22 100644
|
| --- a/chrome/browser/chromeos/file_manager/file_tasks.cc
|
| +++ b/chrome/browser/chromeos/file_manager/file_tasks.cc
|
| @@ -107,6 +107,48 @@ void KeepOnlyFileManagerInternalTasks(std::vector<FullTaskDescriptor>* tasks) {
|
| tasks->swap(filtered);
|
| }
|
|
|
| +// Finds a task that matches |app_id| and |action_id| from |task_list|.
|
| +// Returns a mutable iterator to the handler if found. Returns task_list->end()
|
| +// if not found.
|
| +std::vector<FullTaskDescriptor>::iterator
|
| +FindTaskForAppIdAndActionId(
|
| + std::vector<FullTaskDescriptor>* task_list,
|
| + const std::string& app_id,
|
| + const std::string& action_id) {
|
| + DCHECK(task_list);
|
| +
|
| + std::vector<FullTaskDescriptor>::iterator iter = task_list->begin();
|
| + while (iter != task_list->end() &&
|
| + !(iter->task_descriptor().app_id == app_id &&
|
| + iter->task_descriptor().action_id == action_id)) {
|
| + ++iter;
|
| + }
|
| + return iter;
|
| +}
|
| +
|
| +// Chooses a suitable video handeler and removes other internal video hander.
|
| +// Both "watch" and "gallery-video" actions are applicable which means that the
|
| +// selection is all videos. Showing them both is confusing, so we only keep
|
| +// the one that makes more sense ("watch" for single selection, "gallery"
|
| +// for multiple selection).
|
| +void ChooseSuitableVideoHandler(
|
| + const std::vector<GURL>& file_urls,
|
| + std::vector<FullTaskDescriptor>* task_list) {
|
| + std::vector<FullTaskDescriptor>::iterator video_player_iter =
|
| + FindTaskForAppIdAndActionId(task_list, kVideoPlayerAppId, "video");
|
| + std::vector<FullTaskDescriptor>::iterator gallery_video_iter =
|
| + FindTaskForAppIdAndActionId(
|
| + task_list, kFileManagerAppId, "gallery-video");
|
| +
|
| + if (video_player_iter != task_list->end() &&
|
| + gallery_video_iter != task_list->end()) {
|
| + if (file_urls.size() == 1)
|
| + task_list->erase(gallery_video_iter);
|
| + else
|
| + task_list->erase(video_player_iter);
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| FullTaskDescriptor::FullTaskDescriptor(
|
| @@ -467,6 +509,8 @@ void FindAllTypesOfTasks(
|
| if (ContainsGoogleDocument(path_mime_set))
|
| KeepOnlyFileManagerInternalTasks(result_list);
|
|
|
| + ChooseSuitableVideoHandler(file_urls, result_list);
|
| +
|
| ChooseAndSetDefaultTask(*profile->GetPrefs(), path_mime_set, result_list);
|
| }
|
|
|
|
|