| 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 38ef2a8c1083db00c8cc76c5009e36e523fe0543..f4eb5a64cf2722e2ac4e0a1404dc8b78e982f51d 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
|
| @@ -32,6 +32,9 @@ import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.library_loader.LibraryLoader;
|
| import org.chromium.chrome.browser.fullscreen.FullscreenHtmlApiHandler.FullscreenHtmlApiDelegate;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| +import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
|
| +import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| +import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver;
|
| import org.chromium.chrome.browser.widget.ControlContainer;
|
| import org.chromium.content.browser.ContentVideoView;
|
| import org.chromium.content.browser.ContentViewCore;
|
| @@ -61,6 +64,9 @@ public class ChromeFullscreenManager
|
| private final Handler mHandler;
|
| private final int mControlContainerHeight;
|
|
|
| + private final TabModelSelector mTabModelSelector;
|
| + private final TabModelSelectorTabModelObserver mTabModelObserver;
|
| +
|
| private final ControlContainer mControlContainer;
|
|
|
| private long mMinShowNotificationMs = MINIMUM_SHOW_DURATION_MS;
|
| @@ -181,12 +187,14 @@ public class ChromeFullscreenManager
|
| * Creates an instance of the fullscreen mode manager.
|
| * @param activity The activity that supports fullscreen.
|
| * @param controlContainer Container holding the controls (Toolbar).
|
| + * @param modelSelector The tab model selector that will be monitored for tab changes.
|
| * @param resControlContainerHeight The dimension resource ID for the control container height.
|
| * @param supportsBrowserOverride Whether we want to disable the token system used by the
|
| browser.
|
| */
|
| public ChromeFullscreenManager(Activity activity, ControlContainer controlContainer,
|
| - int resControlContainerHeight, boolean supportsBrowserOverride) {
|
| + TabModelSelector modelSelector, int resControlContainerHeight,
|
| + boolean supportsBrowserOverride) {
|
| super(activity.getWindow());
|
|
|
| mActivity = activity;
|
| @@ -194,6 +202,29 @@ public class ChromeFullscreenManager
|
| ((BaseChromiumApplication) activity.getApplication())
|
| .registerWindowFocusChangedListener(this);
|
|
|
| + mTabModelSelector = modelSelector;
|
| + mTabModelObserver = new TabModelSelectorTabModelObserver(mTabModelSelector) {
|
| + @Override
|
| + public void tabClosureCommitted(Tab tab) {
|
| + setTab(mTabModelSelector.getCurrentTab());
|
| + }
|
| +
|
| + @Override
|
| + public void allTabsClosureCommitted() {
|
| + setTab(mTabModelSelector.getCurrentTab());
|
| + }
|
| +
|
| + @Override
|
| + public void tabRemoved(Tab tab) {
|
| + setTab(mTabModelSelector.getCurrentTab());
|
| + }
|
| +
|
| + @Override
|
| + public void didSelectTab(Tab tab, TabSelectionType type, int lastId) {
|
| + setTab(mTabModelSelector.getCurrentTab());
|
| + }
|
| + };
|
| +
|
| mWindow = activity.getWindow();
|
| mHandler = new FullscreenHandler(this);
|
| assert controlContainer != null;
|
| @@ -220,6 +251,8 @@ public class ChromeFullscreenManager
|
| ApplicationStatus.unregisterActivityStateListener(this);
|
| ((BaseChromiumApplication) mWindow.getContext().getApplicationContext())
|
| .unregisterWindowFocusChangedListener(this);
|
| +
|
| + mTabModelObserver.destroy();
|
| }
|
| }
|
|
|
|
|