| 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);
|
|
|