Index: chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java b/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java |
index 9bc3114464c23e012cd31ecd5d3d9a6137cce70d..e7d190dd3b77395ed0bd85c293b94b1f7c830951 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/router/MediaRouteChooserDialogManager.java |
@@ -4,15 +4,11 @@ |
package org.chromium.chrome.browser.media.router; |
-import android.app.Dialog; |
import android.content.Context; |
import android.content.DialogInterface; |
-import android.content.DialogInterface.OnCancelListener; |
-import android.content.DialogInterface.OnDismissListener; |
import android.support.v4.app.DialogFragment; |
import android.support.v4.app.FragmentManager; |
import android.support.v7.app.MediaRouteChooserDialogFragment; |
-import android.support.v7.app.MediaRouteDialogFactory; |
import org.chromium.chrome.browser.media.router.cast.MediaSink; |
import org.chromium.chrome.browser.media.router.cast.MediaSource; |
@@ -20,8 +16,7 @@ import org.chromium.chrome.browser.media.router.cast.MediaSource; |
/** |
* Manages the dialog responsible for selecting a {@link MediaSink}. |
*/ |
-public class MediaRouteChooserDialogManager extends BaseMediaRouteDialogManager implements |
- OnCancelListener, OnDismissListener { |
+public class MediaRouteChooserDialogManager extends BaseMediaRouteDialogManager { |
private static final String DIALOG_FRAGMENT_TAG = |
"android.support.v7.mediarouter:MediaRouteChooserDialogFragment"; |
@@ -34,39 +29,50 @@ public class MediaRouteChooserDialogManager extends BaseMediaRouteDialogManager |
} |
@Override |
- protected DialogFragment openDialogInternal(FragmentManager fm, |
- MediaRouteDialogFactory factory) { |
+ protected DialogFragment openDialogInternal(FragmentManager fm) { |
if (fm.findFragmentByTag(DIALOG_FRAGMENT_TAG) != null) return null; |
- MediaRouteChooserDialogFragment fragment = factory.onCreateChooserDialogFragment(); |
- fragment.setRouteSelector(mediaSource().buildRouteSelector()); |
- fragment.show(fm, DIALOG_FRAGMENT_TAG); |
- fm.executePendingTransactions(); |
+ MediaRouteChooserDialogFragment fragment = new MediaRouteChooserDialogFragment() { |
+ final SystemVisibilitySaver mVisibilitySaver = new SystemVisibilitySaver(); |
- Dialog dialog = fragment.getDialog(); |
- if (dialog == null) return null; |
+ @Override |
+ public void onStart() { |
+ mVisibilitySaver.saveSystemVisibility(getActivity()); |
+ super.onStart(); |
+ } |
- dialog.setOnCancelListener(this); |
- dialog.setOnDismissListener(this); |
+ @Override |
+ public void onStop() { |
+ super.onStop(); |
+ mVisibilitySaver.restoreSystemVisibility(getActivity()); |
+ } |
- return fragment; |
- } |
+ @Override |
+ public void onCancel(DialogInterface dialog) { |
+ mCancelled = true; |
- @Override |
- public void onCancel(DialogInterface dialog) { |
- mCancelled = true; |
+ delegate().onDialogCancelled(); |
- delegate().onDialogCancelled(); |
- } |
+ super.onCancel(dialog); |
+ } |
- @Override |
- public void onDismiss(DialogInterface dialog) { |
- closeDialog(); |
+ @Override |
+ public void onDismiss(DialogInterface dialog) { |
+ super.onDismiss(dialog); |
- if (mCancelled) return; |
+ mDialogFragment = null; |
- MediaSink newSink = MediaSink.fromRoute(androidMediaRouter().getSelectedRoute()); |
- delegate().onSinkSelected(newSink); |
- } |
+ if (mCancelled) return; |
+ |
+ MediaSink newSink = MediaSink.fromRoute(androidMediaRouter().getSelectedRoute()); |
+ delegate().onSinkSelected(newSink); |
+ } |
+ }; |
+ |
+ fragment.setRouteSelector(mediaSource().buildRouteSelector()); |
+ fragment.show(fm, DIALOG_FRAGMENT_TAG); |
+ fm.executePendingTransactions(); |
+ return fragment; |
+ } |
} |