Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4327)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java

Issue 1403703005: Refactor Clank cast connect logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java
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 7598ff71b7b3c2fbfdae59e0e031690c6ab85a04..fbb6e5ceeff6139fcabb7c676897563e89fbf514 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
@@ -8,7 +8,6 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
-import android.net.Uri;
import android.os.Build;
import android.util.Log;
@@ -37,10 +36,15 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
private MediaPlayer.OnPreparedListener mOnPreparedListener;
private final MediaRouteController mRouteController;
- private final String mSourceUrl;
private final String mFrameUrl;
private final boolean mDebug;
+ private String mSourceUrl;
private Bitmap mPosterBitmap;
+ private String mCookies;
whywhat 2015/10/14 13:28:50 where are these initialized? could most of them be
aberent 2015/10/15 10:31:38 Good catch; looks as if I have deleted the code th
+ private String mUserAgent;
+ private boolean mPauseRequested;
+ private boolean mSeekRequested;
+ private int mSeekLocation;
// mActive is true when the Chrome is playing, or preparing to play, this player's video
// remotely.
@@ -48,7 +52,7 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
private static final String TAG = "RemoteMediaPlayerBridge";
- private MediaRouteController.MediaStateListener mMediaStateListener =
+ private final MediaRouteController.MediaStateListener mMediaStateListener =
new MediaRouteController.MediaStateListener() {
@Override
public void onRouteAvailabilityChanged(boolean available) {
@@ -75,20 +79,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
}
@Override
- public void onPrepared() {
- if (mActive && mOnPreparedListener != null) {
- mOnPreparedListener.onPrepared(null);
- }
- }
-
- @Override
- public void onRouteSelected(String name) {
- if (mNativeRemoteMediaPlayerBridge == 0) return;
- nativeOnRouteSelected(mNativeRemoteMediaPlayerBridge,
- RemoteMediaPlayerController.instance().getCastingMessage(name));
- }
-
- @Override
public void onRouteUnselected() {
if (mNativeRemoteMediaPlayerBridge == 0) return;
nativeOnRouteUnselected(mNativeRemoteMediaPlayerBridge);
@@ -117,6 +107,74 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
public Bitmap getPosterBitmap() {
return mPosterBitmap;
}
+
+ @Override
+ public void pauseLocal() {
+ nativePauseLocal(mNativeRemoteMediaPlayerBridge);
+ }
+
+ @Override
+ public int getLocalPosition() {
+ return nativeGetLocalPosition(mNativeRemoteMediaPlayerBridge);
+ }
+
+ @Override
+ public void switchToRemotePlayer() {
+ nativeSwitchToRemotePlayer(mNativeRemoteMediaPlayerBridge);
+ mActive = true;
+ }
+
+ @Override
+ public void switchToLocalPlayer() {
+ nativeSwitchToLocalPlayer(mNativeRemoteMediaPlayerBridge);
+ mActive = false;
+ }
+
+ @Override
+ public String getSourceUrl() {
+ return mSourceUrl;
+ }
+
+ @Override
+ public String getCookies() {
+ return mCookies;
+ }
+
+ @Override
+ public String getUserAgent() {
+ return mUserAgent;
+ }
+
+ @Override
+ public String getFrameUrl() {
+ return mFrameUrl;
+ }
+
+ @Override
+ public long getStartPositionMillis() {
+ return mStartPositionMillis;
+ }
+
+ @Override
+ public void onPlayingRemotely(String routeName) {
+ nativeOnPlayingRemotely(mNativeRemoteMediaPlayerBridge,
+ RemoteMediaPlayerController.instance().getCastingMessage(routeName));
+ }
+
+ @Override
+ public boolean isPauseRequested() {
+ return mPauseRequested;
+ }
+
+ @Override
+ public boolean isSeekRequested() {
+ return mSeekRequested;
+ }
+
+ @Override
+ public int getSeekLocation() {
+ return mSeekLocation;
+ }
};
private RemoteMediaPlayerBridge(long nativeRemoteMediaPlayerBridge, long startPositionMillis,
@@ -148,6 +206,9 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
@CalledByNative
private void requestRemotePlayback() {
if (mDebug) Log.i(TAG, "requestRemotePlayback");
+ // Clear out the state
+ mPauseRequested = false;
+ mSeekRequested = false;
RemoteMediaPlayerController.instance().requestRemotePlayback(
mMediaStateListener, mRouteController);
}
@@ -185,14 +246,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
}
/**
- * @return Whether there're remote playback devices available.
- */
- @CalledByNative
- private boolean isRemotePlaybackAvailable() {
- return mRouteController.isRemotePlaybackAvailable();
- }
-
- /**
* @param bitmap The bitmap of the poster for the video, null if no poster image exists.
*
* TODO(cimamoglu): Notify the clients (probably through MediaRouteController.Listener)
@@ -204,24 +257,8 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
mPosterBitmap = bitmap;
}
- /**
- * @return Whether the video should be played remotely if possible
- */
- @CalledByNative
- private boolean isRemotePlaybackPreferredForFrame() {
- return !mRouteController.routeIsDefaultRoute()
- && mRouteController.currentRouteSupportsRemotePlayback();
- }
-
- @CalledByNative
- private boolean isMediaPlayableRemotely() {
- return mRouteController != null;
- }
-
@Override
- @CalledByNative
protected boolean prepareAsync() {
- mRouteController.prepareAsync(mFrameUrl, mStartPositionMillis);
return true;
}
@@ -260,26 +297,28 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
@Override
@CalledByNative
protected void start() throws IllegalStateException {
- mRouteController.resume();
+ mPauseRequested = false;
+ if (mRouteController.isBeingCast()) mRouteController.resume();
}
@Override
@CalledByNative
protected void pause() throws IllegalStateException {
- mRouteController.pause();
+ mPauseRequested = true;
+ if (mRouteController.isBeingCast()) mRouteController.pause();
}
@Override
@CalledByNative
protected void seekTo(int msec) throws IllegalStateException {
- mRouteController.seekTo(msec);
+ mSeekRequested = true;
+ mSeekLocation = msec;
+ if (mRouteController.isBeingCast()) mRouteController.seekTo(msec);
}
@Override
- @CalledByNative
protected boolean setDataSource(
Context context, String url, String cookies, String userAgent, boolean hideUrlLog) {
- mRouteController.setDataSource(Uri.parse(url), cookies, userAgent);
return true;
}
@@ -304,7 +343,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
@Override
protected void setOnPreparedListener(MediaPlayer.OnPreparedListener listener) {
- mOnPreparedListener = listener;
}
@Override
@@ -330,15 +368,23 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
mNativeRemoteMediaPlayerBridge = 0;
}
+ @CalledByNative
+ private boolean takesOverCastDevice() {
+ return mRouteController.videoTakesOverCastDevice(mMediaStateListener);
+ }
+
private native String nativeGetFrameUrl(long nativeRemoteMediaPlayerBridge);
private native void nativeOnPlaying(long nativeRemoteMediaPlayerBridge);
private native void nativeOnPaused(long nativeRemoteMediaPlayerBridge);
- private native void nativeOnRouteSelected(long nativeRemoteMediaPlayerBridge,
- String playerName);
private native void nativeOnRouteUnselected(long nativeRemoteMediaPlayerBridge);
private native void nativeOnPlaybackFinished(long nativeRemoteMediaPlayerBridge);
private native void nativeOnRouteAvailabilityChanged(long nativeRemoteMediaPlayerBridge,
boolean available);
private native String nativeGetTitle(long nativeRemoteMediaPlayerBridge);
-
+ private native void nativePauseLocal(long nativeRemoteMediaPlayerBridge);
+ private native int nativeGetLocalPosition(long nativeRemoteMediaPlayerBridge);
+ private native void nativeSwitchToRemotePlayer(long nativeRemoteMediaPlayerBridge);
+ private native void nativeSwitchToLocalPlayer(long nativeRemoteMediaPlayerBridge);
+ private native void nativeOnPlayingRemotely(
+ long nativeRemoteMediaPlayerBridge, String castingMessage);
}

Powered by Google App Engine
This is Rietveld 408576698