diff options
author | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-08 16:38:20 +0000 |
---|---|---|
committer | zelidrag@chromium.org <zelidrag@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-08 16:38:20 +0000 |
commit | 768d5f0b1c9601a2fdc1d17146fb450625a80e8c (patch) | |
tree | df9eb15b4c67f23c5cb179adc2a167fd13fa16fb /chrome/browser/platform_util_chromeos.cc | |
parent | 8393d908ae70b054d6899d64859667653487f4bf (diff) | |
download | chromium_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.cc | 75 |
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) { |