Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3573)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java

Issue 1238053002: Move the WebContents to the AsyncTabCreationParams for tabbed mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Findbugs Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..bf3299339f882ffac8a63d2da4ba25d566317ef0 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 = intent == null ? Tab.INVALID_TAB_ID : 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);

Powered by Google App Engine
This is Rietveld 408576698