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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.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/tabmodel/document/TabDelegate.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java
index 22b2936af6a8fd273edb152d22292fdc1eda6766..bc2487a7483ce1b70c6d77e7f996f789f760f7c8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/TabDelegate.java
@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.TabState;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.document.DocumentMetricIds;
-import org.chromium.chrome.browser.document.PendingDocumentData;
import org.chromium.chrome.browser.tab.ChromeTab;
import org.chromium.chrome.browser.tabmodel.TabCreatorManager.TabCreator;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
@@ -36,18 +35,6 @@ import javax.annotation.Nullable;
* Asynchronously creates Tabs by creating/starting up Activities.
*/
public class TabDelegate implements TabCreator {
- /** Optional parameters for creating a Tab asynchronously. */
- public static final class AsyncTabCreationParams {
- /** How to start a document mode Tab. */
- public int documentLaunchMode = ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND;
-
- /** What caused a document mode Tab to be created. */
- public int documentStartedBy = DocumentMetricIds.STARTED_BY_UNKNOWN;
-
- /** Used by the ServiceTabLauncher. */
- public Integer requestId;
- }
-
private boolean mIsIncognito;
/**
@@ -111,12 +98,11 @@ public class TabDelegate implements TabCreator {
Activity parentActivity = getActivityForTabId(parentId);
if (FeatureUtilities.isDocumentMode(context)) {
- PendingDocumentData data = new PendingDocumentData();
- data.webContents = webContents;
-
- ChromeLauncherActivity.launchDocumentInstance(parentActivity, mIsIncognito,
- ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND, url, startedBy, pageTransition,
- data);
+ AsyncTabCreationParams asyncParams =
+ new AsyncTabCreationParams(new LoadUrlParams(url, pageTransition), webContents);
+ asyncParams.setDocumentStartedBy(startedBy);
+ ChromeLauncherActivity.launchDocumentInstance(
+ parentActivity, mIsIncognito, asyncParams);
} else {
// TODO(dfalcantara): Unify the document-mode path with this path so that both go
// through the ChromeLauncherActivity via an Intent.
@@ -150,85 +136,70 @@ public class TabDelegate implements TabCreator {
@Override
public Tab createNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab parent) {
- AsyncTabCreationParams asyncParams = new AsyncTabCreationParams();
+ AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(loadUrlParams);
// Figure out how the page will be launched.
if (TextUtils.equals(UrlConstants.NTP_URL, loadUrlParams.getUrl())) {
- asyncParams.documentLaunchMode = ChromeLauncherActivity.LAUNCH_MODE_RETARGET;
+ asyncParams.setDocumentLaunchMode(ChromeLauncherActivity.LAUNCH_MODE_RETARGET);
} else if (type == TabLaunchType.FROM_LONGPRESS_BACKGROUND) {
if (!parent.isIncognito() && mIsIncognito) {
// Incognito tabs opened from regular tabs open in the foreground for privacy
// concerns.
- asyncParams.documentLaunchMode = ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND;
+ asyncParams.setDocumentLaunchMode(ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND);
} else {
- asyncParams.documentLaunchMode = ChromeLauncherActivity.LAUNCH_MODE_AFFILIATED;
+ asyncParams.setDocumentLaunchMode(ChromeLauncherActivity.LAUNCH_MODE_AFFILIATED);
}
}
// Classify the startup type.
if (parent != null && TextUtils.equals(UrlConstants.NTP_URL, parent.getUrl())) {
- asyncParams.documentStartedBy =
- DocumentMetricIds.STARTED_BY_CHROME_HOME_MOST_VISITED;
+ asyncParams.setDocumentStartedBy(
+ DocumentMetricIds.STARTED_BY_CHROME_HOME_MOST_VISITED);
} else if (type == TabLaunchType.FROM_LONGPRESS_BACKGROUND
|| type == TabLaunchType.FROM_LONGPRESS_FOREGROUND) {
- asyncParams.documentStartedBy = DocumentMetricIds.STARTED_BY_CONTEXT_MENU;
+ asyncParams.setDocumentStartedBy(DocumentMetricIds.STARTED_BY_CONTEXT_MENU);
} else if (type == TabLaunchType.FROM_MENU_OR_OVERVIEW) {
- asyncParams.documentStartedBy = DocumentMetricIds.STARTED_BY_OPTIONS_MENU;
+ asyncParams.setDocumentStartedBy(DocumentMetricIds.STARTED_BY_OPTIONS_MENU);
}
// Tab is created aysnchronously. Can't return anything, yet.
- createNewTab(loadUrlParams, type, parent, asyncParams);
+ createNewTab(asyncParams, type, parent);
return null;
}
/**
* Creates a Tab to host the given WebContents asynchronously.
- * @param loadUrlParams Parameters of the url load.
+ * @param asyncParams Parameters to create the Tab with, including the URL.
* @param type Information about how the tab was launched.
* @param parent The parent tab, if it exists.
- * @param asyncParams Additional parameters to load.
*/
- public void createNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, @Nullable Tab parent,
- AsyncTabCreationParams asyncParams) {
+ public void createNewTab(
+ AsyncTabCreationParams asyncParams, TabLaunchType type, @Nullable Tab parent) {
assert asyncParams != null;
if (FeatureUtilities.isDocumentMode(ApplicationStatus.getApplicationContext())) {
- // Pack up everything.
- PendingDocumentData params = null;
- if (loadUrlParams.getPostData() != null
- || loadUrlParams.getVerbatimHeaders() != null
- || loadUrlParams.getReferrer() != null
- || asyncParams.requestId != null) {
- params = new PendingDocumentData();
- params.postData = loadUrlParams.getPostData();
- params.extraHeaders = loadUrlParams.getVerbatimHeaders();
- params.referrer = loadUrlParams.getReferrer();
- params.requestId = asyncParams.requestId == null
- ? 0 : asyncParams.requestId.intValue();
- }
-
- ChromeLauncherActivity.launchDocumentInstance(getActivityFromTab(parent), mIsIncognito,
- asyncParams.documentLaunchMode, loadUrlParams.getUrl(),
- asyncParams.documentStartedBy, loadUrlParams.getTransitionType(), params);
+ ChromeLauncherActivity.launchDocumentInstance(
+ getActivityFromTab(parent), mIsIncognito, asyncParams);
} else {
// TODO(dfalcantara): Start parceling all of the LoadUrlParams when ChromeTabbedActivity
// can use them. Use the same non-duplication mechanism as the
// WebContents so that they don't get reused across process restarts.
Context context = ApplicationStatus.getApplicationContext();
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(loadUrlParams.getUrl()));
+ Intent intent = new Intent(
+ Intent.ACTION_VIEW, Uri.parse(asyncParams.getLoadUrlParams().getUrl()));
intent.setClass(context, ChromeLauncherActivity.class);
intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, mIsIncognito);
- intent.putExtra(
- IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, loadUrlParams.getTransitionType());
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE,
+ asyncParams.getLoadUrlParams().getTransitionType());
if (parent != null) {
intent.putExtra(IntentHandler.EXTRA_PARENT_TAB_ID, parent.getId());
}
- if (asyncParams.requestId != null) {
+ if (asyncParams.getRequestId() != null) {
intent.putExtra(ServiceTabLauncher.LAUNCH_REQUEST_ID_EXTRA,
- asyncParams.requestId.intValue());
+ asyncParams.getRequestId().intValue());
}
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Powered by Google App Engine
This is Rietveld 408576698