| Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
|
| index 3c696d553695add3dbd12465802e2428f8a0179b..2827bd15cafb42e052cdeaa53bf7104c5cf3b94d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
|
| @@ -4,10 +4,10 @@
|
|
|
| package org.chromium.chrome.browser.tabmodel;
|
|
|
| +import android.app.Activity;
|
| import android.os.Handler;
|
|
|
| import org.chromium.base.VisibleForTesting;
|
| -import org.chromium.chrome.browser.ChromeActivity;
|
| import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
|
| import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
|
| import org.chromium.chrome.browser.fullscreen.FullscreenManager;
|
| @@ -28,7 +28,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
| public class TabModelSelectorImpl extends TabModelSelectorBase implements TabModelDelegate {
|
| public static final int CUSTOM_TABS_SELECTOR_INDEX = -1;
|
|
|
| - private final ChromeActivity mActivity;
|
| + private final TabCreatorManager mTabCreatorManager;
|
| +
|
| + private FullscreenManager mFullscreenManager;
|
|
|
| /** Flag set to false when the asynchronous loading of tabs is finished. */
|
| private final AtomicBoolean mSessionRestoreInProgress =
|
| @@ -55,14 +57,20 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
|
|
| /**
|
| * Builds a {@link TabModelSelectorImpl} instance.
|
| - * @param activity The {@link ChromeActivity} this model selector lives in.
|
| - * @param supportUndo Whether a tab closure can be undone.
|
| + *
|
| + * @param activity An {@link Activity} instance.
|
| + * @param tabCreatorManager A {@link TabCreatorManager} instance.
|
| + * @param fullscreenManager A {@link FullscreenManager} instance.
|
| + * @param persistencePolicy A {@link TabPersistencePolicy} instance.
|
| + * @param supportUndo Whether a tab closure can be undone.
|
| */
|
| - public TabModelSelectorImpl(ChromeActivity activity, TabPersistencePolicy persistencePolicy,
|
| + public TabModelSelectorImpl(Activity activity, TabCreatorManager tabCreatorManager,
|
| + FullscreenManager fullscreenManager, TabPersistencePolicy persistencePolicy,
|
| boolean supportUndo) {
|
| super();
|
| - mActivity = activity;
|
| - mUma = new TabModelSelectorUma(mActivity);
|
| + mTabCreatorManager = tabCreatorManager;
|
| + mFullscreenManager = fullscreenManager;
|
| + mUma = new TabModelSelectorUma(activity);
|
| final TabPersistentStoreObserver persistentStoreObserver =
|
| new TabPersistentStoreObserver() {
|
| @Override
|
| @@ -72,7 +80,7 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
| };
|
| mIsUndoSupported = supportUndo;
|
| mTabSaver = new TabPersistentStore(
|
| - persistencePolicy, this, mActivity, persistentStoreObserver);
|
| + persistencePolicy, this, mTabCreatorManager, persistentStoreObserver);
|
| mOrderController = new TabModelOrderController(this);
|
| }
|
|
|
| @@ -122,8 +130,10 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
| assert !mActiveState : "onNativeLibraryReady called twice!";
|
| mTabContentManager = tabContentProvider;
|
|
|
| - ChromeTabCreator regularTabCreator = (ChromeTabCreator) mActivity.getTabCreator(false);
|
| - ChromeTabCreator incognitoTabCreator = (ChromeTabCreator) mActivity.getTabCreator(true);
|
| + ChromeTabCreator regularTabCreator =
|
| + (ChromeTabCreator) mTabCreatorManager.getTabCreator(false);
|
| + ChromeTabCreator incognitoTabCreator =
|
| + (ChromeTabCreator) mTabCreatorManager.getTabCreator(true);
|
| TabModelImpl normalModel = new TabModelImpl(false, regularTabCreator, incognitoTabCreator,
|
| mUma, mOrderController, mTabContentManager, mTabSaver, this, mIsUndoSupported);
|
| TabModel incognitoModel = new IncognitoTabModel(new IncognitoTabModelImplCreator(
|
| @@ -312,7 +322,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
| @Override
|
| public Tab openNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab parent,
|
| boolean incognito) {
|
| - return mActivity.getTabCreator(incognito).createNewTab(loadUrlParams, type, parent);
|
| + return mTabCreatorManager.getTabCreator(incognito).createNewTab(
|
| + loadUrlParams, type, parent);
|
| }
|
|
|
| /**
|
| @@ -330,7 +341,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
| if (mVisibleTab != tab && tab != null && !tab.isNativePage()) {
|
| TabModelImpl.startTabSwitchLatencyTiming(type);
|
| }
|
| - FullscreenManager fullscreenManager = mActivity.getFullscreenManager();
|
| if (mVisibleTab != null && mVisibleTab != tab && !mVisibleTab.needsReload()) {
|
| if (mVisibleTab.isInitialized() && !mVisibleTab.isDetachedForReparenting()) {
|
| // TODO(dtrainor): Once we figure out why we can't grab a snapshot from the current
|
| @@ -341,7 +351,7 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
| cacheTabBitmap(mVisibleTab);
|
| }
|
| mVisibleTab.hide();
|
| - if (fullscreenManager != null) fullscreenManager.setTab(null);
|
| + if (mFullscreenManager != null) mFullscreenManager.setTab(null);
|
| mTabSaver.addTabToSaveQueue(mVisibleTab);
|
| }
|
| mVisibleTab = null;
|
| @@ -359,8 +369,7 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
|
| tab.loadIfNeeded();
|
| return;
|
| }
|
| -
|
| - if (fullscreenManager != null) fullscreenManager.setTab(tab);
|
| + if (mFullscreenManager != null) mFullscreenManager.setTab(tab);
|
| mVisibleTab = tab;
|
|
|
| // Don't execute the tab display part if Chrome has just been sent to background. This
|
|
|