Index: chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java |
index fff514b4944085d69daf0018d16e207f7a05433c..570a9ba668be1843b3e3f4c1630dc4e9e22829a7 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java |
@@ -48,6 +48,8 @@ import org.chromium.chrome.browser.tabmodel.SingleTabModelSelector; |
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; |
import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate; |
+import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParams; |
+import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParamsManager; |
import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel; |
import org.chromium.chrome.browser.tabmodel.document.DocumentTabModel.InitializationObserver; |
import org.chromium.chrome.browser.tabmodel.document.DocumentTabModelImpl; |
@@ -64,7 +66,6 @@ import org.chromium.content.browser.ContentVideoView; |
import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content_public.browser.LoadUrlParams; |
import org.chromium.content_public.browser.NavigationEntry; |
-import org.chromium.content_public.browser.navigation_controller.LoadURLType; |
import org.chromium.ui.base.PageTransition; |
/** |
@@ -370,10 +371,10 @@ public class DocumentActivity extends ChromeActivity { |
super.onResumeWithNative(); |
if (mDocumentTab != null) { |
- PendingDocumentData pendingData = ChromeApplication.getDocumentTabModelSelector() |
- .removePendingDocumentData(ActivityDelegate.getTabIdFromIntent(getIntent())); |
- if (pendingData != null && pendingData.url != null) { |
- loadLastKnownUrl(pendingData); |
+ AsyncTabCreationParams asyncParams = AsyncTabCreationParamsManager.remove( |
+ ActivityDelegate.getTabIdFromIntent(getIntent())); |
+ if (asyncParams != null && asyncParams.getLoadUrlParams().getUrl() != null) { |
+ loadLastKnownUrl(asyncParams); |
} |
mDocumentTab.show(TabSelectionType.FROM_USER); |
} |
@@ -384,11 +385,12 @@ public class DocumentActivity extends ChromeActivity { |
return (SingleTabModelSelector) super.getTabModelSelector(); |
} |
- private void loadLastKnownUrl(PendingDocumentData pendingData) { |
+ private void loadLastKnownUrl(AsyncTabCreationParams asyncParams) { |
Intent intent = getIntent(); |
- if (pendingData != null && pendingData.originalIntent != null) { |
- intent = pendingData.originalIntent; |
+ if (asyncParams != null && asyncParams.getOriginalIntent() != null) { |
+ intent = asyncParams.getOriginalIntent(); |
} |
+ |
boolean isIntentChromeOrFirstParty = IntentHandler.isIntentChromeOrFirstParty(intent, |
getApplicationContext()); |
int transitionType = intent == null ? PageTransition.LINK |
@@ -401,15 +403,15 @@ public class DocumentActivity extends ChromeActivity { |
// anything other than TYPED for security reasons. |
transitionType = PageTransition.LINK; |
} |
- |
if (transitionType == PageTransition.LINK) { |
transitionType |= PageTransition.FROM_API; |
} |
- String url = (pendingData != null && pendingData.url != null) ? pendingData.url : |
- determineLastKnownUrl(); |
+ String url = (asyncParams != null && asyncParams.getLoadUrlParams().getUrl() != null) |
+ ? asyncParams.getLoadUrlParams().getUrl() : determineLastKnownUrl(); |
- LoadUrlParams loadUrlParams = new LoadUrlParams(url, transitionType); |
+ LoadUrlParams loadUrlParams = asyncParams == null |
+ ? new LoadUrlParams(url, transitionType) : asyncParams.getLoadUrlParams(); |
if (getIntent() != null) { |
loadUrlParams.setIntentReceivedTimestamp(getOnCreateTimestampUptimeMs()); |
} |
@@ -418,18 +420,8 @@ public class DocumentActivity extends ChromeActivity { |
IntentHandler.addReferrerAndHeaders(loadUrlParams, intent, this); |
} |
- if (pendingData != null) { |
- if (pendingData.postData != null) { |
- loadUrlParams.setPostData(pendingData.postData); |
- loadUrlParams.setLoadType(LoadURLType.BROWSER_INITIATED_HTTP_POST); |
- } |
- if (pendingData.extraHeaders != null) { |
- loadUrlParams.setVerbatimHeaders(pendingData.extraHeaders); |
- } |
- if (pendingData.referrer != null) { |
- loadUrlParams.setReferrer(pendingData.referrer); |
- } |
- mDocumentTab.getTabRedirectHandler().updateIntent(pendingData.originalIntent); |
+ if (asyncParams != null) { |
+ mDocumentTab.getTabRedirectHandler().updateIntent(asyncParams.getOriginalIntent()); |
} else { |
if (getIntent() != null) { |
try { |
@@ -443,9 +435,10 @@ public class DocumentActivity extends ChromeActivity { |
} |
mDocumentTab.loadUrl(loadUrlParams); |
- if (pendingData != null && pendingData.requestId > 0) { |
+ if (asyncParams != null && asyncParams.getRequestId() != null |
+ && asyncParams.getRequestId() > 0) { |
ServiceTabLauncher.onWebContentsForRequestAvailable( |
- pendingData.requestId, mDocumentTab.getWebContents()); |
+ asyncParams.getRequestId(), mDocumentTab.getWebContents()); |
} |
} |
@@ -458,15 +451,15 @@ public class DocumentActivity extends ChromeActivity { |
mDefaultThemeColor = isIncognito() |
? getResources().getColor(R.color.incognito_primary_color) |
: getResources().getColor(R.color.default_primary_color); |
- PendingDocumentData pendingData = ChromeApplication.getDocumentTabModelSelector() |
- .removePendingDocumentData(ActivityDelegate.getTabIdFromIntent(getIntent())); |
+ AsyncTabCreationParams asyncParams = AsyncTabCreationParamsManager.remove( |
+ ActivityDelegate.getTabIdFromIntent(getIntent())); |
int tabId = determineTabId(); |
TabState tabState = mTabModel.getTabStateForDocument(tabId); |
mDocumentTab = DocumentTab.create(DocumentActivity.this, isIncognito(), |
getWindowAndroid(), determineLastKnownUrl(), |
- pendingData != null ? pendingData.webContents : null, tabState); |
+ asyncParams != null ? asyncParams.getWebContents() : null, tabState); |
- if (pendingData != null && pendingData.webContents != null) { |
+ if (asyncParams != null && asyncParams.getWebContents() != null) { |
Intent parentIntent = IntentUtils.safeGetParcelableExtra(getIntent(), |
IntentHandler.EXTRA_PARENT_INTENT); |
mDocumentTab.setParentIntent(parentIntent); |
@@ -480,7 +473,8 @@ public class DocumentActivity extends ChromeActivity { |
getTabModelSelector().setTab(mDocumentTab); |
- if (!mDocumentTab.didRestoreState() || (pendingData != null && pendingData.url != null)) { |
+ if (!mDocumentTab.didRestoreState() |
+ || (asyncParams != null && asyncParams.getLoadUrlParams().getUrl() != null)) { |
if (!mDocumentTab.isCreatedWithWebContents()) { |
// Don't load tabs in the background on low end devices. We will call |
// loadLastKnownUrl() in onResumeWithNative() next time activity is resumed. |
@@ -489,17 +483,20 @@ public class DocumentActivity extends ChromeActivity { |
ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND); |
if (SysUtils.isLowEndDevice() |
&& launchMode == ChromeLauncherActivity.LAUNCH_MODE_AFFILIATED |
- && pendingData != null) { |
- // onResumeWithNative() wants pendingData.url to be non-null |
- if (pendingData.url == null) { |
- pendingData.url = determineLastKnownUrl(); |
+ && asyncParams != null) { |
+ // onResumeWithNative() wants asyncParams's URL to be non-null. |
+ LoadUrlParams loadUrlParams = asyncParams.getLoadUrlParams(); |
+ if (loadUrlParams.getUrl() == null) { |
+ loadUrlParams.setUrl(determineLastKnownUrl()); |
} |
- ChromeApplication.getDocumentTabModelSelector().addPendingDocumentData( |
- ActivityDelegate.getTabIdFromIntent(getIntent()), pendingData); |
- // Use the URL as the document title until tab is loaded |
- updateTaskDescription(pendingData.url, null); |
+ |
+ AsyncTabCreationParamsManager.add( |
+ ActivityDelegate.getTabIdFromIntent(getIntent()), asyncParams); |
+ |
+ // Use the URL as the document title until tab is loaded. |
+ updateTaskDescription(loadUrlParams.getUrl(), null); |
} else { |
- loadLastKnownUrl(pendingData); |
+ loadLastKnownUrl(asyncParams); |
} |
} |
mDocumentTab.setShouldPreserve(IntentUtils.safeGetBooleanExtra(getIntent(), |
@@ -708,11 +705,11 @@ public class DocumentActivity extends ChromeActivity { |
String url = entry != null |
? entry.getUrl() : searchContentViewCore.getWebContents().getUrl(); |
- TabDelegate.AsyncTabCreationParams asyncParams = new TabDelegate.AsyncTabCreationParams(); |
- asyncParams.documentStartedBy = DocumentMetricIds.STARTED_BY_CONTEXTUAL_SEARCH; |
- |
- getTabCreator(false).createNewTab(new LoadUrlParams(url, PageTransition.LINK), |
- TabLaunchType.FROM_MENU_OR_OVERVIEW, getActivityTab(), asyncParams); |
+ AsyncTabCreationParams asyncParams = |
+ new AsyncTabCreationParams(new LoadUrlParams(url, PageTransition.LINK)); |
+ asyncParams.setDocumentStartedBy(DocumentMetricIds.STARTED_BY_CONTEXTUAL_SEARCH); |
+ getTabCreator(false).createNewTab( |
+ asyncParams, TabLaunchType.FROM_MENU_OR_OVERVIEW, getActivityTab()); |
return false; |
} |