diff options
author | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-12 21:32:54 +0000 |
---|---|---|
committer | qinmin@chromium.org <qinmin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-12 21:32:54 +0000 |
commit | 68013e64c6e2fe20116352f987299605245c56a3 (patch) | |
tree | b5fbda962efecf8e42d5de1d5684cbe386c1d1e3 /media | |
parent | fa4a458315fa15f2077a63ce3f5578bc499655be (diff) | |
download | chromium_src-68013e64c6e2fe20116352f987299605245c56a3.zip chromium_src-68013e64c6e2fe20116352f987299605245c56a3.tar.gz chromium_src-68013e64c6e2fe20116352f987299605245c56a3.tar.bz2 |
Upstream WebVideoFrameAndroid and fix some bugs in MediaPlayerBridge code
This CL includes the following changes:
1. upstream WebVideoFrameAndroid to prepare for the WebMediaPlayerAndroid upstreaming
2. introduced one more enum to capture undocumentde error types.
3. Changed SetDataSource() function in MediaPlayerBridge so WebMediaPlayerAndroid don't need to handle the url headers
BUG=
TEST=
Review URL: http://codereview.chromium.org/10051019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132064 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/base/android/java/org/chromium/media/MediaPlayerListener.java | 7 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.cc | 18 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.h | 5 |
3 files changed, 26 insertions, 4 deletions
diff --git a/media/base/android/java/org/chromium/media/MediaPlayerListener.java b/media/base/android/java/org/chromium/media/MediaPlayerListener.java index fd56599..06bd46a 100644 --- a/media/base/android/java/org/chromium/media/MediaPlayerListener.java +++ b/media/base/android/java/org/chromium/media/MediaPlayerListener.java @@ -22,6 +22,7 @@ class MediaPlayerListener implements MediaPlayer.OnPreparedListener, private static final int MEDIA_ERROR_UNKNOWN = 0; private static final int MEDIA_ERROR_SERVER_DIED = 1; private static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 2; + private static final int MEDIA_ERROR_INVALID_CODE = 3; private static final int MEDIA_INFO_UNKNOWN = 0; private static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 1; @@ -85,7 +86,11 @@ class MediaPlayerListener implements MediaPlayer.OnPreparedListener, errorType = MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK; break; default: - errorType = MEDIA_ERROR_UNKNOWN; + // There are some undocumented error codes for android media player. + // For example, when surfaceTexture got deleted before we setVideoSuface + // to NULL, mediaplayer will report error -38. These errors should be ignored + // and not be treated as an error to webkit. + errorType = MEDIA_ERROR_INVALID_CODE; break; } nativeOnMediaError(mNativeMediaPlayerBridge, errorType); diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc index 11955b8..a494777 100644 --- a/media/base/android/media_player_bridge.cc +++ b/media/base/android/media_player_bridge.cc @@ -81,7 +81,8 @@ MediaPlayerBridge::~MediaPlayerBridge() { void MediaPlayerBridge::SetDataSource( const std::string& url, - const std::map<std::string, std::string>& headers) { + const std::string& cookies, + bool hide_url_log) { JNIEnv* env = AttachCurrentThread(); CHECK(env); @@ -103,6 +104,15 @@ void MediaPlayerBridge::SetDataSource( jmethodID put_method = GetMethodID(env, cls, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); + // Construct headers that needs to be sent with the url. + HeadersMap headers; + // For incognito mode, we need a header to hide url log. + if (hide_url_log) + headers.insert(std::make_pair("x-hide-urls-from-log", "true")); + // If cookies are present, add them in the header. + if (!cookies.empty()) + headers.insert(std::make_pair("Cookie", cookies)); + // Fill the Map with the headers. for (HeadersMap::const_iterator iter = headers.begin(); iter != headers.end(); ++iter) { @@ -194,7 +204,11 @@ void MediaPlayerBridge::SeekTo(base::TimeDelta time, jmethodID method = GetMethodID(env, j_media_player_class_, "seekTo", "(I)V"); DCHECK(method); - env->CallVoidMethod(j_media_player_.obj(), method, time.InMilliseconds()); + int time_msec = static_cast<int>(time.InMilliseconds()); + DCHECK_EQ(time.InMilliseconds(), static_cast<int64>(time_msec)); + env->CallVoidMethod(j_media_player_.obj(), + method, + time_msec); CheckException(env); } diff --git a/media/base/android/media_player_bridge.h b/media/base/android/media_player_bridge.h index 6499e46..98cafb9 100644 --- a/media/base/android/media_player_bridge.h +++ b/media/base/android/media_player_bridge.h @@ -33,6 +33,7 @@ class MediaPlayerBridge { MEDIA_ERROR_UNKNOWN, MEDIA_ERROR_SERVER_DIED, MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK, + MEDIA_ERROR_INVALID_CODE, }; // Info types for MediaInfoCB. @@ -62,7 +63,9 @@ class MediaPlayerBridge { ~MediaPlayerBridge(); typedef std::map<std::string, std::string> HeadersMap; - void SetDataSource(const std::string& url, const HeadersMap& headers); + void SetDataSource(const std::string& url, + const std::string& cookies, + bool hide_url_log); void SetVideoSurface(jobject surface); |