Index: chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
index c535e1bdb2b83de3b6a3aa2aa162cdc80149bc09..d1fdb2c6371ce156dc31a7a99f30cfe9e927c9c6 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java |
@@ -49,6 +49,7 @@ public class ChromeFullscreenManager |
private final Window mWindow; |
private final BrowserStateBrowserControlsVisibilityDelegate mBrowserVisibilityDelegate; |
private final boolean mIsBottomControls; |
+ private final boolean mExitFullscreenOnStop; |
private ControlContainer mControlContainer; |
private int mTopControlContainerHeight; |
@@ -70,7 +71,7 @@ public class ChromeFullscreenManager |
private boolean mBrowserControlsPermanentlyHidden; |
private boolean mBrowserControlsAndroidViewHidden; |
- private final ArrayList<FullscreenListener> mListeners = new ArrayList<FullscreenListener>(); |
+ private final ArrayList<FullscreenListener> mListeners = new ArrayList<>(); |
/** |
* A listener that gets notified of changes to the fullscreen state. |
@@ -123,11 +124,24 @@ public class ChromeFullscreenManager |
* @param isBottomControls Whether or not the browser controls are at the bottom of the screen. |
*/ |
public ChromeFullscreenManager(Activity activity, boolean isBottomControls) { |
+ this(activity, isBottomControls, true); |
+ } |
+ |
+ /** |
+ * Creates an instance of the fullscreen mode manager. |
+ * @param activity The activity that supports fullscreen. |
+ * @param isBottomControls Whether or not the browser controls are at the bottom of the screen. |
+ * @param exitFullscreenOnStop Whether fullscreen mode should exit on stop - should be |
+ * true for Activities that are not always fullscreen. |
+ */ |
+ public ChromeFullscreenManager( |
+ Activity activity, boolean isBottomControls, boolean exitFullscreenOnStop) { |
super(activity.getWindow()); |
mActivity = activity; |
mWindow = activity.getWindow(); |
mIsBottomControls = isBottomControls; |
+ mExitFullscreenOnStop = exitFullscreenOnStop; |
mBrowserVisibilityDelegate = new BrowserStateBrowserControlsVisibilityDelegate( |
new Runnable() { |
@Override |
@@ -228,7 +242,7 @@ public class ChromeFullscreenManager |
@Override |
public void onActivityStateChange(Activity activity, int newState) { |
- if (newState == ActivityState.STOPPED) { |
+ if (newState == ActivityState.STOPPED && mExitFullscreenOnStop) { |
// Exit fullscreen in onStop to ensure the system UI flags are set correctly when |
// showing again (on JB MR2+ builds, the omnibox would be covered by the |
// notification bar when this was done in onStart()). |