summaryrefslogtreecommitdiffstats
path: root/webkit/media
diff options
context:
space:
mode:
authorqinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-19 22:04:18 +0000
committerqinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-19 22:04:18 +0000
commitb0d2751938c9c671a2155e510365c5c3f547608c (patch)
tree579ae69bd44cb262537c8f45a250b4aa74ffb985 /webkit/media
parentc836a066c24fdc68ad288d19c72af03c00e68945 (diff)
downloadchromium_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')
-rw-r--r--webkit/media/android/webmediaplayer_impl_android.cc2
-rw-r--r--webkit/media/android/webmediaplayer_in_process_android.cc22
-rw-r--r--webkit/media/android/webmediaplayer_in_process_android.h20
-rw-r--r--webkit/media/android/webmediaplayer_proxy_android.h5
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;