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

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

Issue 2469863002: [RemotePlayback API] Resolve/reject prompt() properly when the element is 'connected'. (Closed)
Patch Set: Fixed comments Created 4 years, 1 month 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/MediaRouteControllerDialogFactory.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaRouteControllerDialogFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaRouteControllerDialogFactory.java
index 0f48bfa587f76358e1e38abaadc2fcff44bc6960..2b9ac35c8298b643104fabb0fd47dce30c0cf323 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaRouteControllerDialogFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/remote/MediaRouteControllerDialogFactory.java
@@ -4,20 +4,33 @@
package org.chromium.chrome.browser.media.remote;
+import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
+import android.content.DialogInterface;
import android.os.Bundle;
+import android.os.Handler;
import android.support.v7.app.MediaRouteControllerDialog;
import android.support.v7.app.MediaRouteControllerDialogFragment;
import android.support.v7.app.MediaRouteDialogFactory;
import android.view.View;
import android.widget.FrameLayout;
+import org.chromium.base.Log;
+import org.chromium.chrome.browser.media.remote.MediaRouteController.MediaStateListener;
+
/**
* The Chrome implementation of the dialog factory so custom behavior can
* be injected for the disconnect button.
*/
public class MediaRouteControllerDialogFactory extends MediaRouteDialogFactory {
+ private static final String TAG = "MRCtrlDlg";
+
+ private final MediaStateListener mPlayer;
+
+ MediaRouteControllerDialogFactory(MediaStateListener player) {
+ mPlayer = player;
+ }
private static class SystemVisibilitySaver {
private int mSystemVisibility;
@@ -52,9 +65,27 @@ public class MediaRouteControllerDialogFactory extends MediaRouteDialogFactory {
* see https://crbug.com/618993.
*/
public static final class Fragment extends MediaRouteControllerDialogFragment {
+ final Handler mHandler = new Handler();
final SystemVisibilitySaver mVisibilitySaver = new SystemVisibilitySaver();
+ final MediaStateListener mPlayer;
- public Fragment() {}
+ // The class has to be a public static class with a zero-argument constructor.
+ // Since we can't pass any callbacks to the fragment easily, just close the dialog.
+ // See https://crbug.com/618993.
+ public Fragment() {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ Fragment.this.dismiss();
+ }
+ });
+ mPlayer = null;
+ }
+
+ @SuppressLint("ValidFragment")
+ Fragment(MediaStateListener player) {
+ mPlayer = player;
+ }
@Override
public Dialog onCreateDialog(Bundle saved) {
@@ -67,10 +98,17 @@ public class MediaRouteControllerDialogFactory extends MediaRouteDialogFactory {
super.onStop();
mVisibilitySaver.restoreSystemVisibility(getActivity());
}
+
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ Log.d(TAG, "onDismiss " + mPlayer);
+ super.onDismiss(dialog);
+ if (mPlayer != null) mPlayer.onRouteDialogCancelled();
+ }
}
@Override
public MediaRouteControllerDialogFragment onCreateControllerDialogFragment() {
- return new MediaRouteControllerDialogFragment();
+ return new Fragment(mPlayer);
}
}

Powered by Google App Engine
This is Rietveld 408576698