| Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
|
| index a2ab80e9f67b0c0fb51cc51870848d38452125e4..74f26e49e7416de7d1f1ba84f81679ffaadd3751 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
|
| @@ -23,6 +23,7 @@ import org.chromium.chrome.browser.UrlConstants;
|
| import org.chromium.chrome.browser.document.DocumentUtils;
|
| import org.chromium.chrome.browser.document.PendingDocumentData;
|
| import org.chromium.chrome.browser.tabmodel.OffTheRecordTabModel.OffTheRecordTabModelDelegate;
|
| +import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
|
| import org.chromium.chrome.browser.tabmodel.TabModel;
|
| import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
|
| import org.chromium.chrome.browser.tabmodel.TabModelSelectorBase;
|
| @@ -35,7 +36,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
|
| */
|
| @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| public class DocumentTabModelSelector extends TabModelSelectorBase
|
| - implements ActivityStateListener {
|
| + implements ActivityStateListener, TabCreatorManager {
|
| public static final String PREF_PACKAGE = "com.google.android.apps.chrome.document";
|
| public static final String PREF_IS_INCOGNITO_SELECTED = "is_incognito_selected";
|
|
|
| @@ -52,7 +53,8 @@ public class DocumentTabModelSelector extends TabModelSelectorBase
|
| /**
|
| * Creates new Tabs.
|
| */
|
| - private final TabDelegate mTabDelegate;
|
| + private final TabDelegate mRegularTabDelegate;
|
| + private final TabDelegate mIncognitoTabDelegate;
|
|
|
| /**
|
| * TabModel that keeps track of regular tabs. This is always not null.
|
| @@ -78,17 +80,19 @@ public class DocumentTabModelSelector extends TabModelSelectorBase
|
| sPrioritizedTabId = prioritizedTabId;
|
| }
|
|
|
| - public DocumentTabModelSelector(ActivityDelegate activityDelegate, TabDelegate tabDelegate) {
|
| + public DocumentTabModelSelector(ActivityDelegate activityDelegate,
|
| + TabDelegate regularTabDelegate, TabDelegate incognitoTabDelegate) {
|
| mActivityDelegate = activityDelegate;
|
| - mTabDelegate = tabDelegate;
|
| + mRegularTabDelegate = regularTabDelegate;
|
| + mIncognitoTabDelegate = incognitoTabDelegate;
|
|
|
| mRegularTabModel = new DocumentTabModelImpl(
|
| - activityDelegate, tabDelegate, false, sPrioritizedTabId);
|
| + activityDelegate, this, false, sPrioritizedTabId);
|
| mIncognitoTabModel = new OffTheRecordDocumentTabModel(new OffTheRecordTabModelDelegate() {
|
| @Override
|
| public TabModel createTabModel() {
|
| DocumentTabModel incognitoModel = new DocumentTabModelImpl(
|
| - mActivityDelegate, mTabDelegate, true, sPrioritizedTabId);
|
| + mActivityDelegate, DocumentTabModelSelector.this, true, sPrioritizedTabId);
|
| if (mRegularTabModel.isNativeInitialized()) {
|
| incognitoModel.initializeNative();
|
| }
|
| @@ -113,6 +117,11 @@ public class DocumentTabModelSelector extends TabModelSelectorBase
|
| ApplicationStatus.registerStateListenerForAllActivities(this);
|
| }
|
|
|
| + @Override
|
| + public TabDelegate getTabCreator(boolean incognito) {
|
| + return incognito ? mIncognitoTabDelegate : mRegularTabDelegate;
|
| + }
|
| +
|
| private void initializeTabIdCounter() {
|
| int biggestId = getLargestTaskIdFromRecents();
|
| biggestId = getMaxTabId(mRegularTabModel, biggestId);
|
| @@ -168,7 +177,10 @@ public class DocumentTabModelSelector extends TabModelSelectorBase
|
|
|
| Activity parentActivity =
|
| parent == null ? null : parent.getWindowAndroid().getActivity().get();
|
| - mTabDelegate.createTabInForeground(parentActivity, incognito, loadUrlParams, params);
|
| +
|
| + TabDelegate delegate = getTabCreator(incognito);
|
| + Tab parentTab = delegate.getActivityTab(mActivityDelegate, parentActivity);
|
| + delegate.createNewTab(loadUrlParams, type, parentTab);
|
| return null;
|
| }
|
|
|
|
|