summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraberent <aberent@chromium.org>2016-02-09 04:01:47 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-09 12:02:52 +0000
commit1d18dfd38d7b13dc08864f051942eafa4372f7b4 (patch)
treec6b17af8d0340ef848b3d2c3f3aaa91fd93cc90f
parent0b737b493aabf77500b715aa626a5633fb6ec365 (diff)
downloadchromium_src-1d18dfd38d7b13dc08864f051942eafa4372f7b4.zip
chromium_src-1d18dfd38d7b13dc08864f051942eafa4372f7b4.tar.gz
chromium_src-1d18dfd38d7b13dc08864f051942eafa4372f7b4.tar.bz2
Clean up RemoteMediaPlayerBridge
This removes the derivation from MediaPlayerBridge, and also removes the listeners. It also fixes a minor bug in the error handling. BUG=577110 Review URL: https://codereview.chromium.org/1679863002 Cr-Commit-Position: refs/heads/master@{#374352}
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java80
-rw-r--r--chrome/browser/media/android/remote/remote_media_player_bridge.cc15
-rw-r--r--chrome/browser/media/android/remote/remote_media_player_bridge.h5
3 files changed, 15 insertions, 85 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java
index 466b802..5cd60d9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java
@@ -4,11 +4,7 @@
package org.chromium.chrome.browser.media.remote;
-import android.annotation.SuppressLint;
-import android.content.Context;
import android.graphics.Bitmap;
-import android.media.MediaPlayer;
-import android.os.Build;
import org.chromium.base.CommandLine;
import org.chromium.base.Log;
@@ -16,27 +12,15 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.media.remote.RemoteVideoInfo.PlayerState;
-import org.chromium.media.MediaPlayerBridge;
/**
* Acts as a proxy between the remotely playing video and the HTMLMediaElement.
- *
- * Note that the only reason this derives from MediaPlayerBridge is that the
- * MediaPlayerListener takes a MediaPlayerBridge in its constructor.
- * TODO(aberent) fix this by creating a MediaPlayerBridgeInterface (or similar).
*/
@JNINamespace("remote_media")
-public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
+public class RemoteMediaPlayerBridge {
private long mStartPositionMillis;
private long mNativeRemoteMediaPlayerBridge;
- // TODO(dgn) We don't create MediaPlayerListener using a RemoteMediaPlayerBridge anymore so
- // the inheritance and the extra listeners can now go away. (https://crbug.com/577110)
- private MediaPlayer.OnCompletionListener mOnCompletionListener;
- private MediaPlayer.OnSeekCompleteListener mOnSeekCompleteListener;
- private MediaPlayer.OnErrorListener mOnErrorListener;
- private MediaPlayer.OnPreparedListener mOnPreparedListener;
-
/**
* The route controller for the video, null if no appropriate route controller.
*/
@@ -71,12 +55,8 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
@Override
public void onError() {
- if (mActive && mOnErrorListener != null) {
- @SuppressLint("InlinedApi")
- int errorExtra = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1
- ? MediaPlayer.MEDIA_ERROR_TIMED_OUT
- : 0;
- mOnErrorListener.onError(null, MediaPlayer.MEDIA_ERROR_UNKNOWN, errorExtra);
+ if (mActive && mNativeRemoteMediaPlayerBridge != 0) {
+ nativeOnError(mNativeRemoteMediaPlayerBridge);
}
}
@@ -97,7 +77,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
public void onPlaybackStateChanged(PlayerState newState) {
if (mNativeRemoteMediaPlayerBridge == 0) return;
if (newState == PlayerState.FINISHED || newState == PlayerState.INVALIDATED) {
- onCompleted();
nativeOnPlaybackFinished(mNativeRemoteMediaPlayerBridge);
} else if (newState == PlayerState.PLAYING) {
nativeOnPlaying(mNativeRemoteMediaPlayerBridge);
@@ -264,28 +243,24 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
mPosterBitmap = bitmap;
}
- @Override
@CalledByNative
protected boolean isPlaying() {
if (mRouteController == null) return false;
return mRouteController.isPlaying();
}
- @Override
@CalledByNative
protected int getCurrentPosition() {
if (mRouteController == null) return 0;
return (int) mRouteController.getPosition();
}
- @Override
@CalledByNative
protected int getDuration() {
if (mRouteController == null) return 0;
return (int) mRouteController.getDuration();
}
- @Override
@CalledByNative
protected void release() {
// Remove the state change listeners. Release does mean that Chrome is no longer interested
@@ -294,26 +269,22 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
mActive = false;
}
- @Override
@CalledByNative
protected void setVolume(double volume) {
}
- @Override
@CalledByNative
protected void start() throws IllegalStateException {
mPauseRequested = false;
if (mRouteController != null && mRouteController.isBeingCast()) mRouteController.resume();
}
- @Override
@CalledByNative
protected void pause() throws IllegalStateException {
mPauseRequested = true;
if (mRouteController != null && mRouteController.isBeingCast()) mRouteController.pause();
}
- @Override
@CalledByNative
protected void seekTo(int msec) throws IllegalStateException {
mSeekRequested = true;
@@ -323,55 +294,12 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
}
}
- @Override
- protected boolean setDataSource(
- Context context, String url, String cookies, String userAgent, boolean hideUrlLog) {
- return true;
- }
-
- @Override
- protected void setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener) {
- }
-
- @Override
- protected void setOnCompletionListener(MediaPlayer.OnCompletionListener listener) {
- mOnCompletionListener = listener;
- }
-
- @Override
- protected void setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener) {
- mOnSeekCompleteListener = listener;
- }
-
- @Override
- protected void setOnErrorListener(MediaPlayer.OnErrorListener listener) {
- mOnErrorListener = listener;
- }
-
- @Override
- protected void setOnPreparedListener(MediaPlayer.OnPreparedListener listener) {
- }
-
- @Override
- protected void setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener) {
- }
-
- /**
- * Called when the video finishes
- */
- public void onCompleted() {
- if (mActive && mOnCompletionListener != null) {
- mOnCompletionListener.onCompletion(null);
- }
- }
-
private void onRouteAvailabilityChange() {
if (mNativeRemoteMediaPlayerBridge == 0) return;
boolean usable = mRouteIsAvailable && mIsPlayable;
nativeOnRouteAvailabilityChanged(mNativeRemoteMediaPlayerBridge, usable);
}
- @Override
@CalledByNative
protected void destroy() {
if (mDebug) Log.i(TAG, "destroy");
@@ -399,7 +327,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
});
}
- private native String nativeGetFrameUrl(long nativeRemoteMediaPlayerBridge);
private native void nativeOnPlaying(long nativeRemoteMediaPlayerBridge);
private native void nativeOnPaused(long nativeRemoteMediaPlayerBridge);
private native void nativeOnRouteUnselected(long nativeRemoteMediaPlayerBridge);
@@ -412,5 +339,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
private native void nativeOnCastStarting(long nativeRemoteMediaPlayerBridge,
String castingMessage);
private native void nativeOnCastStopping(long nativeRemoteMediaPlayerBridge);
+ private native void nativeOnError(long nativeRemoteMediaPlayerBridge);
private native void nativeOnSeekCompleted(long nativeRemoteMediaPlayerBridge);
}
diff --git a/chrome/browser/media/android/remote/remote_media_player_bridge.cc b/chrome/browser/media/android/remote/remote_media_player_bridge.cc
index 01e6ffb..b09b150 100644
--- a/chrome/browser/media/android/remote/remote_media_player_bridge.cc
+++ b/chrome/browser/media/android/remote/remote_media_player_bridge.cc
@@ -194,12 +194,6 @@ void RemoteMediaPlayerBridge::SetVideoSurface(gfx::ScopedJavaSurface surface) {
local_player_->SetVideoSurface(std::move(surface));
}
-base::android::ScopedJavaLocalRef<jstring> RemoteMediaPlayerBridge::GetFrameUrl(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- return ConvertUTF8ToJavaString(env, frame_url().spec());
-}
-
void RemoteMediaPlayerBridge::OnPlaying(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
static_cast<RemoteMediaPlayerManager *>(manager())->OnPlaying(player_id());
@@ -432,6 +426,15 @@ base::android::ScopedJavaLocalRef<jstring> RemoteMediaPlayerBridge::GetTitle(
return base::android::ConvertUTF16ToJavaString(env, title);
}
+void RemoteMediaPlayerBridge::OnError(
+ JNIEnv* env, const base::android::JavaParamRef<jobject>& obj) {
+ // TODO(https://crbug.com/585379) implement some useful codes for remote
+ // playback. None of the existing MediaPlayerAndroid codes are
+ // relevant for remote playback.
+ manager()->OnError(player_id(), MEDIA_ERROR_INVALID_CODE);
+}
+
+
void RemoteMediaPlayerBridge::OnCookiesRetrieved(const std::string& cookies) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// TODO(aberent) Do we need to retrieve auth credentials for basic
diff --git a/chrome/browser/media/android/remote/remote_media_player_bridge.h b/chrome/browser/media/android/remote/remote_media_player_bridge.h
index adbd1a9..10eb46b 100644
--- a/chrome/browser/media/android/remote/remote_media_player_bridge.h
+++ b/chrome/browser/media/android/remote/remote_media_player_bridge.h
@@ -57,9 +57,6 @@ class RemoteMediaPlayerBridge : public media::MediaPlayerAndroid {
GURL GetFirstPartyForCookies() override;
// JNI functions
- base::android::ScopedJavaLocalRef<jstring> GetFrameUrl(
- JNIEnv* env,
- const base::android::JavaParamRef<jobject>& obj);
void OnPlaying(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
void OnPaused(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
void OnRouteUnselected(JNIEnv* env,
@@ -84,6 +81,8 @@ class RemoteMediaPlayerBridge : public media::MediaPlayerAndroid {
const base::android::JavaParamRef<jobject>& obj);
void OnSeekCompleted(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
+ void OnError(JNIEnv *env,
+ const base::android::JavaParamRef<jobject>& obj);
// Wrappers for calls to Java used by the remote media player manager
void RequestRemotePlayback();