Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java |
index a9b7843294e9f51b7845c283a58b06cc91bee143..558366bc23cd2d39b0afe887d7a11b03039dab4e 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java |
@@ -18,6 +18,8 @@ import org.chromium.chrome.browser.WarmupManager; |
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
import org.chromium.chrome.browser.tab.ChromeTab; |
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
+import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParams; |
+import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParamsManager; |
import org.chromium.chrome.browser.util.IntentUtils; |
import org.chromium.components.service_tab_launcher.ServiceTabLauncher; |
import org.chromium.content_public.browser.LoadUrlParams; |
@@ -105,10 +107,15 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator { |
loadUrlParams.setUrl(UrlUtilities.fixupUrl(loadUrlParams.getUrl())); |
loadUrlParams.setTransitionType(getTransitionType(type)); |
- WebContents webContents = IntentHandler.getWebContentsFromIntent(intent); |
+ // Check if the tab is being created asynchronously. |
+ int assignedTabId = IntentUtils.safeGetIntExtra( |
+ intent, IntentHandler.EXTRA_TAB_ID, Tab.INVALID_TAB_ID); |
+ AsyncTabCreationParams asyncParams = |
+ AsyncTabCreationParamsManager.remove(assignedTabId); |
+ WebContents webContents = asyncParams == null ? null : asyncParams.getWebContents(); |
+ |
boolean openInForeground = mOrderController.willOpenInForeground(type, mIncognito) |
|| webContents != null; |
- |
ChromeTab tab; |
if (webContents != null) { |
// A WebContents was passed through the Intent. Create a new Tab to hold it. |
@@ -117,7 +124,9 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator { |
parentId = IntentUtils.safeGetIntExtra( |
intent, IntentHandler.EXTRA_PARENT_TAB_ID, parentId); |
- tab = ChromeTab.createLiveTab(Tab.INVALID_TAB_ID, mActivity, mIncognito, |
+ assert TabModelUtils.getTabIndexById(mTabModel, assignedTabId) |
+ == TabModel.INVALID_TAB_INDEX; |
+ tab = ChromeTab.createLiveTab(assignedTabId, mActivity, mIncognito, |
mNativeWindow, type, parentId, !openInForeground); |
tab.initialize(webContents, mTabContentManager, !openInForeground); |
tab.setParentIntent(parentIntent); |