summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorqinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-16 04:32:43 +0000
committerqinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-16 04:32:43 +0000
commitf2c8999c560c273eeee75f7b7da9ff812e23ccfe (patch)
tree2934873eaf8573db77668f2551d7c07ffdab31ac /media
parent61c215240e8bb9fd5c098ac3ba20c97161651a8b (diff)
downloadchromium_src-f2c8999c560c273eeee75f7b7da9ff812e23ccfe.zip
chromium_src-f2c8999c560c273eeee75f7b7da9ff812e23ccfe.tar.gz
chromium_src-f2c8999c560c273eeee75f7b7da9ff812e23ccfe.tar.bz2
Supporting blob urls for html5 media
Android mediaplayer won't be able to handle blob urls. After xhr requests creates a temporary file with blob url, we need to pass the file path to the media player so it can play the file. TBR=tedchoc BUG=253465 Review URL: https://codereview.chromium.org/98823003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245108 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/base/android/media_player_bridge.cc25
-rw-r--r--media/base/android/media_resource_getter.h4
2 files changed, 16 insertions, 13 deletions
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc
index 31be6c0..22569cb 100644
--- a/media/base/android/media_player_bridge.cc
+++ b/media/base/android/media_player_bridge.cc
@@ -18,7 +18,10 @@ using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
// Time update happens every 250ms.
-static const int kTimeUpdateInterval = 250;
+const int kTimeUpdateInterval = 250;
+
+// blob url scheme.
+const char kBlobScheme[] = "blob";
namespace media {
@@ -56,17 +59,16 @@ MediaPlayerBridge::~MediaPlayerBridge() {
}
void MediaPlayerBridge::Initialize() {
+ cookies_.clear();
if (url_.SchemeIsFile()) {
- cookies_.clear();
ExtractMediaMetadata(url_.spec());
return;
}
media::MediaResourceGetter* resource_getter =
manager()->GetMediaResourceGetter();
- if (url_.SchemeIsFileSystem()) {
- cookies_.clear();
- resource_getter->GetPlatformPathFromFileSystemURL(url_, base::Bind(
+ if (url_.SchemeIsFileSystem() || url_.SchemeIs(kBlobScheme)) {
+ resource_getter->GetPlatformPathFromURL(url_, base::Bind(
&MediaPlayerBridge::ExtractMediaMetadata, weak_this_.GetWeakPtr()));
return;
}
@@ -128,13 +130,14 @@ void MediaPlayerBridge::SetVideoSurface(gfx::ScopedJavaSurface surface) {
void MediaPlayerBridge::Prepare() {
DCHECK(j_media_player_bridge_.is_null());
CreateJavaMediaPlayerBridge();
- if (url_.SchemeIsFileSystem()) {
- manager()->GetMediaResourceGetter()->GetPlatformPathFromFileSystemURL(
- url_, base::Bind(&MediaPlayerBridge::SetDataSource,
- weak_this_.GetWeakPtr()));
- } else {
- SetDataSource(url_.spec());
+ if (url_.SchemeIsFileSystem() || url_.SchemeIs(kBlobScheme)) {
+ manager()->GetMediaResourceGetter()->GetPlatformPathFromURL(
+ url_, base::Bind(&MediaPlayerBridge::SetDataSource,
+ weak_this_.GetWeakPtr()));
+ return;
}
+
+ SetDataSource(url_.spec());
}
void MediaPlayerBridge::SetDataSource(const std::string& url) {
diff --git a/media/base/android/media_resource_getter.h b/media/base/android/media_resource_getter.h
index 7be7811..075f9d0 100644
--- a/media/base/android/media_resource_getter.h
+++ b/media/base/android/media_resource_getter.h
@@ -30,8 +30,8 @@ class MEDIA_EXPORT MediaResourceGetter {
const GURL& first_party_for_cookies,
const GetCookieCB& callback) = 0;
- // Method for getting the platform path from a file system URL.
- virtual void GetPlatformPathFromFileSystemURL(
+ // Method for getting the platform path from a file system or blob URL.
+ virtual void GetPlatformPathFromURL(
const GURL& url,
const GetPlatformPathCB& callback) = 0;