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(); |
} |
} |