Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/AsyncTabCreationParams.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/AsyncTabCreationParams.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/AsyncTabCreationParams.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..570061756b7cf79837b504890f520ec77a705ada |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/AsyncTabCreationParams.java |
@@ -0,0 +1,106 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.tabmodel.document; |
+ |
+import android.content.Intent; |
+ |
+import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
+import org.chromium.chrome.browser.document.DocumentMetricIds; |
+import org.chromium.content_public.browser.LoadUrlParams; |
+import org.chromium.content_public.browser.WebContents; |
+ |
+/** |
+ * Data that will be used later when a Tab is opened via an intent. Often only the necessary |
+ * subset of the data will be set. All data is removed once the Tab finishes initializing. |
+ */ |
+public class AsyncTabCreationParams { |
+ /** Parameters used for opening a URL in the new Tab. */ |
+ private final LoadUrlParams mLoadUrlParams; |
+ |
+ /** The original intent. Set only by the {@link ChromeLauncherActivity}. */ |
+ private final Intent mOriginalIntent; |
+ |
+ /** WebContents object to initialize the Tab with. Set only by the {@link TabDelegate}. */ |
+ private final WebContents mWebContents; |
+ |
+ /** The tab launch request ID from the {@link ChromeServiceTabLauncher}. **/ |
+ private final Integer mRequestId; |
+ |
+ /** How to start a {@link DocumentTab}. */ |
+ private int mDocumentLaunchMode = ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND; |
+ |
+ /** What caused a {@link DocumentTab} to be created. */ |
+ private int mDocumentStartedBy = DocumentMetricIds.STARTED_BY_UNKNOWN; |
+ |
+ /** Create parameters for creating a Tab asynchronously. */ |
+ public AsyncTabCreationParams(LoadUrlParams loadUrlParams) { |
+ this(loadUrlParams, null, null, null); |
+ } |
+ |
+ /** Called by {@see ChromeLauncherActivity} when clobbering DocumentTabs. */ |
+ public AsyncTabCreationParams(LoadUrlParams loadUrlParams, Intent originalIntent) { |
+ this(loadUrlParams, originalIntent, null, null); |
+ assert originalIntent != null; |
+ } |
+ |
+ /** Called by {@see TabDelegate} for creating new a Tab with a pre-existing WebContents. */ |
+ public AsyncTabCreationParams(LoadUrlParams loadUrlParams, WebContents webContents) { |
+ this(loadUrlParams, null, webContents, null); |
+ assert webContents != null; |
+ } |
+ |
+ /** Called by {@see ChromeServiceTabLauncher} to create tabs via service workers. */ |
+ public AsyncTabCreationParams(LoadUrlParams loadUrlParams, Integer requestId) { |
+ this(loadUrlParams, null, null, requestId); |
+ assert requestId != null; |
+ } |
+ |
+ public void setDocumentLaunchMode(int launchMode) { |
+ mDocumentLaunchMode = launchMode; |
+ } |
+ |
+ public void setDocumentStartedBy(int startedBy) { |
+ mDocumentStartedBy = startedBy; |
+ } |
+ |
+ public int getDocumentLaunchMode() { |
+ return mDocumentLaunchMode; |
+ } |
+ |
+ public int getDocumentStartedBy() { |
+ return mDocumentStartedBy; |
+ } |
+ |
+ public LoadUrlParams getLoadUrlParams() { |
+ return mLoadUrlParams; |
+ } |
+ |
+ public Intent getOriginalIntent() { |
+ return mOriginalIntent; |
+ } |
+ |
+ public Integer getRequestId() { |
+ return mRequestId; |
+ } |
+ |
+ public WebContents getWebContents() { |
+ return mWebContents; |
+ } |
+ |
+ private AsyncTabCreationParams(LoadUrlParams loadUrlParams, Intent originalIntent, |
+ WebContents webContents, Integer requestId) { |
+ assert loadUrlParams != null; |
+ |
+ // These parameters are set in very, very specific and exclusive circumstances. |
+ if (originalIntent != null) assert webContents == null && requestId == null; |
+ if (webContents != null) assert originalIntent == null && requestId == null; |
+ if (requestId != null) assert originalIntent == null && webContents == null; |
+ |
+ mLoadUrlParams = loadUrlParams; |
+ mRequestId = requestId; |
+ mWebContents = webContents; |
+ mOriginalIntent = originalIntent; |
+ } |
+} |