Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(969)

Unified Diff: chrome/browser/chromeos/file_manager/file_tasks.cc

Issue 215103003: [Files.app] Hide video-player related task menu according to condition (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adressed the comment Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/file_manager/app_id.h ('k') | chrome/browser/extensions/component_loader.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « chrome/browser/chromeos/file_manager/app_id.h ('k') | chrome/browser/extensions/component_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698