diff options
author | maybelle@chromium.org <maybelle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-01 17:20:32 +0000 |
---|---|---|
committer | maybelle@chromium.org <maybelle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-01 17:20:32 +0000 |
commit | 297b075ccd1808ed387383a7f3f357ee2229e5d1 (patch) | |
tree | 9234c399bee8f641fc3049cfd7e89fe43fd29557 /media | |
parent | 4deac0de619aa03721e3cadd0622de98c693360e (diff) | |
download | chromium_src-297b075ccd1808ed387383a7f3f357ee2229e5d1.zip chromium_src-297b075ccd1808ed387383a7f3f357ee2229e5d1.tar.gz chromium_src-297b075ccd1808ed387383a7f3f357ee2229e5d1.tar.bz2 |
Allow getAllowedOperations() to be overridden so we don't crash when playing a video remotely
NOTRY=true
Review URL: https://codereview.chromium.org/44113005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232420 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java | 8 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.cc | 24 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.h | 9 |
3 files changed, 29 insertions, 12 deletions
diff --git a/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java b/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java index 733a7a1..ecf4458 100644 --- a/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java +++ b/media/base/android/java/src/org/chromium/media/MediaPlayerBridge.java @@ -145,12 +145,12 @@ public class MediaPlayerBridge { getLocalPlayer().setOnVideoSizeChangedListener(listener); } - private static class AllowedOperations { + protected static class AllowedOperations { private final boolean mCanPause; private final boolean mCanSeekForward; private final boolean mCanSeekBackward; - private AllowedOperations(boolean canPause, boolean canSeekForward, + public AllowedOperations(boolean canPause, boolean canSeekForward, boolean canSeekBackward) { mCanPause = canPause; mCanSeekForward = canSeekForward; @@ -172,8 +172,8 @@ public class MediaPlayerBridge { * allowed on the media player. */ @CalledByNative - private static AllowedOperations getAllowedOperations(MediaPlayerBridge bridge) { - MediaPlayer player = bridge.getLocalPlayer(); + protected AllowedOperations getAllowedOperations() { + MediaPlayer player = getLocalPlayer(); boolean canPause = true; boolean canSeekForward = true; boolean canSeekBackward = true; diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc index dddb8a9..435363d 100644 --- a/media/base/android/media_player_bridge.cc +++ b/media/base/android/media_player_bridge.cc @@ -85,6 +85,13 @@ void MediaPlayerBridge::SetJavaMediaPlayerBridge( j_media_player_bridge_.Reset(env, j_media_player_bridge); } +base::android::ScopedJavaLocalRef<jobject> MediaPlayerBridge:: + GetJavaMediaPlayerBridge() { + base::android::ScopedJavaLocalRef<jobject> j_bridge( + j_media_player_bridge_); + return j_bridge; +} + void MediaPlayerBridge::SetMediaPlayerListener() { jobject j_context = base::android::GetApplicationContext(); DCHECK(j_context); @@ -320,18 +327,25 @@ void MediaPlayerBridge::OnMediaPrepared() { pending_play_ = false; } - GetAllowedOperations(); + UpdateAllowedOperations(); manager()->OnMediaMetadataChanged( player_id(), duration_, width_, height_, true); } -void MediaPlayerBridge::GetAllowedOperations() { +ScopedJavaLocalRef<jobject> MediaPlayerBridge::GetAllowedOperations() { JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - ScopedJavaLocalRef<jobject> allowedOperations = - Java_MediaPlayerBridge_getAllowedOperations( - env, j_media_player_bridge_.obj()); + return Java_MediaPlayerBridge_getAllowedOperations( + env, j_media_player_bridge_.obj()); +} + +void MediaPlayerBridge::UpdateAllowedOperations() { + JNIEnv* env = base::android::AttachCurrentThread(); + CHECK(env); + + ScopedJavaLocalRef<jobject> allowedOperations = GetAllowedOperations(); + can_pause_ = Java_AllowedOperations_canPause(env, allowedOperations.obj()); can_seek_forward_ = Java_AllowedOperations_canSeekForward( env, allowedOperations.obj()); diff --git a/media/base/android/media_player_bridge.h b/media/base/android/media_player_bridge.h index 123608d..f47a50d 100644 --- a/media/base/android/media_player_bridge.h +++ b/media/base/android/media_player_bridge.h @@ -81,10 +81,10 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid { protected: void SetJavaMediaPlayerBridge(jobject j_media_player_bridge); + base::android::ScopedJavaLocalRef<jobject> GetJavaMediaPlayerBridge(); void SetMediaPlayerListener(); void SetDuration(base::TimeDelta time); - virtual void PendingSeekInternal(const base::TimeDelta& time); // Prepare the player for playback, asynchronously. When succeeds, @@ -96,6 +96,9 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid { // Create the corresponding Java class instance. virtual void CreateJavaMediaPlayerBridge(); + // Get allowed operations from the player. + virtual base::android::ScopedJavaLocalRef<jobject> GetAllowedOperations(); + private: // Set the data source for the media player. void SetDataSource(const std::string& url); @@ -108,8 +111,8 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid { // Called when |time_update_timer_| fires. void OnTimeUpdateTimerFired(); - // Get allowed operations from the player. - void GetAllowedOperations(); + // Update allowed operations from the player. + void UpdateAllowedOperations(); // Callback function passed to |resource_getter_|. Called when the cookies // are retrieved. |