diff options
author | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-19 22:04:18 +0000 |
---|---|---|
committer | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-19 22:04:18 +0000 |
commit | b0d2751938c9c671a2155e510365c5c3f547608c (patch) | |
tree | 579ae69bd44cb262537c8f45a250b4aa74ffb985 /webkit/media | |
parent | c836a066c24fdc68ad288d19c72af03c00e68945 (diff) | |
download | chromium_src-b0d2751938c9c671a2155e510365c5c3f547608c.zip chromium_src-b0d2751938c9c671a2155e510365c5c3f547608c.tar.gz chromium_src-b0d2751938c9c671a2155e510365c5c3f547608c.tar.bz2 |
Parsing filesystem url before giving it to media player
Android media player directly takes a url to playback a video and it cannot handle filesystem urls.
To solve the problem, we need to translate a filesystem url to a platform path before calling setDataSource().
CookieGetter is renamed to MediaResourceGetter to handle such translations.
BUG=180541
Review URL: https://chromiumcodereview.appspot.com/12595005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189126 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/media')
4 files changed, 30 insertions, 19 deletions
diff --git a/webkit/media/android/webmediaplayer_impl_android.cc b/webkit/media/android/webmediaplayer_impl_android.cc index fe4d0a5..0635087 100644 --- a/webkit/media/android/webmediaplayer_impl_android.cc +++ b/webkit/media/android/webmediaplayer_impl_android.cc @@ -57,7 +57,7 @@ bool WebMediaPlayerImplAndroid::canEnterFullscreen() const { void WebMediaPlayerImplAndroid::InitializeMediaPlayer(GURL url) { GURL first_party_url = frame_->document().firstPartyForCookies(); if (proxy_) { - proxy_->Initialize(player_id(), url.spec(), first_party_url.spec()); + proxy_->Initialize(player_id(), url, first_party_url); if (manager()->IsInFullscreen(frame_)) proxy_->EnterFullscreen(player_id()); } diff --git a/webkit/media/android/webmediaplayer_in_process_android.cc b/webkit/media/android/webmediaplayer_in_process_android.cc index 6bd9c58..0431934 100644 --- a/webkit/media/android/webmediaplayer_in_process_android.cc +++ b/webkit/media/android/webmediaplayer_in_process_android.cc @@ -23,24 +23,30 @@ using media::MediaPlayerBridge; namespace webkit_media { -InProcessCookieGetter::InProcessCookieGetter(WebKit::WebCookieJar* cookie_jar) +InProcessMediaResourceGetter::InProcessMediaResourceGetter( + WebKit::WebCookieJar* cookie_jar) : cookie_jar_(cookie_jar) { } -InProcessCookieGetter::~InProcessCookieGetter() {} +InProcessMediaResourceGetter::~InProcessMediaResourceGetter() {} -void InProcessCookieGetter::GetCookies( - const std::string& url, - const std::string& first_party_for_cookies, +void InProcessMediaResourceGetter::GetCookies( + const GURL& url, + const GURL& first_party_for_cookies, const GetCookieCB& callback) { std::string cookies; if (cookie_jar_ != NULL) { cookies = UTF16ToUTF8( - cookie_jar_->cookies(GURL(url), GURL(first_party_for_cookies))); + cookie_jar_->cookies(url, first_party_for_cookies)); } callback.Run(cookies); } +void InProcessMediaResourceGetter::GetPlatformPathFromFileSystemURL( + const GURL& url, const GetPlatformPathCB& callback) { + callback.Run(std::string()); +} + WebMediaPlayerInProcessAndroid::WebMediaPlayerInProcessAndroid( WebKit::WebFrame* frame, WebMediaPlayerClient* client, @@ -135,8 +141,8 @@ void WebMediaPlayerInProcessAndroid::SetVideoSurface(jobject j_surface) { void WebMediaPlayerInProcessAndroid::InitializeMediaPlayer(GURL url) { GURL first_party_url = frame_->document().firstPartyForCookies(); media_player_.reset(new MediaPlayerBridge( - player_id(), url.spec(), first_party_url.spec(), - new InProcessCookieGetter(cookie_jar_), + player_id(), url, first_party_url, + new InProcessMediaResourceGetter(cookie_jar_), disable_history_logging_, resource_manager_, base::Bind(&WebMediaPlayerInProcessAndroid::MediaErrorCallback, diff --git a/webkit/media/android/webmediaplayer_in_process_android.h b/webkit/media/android/webmediaplayer_in_process_android.h index 0bc7993..77ae734 100644 --- a/webkit/media/android/webmediaplayer_in_process_android.h +++ b/webkit/media/android/webmediaplayer_in_process_android.h @@ -11,7 +11,7 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" -#include "media/base/android/cookie_getter.h" +#include "media/base/android/media_resource_getter.h" #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h" #include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h" @@ -32,21 +32,25 @@ namespace webkit_media { class StreamTextureFactory; class WebMediaPlayerManagerAndroid; -// Class for retrieving the cookies from WebCookieJar. -class InProcessCookieGetter : public media::CookieGetter { +// Class for retrieving the media resources. +class InProcessMediaResourceGetter + : public media::MediaResourceGetter { public: // Construct an InProcessCookieGetter object from a WebCookieJar. - explicit InProcessCookieGetter(WebKit::WebCookieJar* cookie_jar); - virtual ~InProcessCookieGetter(); + explicit InProcessMediaResourceGetter(WebKit::WebCookieJar* cookie_jar); + virtual ~InProcessMediaResourceGetter(); // media::CookieGetter implementation. - virtual void GetCookies(const std::string& url, - const std::string& first_party_for_cookies, + virtual void GetCookies(const GURL& url, + const GURL& first_party_for_cookies, const GetCookieCB& callback) OVERRIDE; + virtual void GetPlatformPathFromFileSystemURL( + const GURL& url, + const GetPlatformPathCB& callback) OVERRIDE; private: WebKit::WebCookieJar* cookie_jar_; - DISALLOW_COPY_AND_ASSIGN(InProcessCookieGetter); + DISALLOW_COPY_AND_ASSIGN(InProcessMediaResourceGetter); }; // This class implements WebKit::WebMediaPlayer by keeping the android diff --git a/webkit/media/android/webmediaplayer_proxy_android.h b/webkit/media/android/webmediaplayer_proxy_android.h index 020862e..3e1322a 100644 --- a/webkit/media/android/webmediaplayer_proxy_android.h +++ b/webkit/media/android/webmediaplayer_proxy_android.h @@ -8,6 +8,7 @@ #include <string> #include "base/time.h" +#include "googleurl/src/gurl.h" namespace webkit_media { @@ -20,8 +21,8 @@ class WebMediaPlayerProxyAndroid { virtual ~WebMediaPlayerProxyAndroid(); // Initialize a MediaPlayerBridge object in browser process - virtual void Initialize(int player_id, const std::string& url, - const std::string& first_party_for_cookies) = 0; + virtual void Initialize(int player_id, const GURL& url, + const GURL& first_party_for_cookies) = 0; // Start the player. virtual void Start(int player_id) = 0; |