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

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

Issue 1607043002: Only show cast button if video can be cast (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix null pointer error (found by telemetry smoke tests!) Created 4 years, 11 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 b34f210799a9a475a7dac40ee7903304a75c30b7..404ea6ad940da46bd00cb4f5ab70fe0ba13b9153 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
@@ -37,16 +37,23 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
private MediaPlayer.OnErrorListener mOnErrorListener;
private MediaPlayer.OnPreparedListener mOnPreparedListener;
+ /**
+ * The route controller for the video, null if no appropriate route controller.
+ */
private final MediaRouteController mRouteController;
- private final String mFrameUrl;
+ private final String mOriginalSourceUrl;
+ private final String mOriginalFrameUrl;
private final boolean mDebug;
- private final String mSourceUrl;
+ private String mFrameUrl;
+ private String mSourceUrl;
private final String mUserAgent;
private Bitmap mPosterBitmap;
private String mCookies;
private boolean mPauseRequested;
private boolean mSeekRequested;
private long mSeekLocation;
+ private boolean mIsPlayable;
+ private boolean mRouteIsAvailable;
// mActive is true when the Chrome is playing, or preparing to play, this player's video
// remotely.
@@ -58,8 +65,8 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
new MediaRouteController.MediaStateListener() {
@Override
public void onRouteAvailabilityChanged(boolean available) {
- if (mNativeRemoteMediaPlayerBridge == 0) return;
- nativeOnRouteAvailabilityChanged(mNativeRemoteMediaPlayerBridge, available);
+ mRouteIsAvailable = available;
+ onRouteAvailabilityChange();
}
@Override
@@ -144,11 +151,6 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
}
@Override
- public String getUserAgent() {
- return mUserAgent;
- }
-
- @Override
public String getFrameUrl() {
return mFrameUrl;
}
@@ -180,8 +182,8 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
if (mDebug) Log.i(TAG, "Creating RemoteMediaPlayerBridge");
mNativeRemoteMediaPlayerBridge = nativeRemoteMediaPlayerBridge;
- mSourceUrl = sourceUrl;
- mFrameUrl = frameUrl;
+ mOriginalSourceUrl = sourceUrl;
+ mOriginalFrameUrl = frameUrl;
mUserAgent = userAgent;
// This will get null if there isn't a mediaRouteController that can play this media.
mRouteController = RemoteMediaPlayerController.instance()
@@ -355,6 +357,12 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
}
}
+ private void onRouteAvailabilityChange() {
+ if (mNativeRemoteMediaPlayerBridge == 0) return;
+ boolean usable = mRouteIsAvailable && mIsPlayable;
+ nativeOnRouteAvailabilityChanged(mNativeRemoteMediaPlayerBridge, usable);
+ }
+
@Override
@CalledByNative
protected void destroy() {
@@ -367,7 +375,20 @@ public class RemoteMediaPlayerBridge extends MediaPlayerBridge {
@CalledByNative
private void setCookies(String cookies) {
+ if (mRouteController == null) return;
mCookies = cookies;
+ mRouteController.checkIfPlayableRemotely(mOriginalSourceUrl, mOriginalFrameUrl, cookies,
+ mUserAgent, new MediaRouteController.MediaValidationCallback() {
+
+ @Override
+ public void onResult(
+ boolean isPlayable, String revisedSourceUrl, String revisedFrameUrl) {
+ mIsPlayable = isPlayable;
+ mSourceUrl = revisedSourceUrl;
+ mFrameUrl = revisedFrameUrl;
+ onRouteAvailabilityChange();
+ }
+ });
}
private native String nativeGetFrameUrl(long nativeRemoteMediaPlayerBridge);

Powered by Google App Engine
This is Rietveld 408576698