summaryrefslogtreecommitdiffstats
path: root/chrome/browser/platform_util_chromeos.cc
diff options
context:
space:
mode:
authorzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-08 16:38:20 +0000
committerzelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-08 16:38:20 +0000
commit768d5f0b1c9601a2fdc1d17146fb450625a80e8c (patch)
treedf9eb15b4c67f23c5cb179adc2a167fd13fa16fb /chrome/browser/platform_util_chromeos.cc
parent8393d908ae70b054d6899d64859667653487f4bf (diff)
downloadchromium_src-768d5f0b1c9601a2fdc1d17146fb450625a80e8c.zip
chromium_src-768d5f0b1c9601a2fdc1d17146fb450625a80e8c.tar.gz
chromium_src-768d5f0b1c9601a2fdc1d17146fb450625a80e8c.tar.bz2
Revert 84573 - Added enqueue task to media player. Fixed task ordering - the last used handler task comes first, all others are sorted alphabetically.
BUG=chromium-os:15023 TEST=make sure enqueue task shows up when media content is selected in file browser Review URL: http://codereview.chromium.org/6953007 TBR=zelidrag@chromium.org Review URL: http://codereview.chromium.org/6966002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84576 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/platform_util_chromeos.cc')
-rw-r--r--chrome/browser/platform_util_chromeos.cc75
1 files changed, 74 insertions, 1 deletions
diff --git a/chrome/browser/platform_util_chromeos.cc b/chrome/browser/platform_util_chromeos.cc
index 2b29de3..4a4d23e 100644
--- a/chrome/browser/platform_util_chromeos.cc
+++ b/chrome/browser/platform_util_chromeos.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/platform_util.h"
+#include <gtk/gtk.h>
+
#include "base/file_util.h"
#include "base/process_util.h"
#include "base/task.h"
@@ -11,10 +13,13 @@
#include "chrome/browser/extensions/file_manager_util.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
+#include "chrome/browser/ui/webui/mediaplayer_ui.h"
#include "chrome/browser/tabs/tab_strip_model.h"
#include "content/browser/browser_thread.h"
#include "content/common/process_watcher.h"
#include "googleurl/src/gurl.h"
+#include "grit/generated_resources.h"
+#include "ui/base/l10n/l10n_util.h"
class Profile;
@@ -50,8 +55,76 @@ void ShowItemInFolder(const FilePath& full_path) {
}
}
+const char* kBrowserSupportedExtensions[] = {
+ ".jpg", ".jpeg", ".png", ".webp", ".gif", ".pdf", ".txt", ".html", ".htm"
+};
+
+const char* kAVExtensions[] = {
+ ".webm", ".mp4", ".m4v", ".mov", ".ogm", ".ogv", ".ogx",
+ ".mp3", ".m4a", ".ogg", ".oga", ".wav",
+/* TODO(zelidrag): Add unsupported ones as we enable them:
+ ".3gp", ".mkv", ".avi", ".divx", ".xvid", ".wmv", ".asf", ".mpeg", ".mpg",
+ ".wma", ".aiff",
+*/
+};
+
+bool IsSupportedBrowserExtension(const char* ext) {
+ for (size_t i = 0; i < arraysize(kBrowserSupportedExtensions); i++) {
+ if (base::strcasecmp(ext, kBrowserSupportedExtensions[i]) == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool IsSupportedAVExtension(const char* ext) {
+ for (size_t i = 0; i < arraysize(kAVExtensions); i++) {
+ if (base::strcasecmp(ext, kAVExtensions[i]) == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
+
void OpenItem(const FilePath& full_path) {
- FileManagerUtil::ViewItem(full_path, false);
+ std::string ext = full_path.Extension();
+ // For things supported natively by the browser, we should open it
+ // in a tab.
+ if (IsSupportedBrowserExtension(ext.data())) {
+ std::string path;
+ path = "file://";
+ path.append(full_path.value());
+ if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
+ bool result = BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ NewRunnableFunction(&OpenItem, full_path));
+ DCHECK(result);
+ return;
+ }
+ Browser* browser = BrowserList::GetLastActive();
+ browser->AddSelectedTabWithURL(GURL(path), PageTransition::LINK);
+ return;
+ }
+ if (IsSupportedAVExtension(ext.data())) {
+ Browser* browser = BrowserList::GetLastActive();
+ if (!browser)
+ return;
+ MediaPlayer* mediaplayer = MediaPlayer::GetInstance();
+ mediaplayer->ForcePlayMediaFile(browser->profile(), full_path, NULL);
+ return;
+ }
+
+ // Unknwon file type. Show an error message to user.
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ NewRunnableFunction(
+ &SimpleErrorBox,
+ static_cast<gfx::NativeWindow>(NULL),
+ l10n_util::GetStringUTF16(IDS_FILEBROWSER_ERROR_TITLE),
+ l10n_util::GetStringFUTF16(IDS_FILEBROWSER_ERROR_UNKNOWN_FILE_TYPE,
+ UTF8ToUTF16(full_path.BaseName().value()))
+ ));
}
static void OpenURL(const std::string& url) {