Commit 3cd82093 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Make TabFullscreenHandler Tab's UserData

This CL makes TabFullscreenHandler Tab's UserData so that Tab
doesn't have to manage |mFullscreenHandler|.

Bug: 924242
Change-Id: I5a3ea1fc15a8e5d09ab0b1a5ac048feaa2471a6d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1496272Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarJinsuk Kim <jinsukkim@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#638410}
parent 27309f38
......@@ -289,8 +289,6 @@ public class Tab
/** The current browser controls constraints. -1 if not set. */
private @BrowserControlsState int mBrowserConstrolsConstraints = -1;
private final TabObserver mFullscreenHandler = new TabFullscreenHandler();
private TabDelegateFactory mDelegateFactory;
private BrowserControlsVisibilityDelegate mBrowserControlsVisibilityDelegate;
......@@ -389,7 +387,7 @@ public class Tab
}
}
addObserver(mFullscreenHandler);
TabFullscreenHandler.createForTab(this);
if (incognito) {
CipherFactory.getInstance().triggerKeyGeneration();
......@@ -1312,7 +1310,6 @@ public class Tab
protected void didFinishPageLoad(String url) {
mIsTabStateDirty = true;
updateTitle();
updateFullscreenEnabledState();
for (TabObserver observer : mObservers) observer.onPageLoadFinished(this, url);
mIsBeingRestored = false;
......
......@@ -4,6 +4,8 @@
package org.chromium.chrome.browser.tab;
import org.chromium.base.UserData;
import org.chromium.base.UserDataHost;
import org.chromium.chrome.browser.fullscreen.FullscreenOptions;
import org.chromium.content_public.browser.SelectionPopupController;
import org.chromium.content_public.common.BrowserControlsState;
......@@ -11,10 +13,32 @@ import org.chromium.content_public.common.BrowserControlsState;
/**
* {@link TabObserver} for basic fullscreen operations for {@link Tab}.
*/
public final class TabFullscreenHandler extends EmptyTabObserver {
public final class TabFullscreenHandler extends EmptyTabObserver implements UserData {
private static final Class<TabFullscreenHandler> USER_DATA_KEY = TabFullscreenHandler.class;
private final Tab mTab;
/** A runnable to delay the enabling of fullscreen mode if necessary. */
private Runnable mEnterFullscreenRunnable;
public static void createForTab(Tab tab) {
UserDataHost host = tab.getUserDataHost();
assert host.getUserData(USER_DATA_KEY) == null;
host.setUserData(USER_DATA_KEY, new TabFullscreenHandler(tab));
}
private TabFullscreenHandler(Tab tab) {
mTab = tab;
mTab.addObserver(this);
}
// UserData
@Override
public void destroy() {
mTab.removeObserver(this);
}
@Override
public void onSSLStateUpdated(Tab tab) {
tab.updateFullscreenEnabledState();
......@@ -81,4 +105,9 @@ public final class TabFullscreenHandler extends EmptyTabObserver {
tab.updateBrowserControlsState(BrowserControlsState.SHOWN, false);
}
}
@Override
public void onPageLoadFinished(Tab tab, String url) {
tab.updateFullscreenEnabledState();
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment