summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authormaybelle@chromium.org <maybelle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-01 17:20:32 +0000
committermaybelle@chromium.org <maybelle@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-01 17:20:32 +0000
commit297b075ccd1808ed387383a7f3f357ee2229e5d1 (patch)
tree9234c399bee8f641fc3049cfd7e89fe43fd29557 /media
parent4deac0de619aa03721e3cadd0622de98c693360e (diff)
downloadchromium_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.java8
-rw-r--r--media/base/android/media_player_bridge.cc24
-rw-r--r--media/base/android/media_player_bridge.h9
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.