Index: chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java |
index 92b03cb0ac2659a113c144712b0a1f81f1aaaee5..feec82bf1380b3ba19051230b2c56b6137079f78 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java |
@@ -9,7 +9,6 @@ import android.view.Window; |
import org.chromium.chrome.browser.fullscreen.FullscreenHtmlApiHandler.FullscreenHtmlApiDelegate; |
import org.chromium.chrome.browser.tab.Tab; |
-import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
/** |
* Manages the basic fullscreen functionality required by a Tab. |
@@ -19,20 +18,17 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
public abstract class FullscreenManager { |
public static final int INVALID_TOKEN = -1; |
- private final TabModelSelector mModelSelector; |
private final FullscreenHtmlApiHandler mHtmlApiHandler; |
private boolean mOverlayVideoMode; |
+ private Tab mTab; |
/** |
* Constructs the basic ChromeTab oriented FullscreenManager. |
* |
* @param window Top-level window to turn to fullscreen. |
- * @param modelSelector The model selector providing access to the current tab. |
*/ |
- public FullscreenManager(Window window, TabModelSelector modelSelector) { |
- mModelSelector = modelSelector; |
+ public FullscreenManager(Window window) { |
mHtmlApiHandler = new FullscreenHtmlApiHandler(window, createApiDelegate()); |
- mOverlayVideoMode = false; |
} |
/** |
@@ -49,13 +45,6 @@ public abstract class FullscreenManager { |
} |
/** |
- * @return The selector for accessing the current Tab. |
- */ |
- protected TabModelSelector getTabModelSelector() { |
- return mModelSelector; |
- } |
- |
- /** |
* Trigger a temporary showing of the top controls. |
*/ |
public abstract void showControlsTransient(); |
@@ -132,6 +121,28 @@ public abstract class FullscreenManager { |
public abstract void updateContentViewChildrenState(); |
/** |
+ * Sets the currently selected tab for fullscreen. |
+ */ |
+ public void setTab(Tab tab) { |
+ if (mTab == tab) return; |
+ |
+ // Remove the fullscreen manager from the old tab before setting the new tab. |
+ if (mTab != null) mTab.setFullscreenManager(null); |
+ |
+ mTab = tab; |
+ |
+ // Initialize the new tab with the correct fullscreen manager reference. |
+ if (mTab != null) mTab.setFullscreenManager(this); |
+ } |
+ |
+ /** |
+ * @return The currently selected tab for fullscreen. |
+ */ |
+ public Tab getTab() { |
+ return mTab; |
+ } |
+ |
+ /** |
* Enters or exits persistent fullscreen mode. In this mode, the top controls will be |
* permanently hidden until this mode is exited. |
* |
@@ -140,7 +151,7 @@ public abstract class FullscreenManager { |
public void setPersistentFullscreenMode(boolean enabled) { |
mHtmlApiHandler.setPersistentFullscreenMode(enabled); |
- Tab tab = mModelSelector.getCurrentTab(); |
+ Tab tab = getTab(); |
if (tab != null) { |
tab.updateFullscreenEnabledState(); |
} |