| Index: chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/BrowserControlsVisibilityDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate.java
|
| similarity index 86%
|
| copy from chrome/android/java/src/org/chromium/chrome/browser/tab/BrowserControlsVisibilityDelegate.java
|
| copy to chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate.java
|
| index bbbe518293340580df76edadc55c4dc1dfe26775..344a4d88b9886464bbc9c7e8b62ae9787193e281 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/BrowserControlsVisibilityDelegate.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate.java
|
| @@ -14,12 +14,13 @@ import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
|
| import org.chromium.components.security_state.ConnectionSecurityLevel;
|
| import org.chromium.content.browser.ContentViewCore;
|
| import org.chromium.content_public.browser.WebContents;
|
| -import org.chromium.content_public.common.BrowserControlsState;
|
|
|
| /**
|
| - * A delegate to determine visibility of the browser controls.
|
| + * Determines the desired visibility of the browser controls based on the current state of a given
|
| + * tab.
|
| */
|
| -public class BrowserControlsVisibilityDelegate {
|
| +public class TabStateBrowserControlsVisibilityDelegate
|
| + implements BrowserControlsVisibilityDelegate {
|
| protected static final int MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD = 1;
|
| /** The maximum amount of time to wait for a page to load before entering fullscreen. */
|
| private static final long MAX_FULLSCREEN_LOAD_DELAY_MS = 3000;
|
| @@ -34,7 +35,7 @@ public class BrowserControlsVisibilityDelegate {
|
| * Basic constructor.
|
| * @param tab The associated {@link Tab}.
|
| */
|
| - public BrowserControlsVisibilityDelegate(Tab tab) {
|
| + public TabStateBrowserControlsVisibilityDelegate(Tab tab) {
|
| mTab = tab;
|
|
|
| mTab.addObserver(new EmptyTabObserver() {
|
| @@ -48,6 +49,10 @@ public class BrowserControlsVisibilityDelegate {
|
| }
|
| };
|
|
|
| + private long getLoadDelayMs() {
|
| + return sDisableLoadingCheck ? 0 : MAX_FULLSCREEN_LOAD_DELAY_MS;
|
| + }
|
| +
|
| private void enableFullscreenAfterLoad() {
|
| if (!mIsFullscreenWaitingForLoad) return;
|
|
|
| @@ -64,7 +69,7 @@ public class BrowserControlsVisibilityDelegate {
|
| if (mIsFullscreenWaitingForLoad
|
| && !mHandler.hasMessages(MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD)) {
|
| mHandler.sendEmptyMessageDelayed(
|
| - MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD, MAX_FULLSCREEN_LOAD_DELAY_MS);
|
| + MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD, getLoadDelayMs());
|
| }
|
| }
|
|
|
| @@ -83,12 +88,7 @@ public class BrowserControlsVisibilityDelegate {
|
| if (!isMainFrame) return;
|
| mHandler.removeMessages(MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD);
|
| mHandler.sendEmptyMessageDelayed(
|
| - MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD, MAX_FULLSCREEN_LOAD_DELAY_MS);
|
| - // If the loading check is disabled, forcibly show the controls to ensure the
|
| - // renderer logic is properly initialized.
|
| - if (sDisableLoadingCheck) {
|
| - mTab.updateBrowserControlsState(BrowserControlsState.SHOWN, true);
|
| - }
|
| + MSG_ID_ENABLE_FULLSCREEN_AFTER_LOAD, getLoadDelayMs());
|
| mTab.updateFullscreenEnabledState();
|
| }
|
|
|
| @@ -126,9 +126,7 @@ public class BrowserControlsVisibilityDelegate {
|
| });
|
| }
|
|
|
| - /**
|
| - * @return Whether hiding browser controls is enabled or not.
|
| - */
|
| + @Override
|
| public boolean isHidingBrowserControlsEnabled() {
|
| WebContents webContents = mTab.getWebContents();
|
| if (webContents == null || webContents.isDestroyed()) return false;
|
| @@ -149,18 +147,15 @@ public class BrowserControlsVisibilityDelegate {
|
| enableHidingBrowserControls &= cvc == null || !cvc.isFocusedNodeEditable();
|
| enableHidingBrowserControls &= !mTab.isShowingErrorPage();
|
| enableHidingBrowserControls &= !webContents.isShowingInterstitialPage();
|
| + enableHidingBrowserControls &= !mTab.isRendererUnresponsive();
|
| enableHidingBrowserControls &= (mTab.getFullscreenManager() != null);
|
| enableHidingBrowserControls &= DeviceClassManager.enableFullscreen();
|
| - if (!sDisableLoadingCheck) {
|
| - enableHidingBrowserControls &= !mIsFullscreenWaitingForLoad;
|
| - }
|
| + enableHidingBrowserControls &= !mIsFullscreenWaitingForLoad;
|
|
|
| return enableHidingBrowserControls;
|
| }
|
|
|
| - /**
|
| - * @return Whether showing browser controls is enabled or not.
|
| - */
|
| + @Override
|
| public boolean isShowingBrowserControlsEnabled() {
|
| if (mTab.getFullscreenManager() == null) return true;
|
| return !mTab.getFullscreenManager().getPersistentFullscreenMode();
|
|
|