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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/document/DocumentActivity.java

Issue 1235523003: Standardize parameters passed when Tabs are created asynchronously. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing comments 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/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;
}

Powered by Google App Engine
This is Rietveld 408576698