diff options
author | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-16 04:32:43 +0000 |
---|---|---|
committer | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-16 04:32:43 +0000 |
commit | f2c8999c560c273eeee75f7b7da9ff812e23ccfe (patch) | |
tree | 2934873eaf8573db77668f2551d7c07ffdab31ac /media | |
parent | 61c215240e8bb9fd5c098ac3ba20c97161651a8b (diff) | |
download | chromium_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.cc | 25 | ||||
-rw-r--r-- | media/base/android/media_resource_getter.h | 4 |
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; |