diff options
author | aberent <aberent@chromium.org> | 2016-02-09 04:01:47 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-09 12:02:52 +0000 |
commit | 1d18dfd38d7b13dc08864f051942eafa4372f7b4 (patch) | |
tree | c6b17af8d0340ef848b3d2c3f3aaa91fd93cc90f | |
parent | 0b737b493aabf77500b715aa626a5633fb6ec365 (diff) | |
download | chromium_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}
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(); |