| Index: chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
|
| index fb35cb0a2288d6e528b6a33a086361aee65d6cdf..b3c6d8a229d5ab2c792a9feb40afb9fba45fe2b2 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
|
| @@ -21,45 +21,45 @@ import android.net.Uri;
|
| import android.os.Build;
|
| import android.os.Bundle;
|
| import android.provider.Browser;
|
| -import android.support.customtabs.CustomTabsIntent;
|
| +//import android.support.customtabs.CustomTabsIntent;
|
| import android.text.TextUtils;
|
| import android.util.Base64;
|
| import android.util.Log;
|
|
|
| import org.chromium.base.ApiCompatibilityUtils;
|
| import org.chromium.base.ApplicationStatus;
|
| -import org.chromium.chrome.browser.BookmarkUtils;
|
| +//import org.chromium.chrome.browser.BookmarkUtils;
|
| import org.chromium.chrome.browser.ChromeApplication;
|
| -import org.chromium.chrome.browser.ChromeTabbedActivity;
|
| +//import org.chromium.chrome.browser.ChromeTabbedActivity;
|
| import org.chromium.chrome.browser.IntentHandler;
|
| -import org.chromium.chrome.browser.IntentHandler.TabOpenType;
|
| -import org.chromium.chrome.browser.ShortcutHelper;
|
| +//import org.chromium.chrome.browser.IntentHandler.TabOpenType;
|
| +//import org.chromium.chrome.browser.ShortcutHelper;
|
| import org.chromium.chrome.browser.ShortcutSource;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| -import org.chromium.chrome.browser.WarmupManager;
|
| -import org.chromium.chrome.browser.WebappAuthenticator;
|
| -import org.chromium.chrome.browser.customtabs.CustomTabActivity;
|
| -import org.chromium.chrome.browser.externalnav.IntentWithGesturesHandler;
|
| -import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
|
| -import org.chromium.chrome.browser.metrics.LaunchHistogram;
|
| -import org.chromium.chrome.browser.metrics.LaunchMetrics;
|
| -import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
| -import org.chromium.chrome.browser.notifications.NotificationUIManager;
|
| -import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
|
| -import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
|
| -import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
|
| -import org.chromium.chrome.browser.preferences.DocumentModeManager;
|
| -import org.chromium.chrome.browser.tab.Tab;
|
| -import org.chromium.chrome.browser.tab.TabIdManager;
|
| -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.DocumentTabModelSelector;
|
| -import org.chromium.chrome.browser.util.FeatureUtilities;
|
| +//import org.chromium.chrome.browser.WarmupManager;
|
| +//import org.chromium.chrome.browser.WebappAuthenticator;
|
| +//import org.chromium.chrome.browser.customtabs.CustomTabActivity;
|
| +//import org.chromium.chrome.browser.externalnav.IntentWithGesturesHandler;
|
| +//import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
|
| +//import org.chromium.chrome.browser.metrics.LaunchHistogram;
|
| +//import org.chromium.chrome.browser.metrics.LaunchMetrics;
|
| +//import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
| +//import org.chromium.chrome.browser.notifications.NotificationUIManager;
|
| +//import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
|
| +//import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
|
| +//import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
|
| +//import org.chromium.chrome.browser.preferences.DocumentModeManager;
|
| +//import org.chromium.chrome.browser.tab.Tab;
|
| +//import org.chromium.chrome.browser.tab.TabIdManager;
|
| +//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.DocumentTabModelSelector;
|
| +//import org.chromium.chrome.browser.util.FeatureUtilities;
|
| import org.chromium.chrome.browser.util.IntentUtils;
|
| -import org.chromium.chrome.browser.webapps.WebappActivity;
|
| -import org.chromium.chrome.browser.webapps.WebappInfo;
|
| +//import org.chromium.chrome.browser.webapps.WebappActivity;
|
| +//import org.chromium.chrome.browser.webapps.WebappInfo;
|
| import org.chromium.content.browser.crypto.CipherFactory;
|
| import org.chromium.content_public.browser.LoadUrlParams;
|
| import org.chromium.content_public.common.ScreenOrientationValues;
|
| @@ -124,22 +124,22 @@ public class ChromeLauncherActivity extends Activity
|
| */
|
| private static final int INITIAL_DOCUMENT_ACTIVITY_LAUNCH_TIMEOUT_MS = 500;
|
|
|
| - private static final LaunchHistogram sMoveToFrontExceptionHistogram =
|
| - new LaunchHistogram("DocumentActivity.MoveToFrontFailed");
|
| +// private static final LaunchHistogram sMoveToFrontExceptionHistogram =
|
| +// new LaunchHistogram("DocumentActivity.MoveToFrontFailed");
|
|
|
| private IntentHandler mIntentHandler;
|
| private boolean mIsInMultiInstanceMode;
|
| private boolean mIsFinishNeeded;
|
|
|
| /** When started with an intent, maybe pre-resolve the domain. */
|
| - private void maybePrefetchDnsInBackground() {
|
| - if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
|
| - String maybeUrl = IntentHandler.getUrlFromIntent(getIntent());
|
| - if (maybeUrl != null) {
|
| - WarmupManager.getInstance().maybePrefetchDnsForUrlInBackground(this, maybeUrl);
|
| - }
|
| - }
|
| - }
|
| +// private void maybePrefetchDnsInBackground() {
|
| +// if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
|
| +// String maybeUrl = IntentHandler.getUrlFromIntent(getIntent());
|
| +// if (maybeUrl != null) {
|
| +// WarmupManager.getInstance().maybePrefetchDnsForUrlInBackground(this, maybeUrl);
|
| +// }
|
| +// }
|
| +// }
|
|
|
| /**
|
| * Figure out how to route the Intent. Because this is on the critical path to startup, please
|
| @@ -159,59 +159,59 @@ public class ChromeLauncherActivity extends Activity
|
| // Read partner browser customizations information asynchronously.
|
| // We want to initialize early because when there is no tabs to restore, we should possibly
|
| // show homepage, which might require reading PartnerBrowserCustomizations provider.
|
| - PartnerBrowserCustomizations.initializeAsync(getApplicationContext(),
|
| - PARTNER_BROWSER_CUSTOMIZATIONS_TIMEOUT_MS);
|
| +// PartnerBrowserCustomizations.initializeAsync(getApplicationContext(),
|
| +// PARTNER_BROWSER_CUSTOMIZATIONS_TIMEOUT_MS);
|
|
|
| - mIsInMultiInstanceMode = MultiWindowUtils.getInstance().shouldRunInMultiInstanceMode(this);
|
| +// mIsInMultiInstanceMode = MultiWindowUtils.getInstance().shouldRunInMultiInstanceMode(this);
|
| mIntentHandler = new IntentHandler(this, getPackageName());
|
| - maybePerformMigrationTasks();
|
| -
|
| - if (handleCustomTabActivityIntent()) {
|
| - finish();
|
| - return;
|
| - }
|
| -
|
| - // Check if we should launch a WebappActivity.
|
| - if (IntentUtils.safeGetBooleanExtra(getIntent(), EXTRA_BRING_WEBAPP_TO_FRONT, false)
|
| - || TextUtils.equals(getIntent().getAction(), ACTION_START_WEBAPP)) {
|
| - Intent fallbackIntent = launchWebapp(getIntent());
|
| - if (fallbackIntent == null) {
|
| - ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| - return;
|
| - } else {
|
| - // Try to launch the URL as a regular VIEW intent.
|
| - setIntent(fallbackIntent);
|
| - }
|
| - }
|
| +// maybePerformMigrationTasks();
|
| +
|
| +// if (handleCustomTabActivityIntent()) {
|
| +// finish();
|
| +// return;
|
| +// }
|
| +
|
| +// // Check if we should launch a WebappActivity.
|
| +// if (IntentUtils.safeGetBooleanExtra(getIntent(), EXTRA_BRING_WEBAPP_TO_FRONT, false)
|
| +// || TextUtils.equals(getIntent().getAction(), ACTION_START_WEBAPP)) {
|
| +// Intent fallbackIntent = launchWebapp(getIntent());
|
| +// if (fallbackIntent == null) {
|
| +// ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| +// return;
|
| +// } else {
|
| +// // Try to launch the URL as a regular VIEW intent.
|
| +// setIntent(fallbackIntent);
|
| +// }
|
| +// }
|
|
|
| // Check if we should launch the ChromeTabbedActivity.
|
| - if (!FeatureUtilities.isDocumentMode(this)) {
|
| +// if (!FeatureUtilities.isDocumentMode(this)) {
|
| launchTabbedMode();
|
| - finish();
|
| +// finish();
|
| return;
|
| - }
|
| +// }
|
|
|
| // Check if we're just closing all of the Incognito tabs.
|
| - if (TextUtils.equals(getIntent().getAction(), ACTION_CLOSE_ALL_INCOGNITO)) {
|
| - ChromeApplication.getDocumentTabModelSelector().getModel(true).closeAllTabs();
|
| - ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| - return;
|
| - }
|
| +// if (TextUtils.equals(getIntent().getAction(), ACTION_CLOSE_ALL_INCOGNITO)) {
|
| +// ChromeApplication.getDocumentTabModelSelector().getModel(true).closeAllTabs();
|
| +// ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| +// return;
|
| +// }
|
|
|
| // The notification settings cog on the flipped side of Notifications and in the Android
|
| // Settings "App Notifications" view will open us with a specific category.
|
| - if (getIntent().hasCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES)) {
|
| - NotificationUIManager.launchNotificationPreferences(this, getIntent());
|
| - return;
|
| - }
|
| +// if (getIntent().hasCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES)) {
|
| +// NotificationUIManager.launchNotificationPreferences(this, getIntent());
|
| +// return;
|
| +// }
|
|
|
| // Check if we should launch the FirstRunActivity. This occurs after the check to launch
|
| // ChromeTabbedActivity because ChromeTabbedActivity handles FRE in its own way.
|
| - if (launchFirstRunExperience()) return;
|
| -
|
| - // Launch a DocumentActivity to handle the Intent.
|
| - handleDocumentActivityIntent();
|
| - if (!mIsFinishNeeded) ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| +// if (launchFirstRunExperience()) return;
|
| +//
|
| +// // Launch a DocumentActivity to handle the Intent.
|
| +// handleDocumentActivityIntent();
|
| +// if (!mIsFinishNeeded) ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| }
|
|
|
| @Override
|
| @@ -220,13 +220,13 @@ public class ChromeLauncherActivity extends Activity
|
| if (requestCode == FIRST_RUN_EXPERIENCE_REQUEST_CODE) {
|
| if (resultCode == Activity.RESULT_OK) {
|
| // User might have opted out during FRE, so check again.
|
| - if (FeatureUtilities.isDocumentMode(this)) {
|
| - handleDocumentActivityIntent();
|
| - if (!mIsFinishNeeded) ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| - } else {
|
| +// if (FeatureUtilities.isDocumentMode(this)) {
|
| +// handleDocumentActivityIntent();
|
| +// if (!mIsFinishNeeded) ApiCompatibilityUtils.finishAndRemoveTask(this);
|
| +// } else {
|
| launchTabbedMode();
|
| finish();
|
| - }
|
| +// }
|
| return;
|
| }
|
|
|
| @@ -239,13 +239,13 @@ public class ChromeLauncherActivity extends Activity
|
| * If we have just opted in or opted out of document mode, perform pending migration tasks
|
| * such as cleaning up the recents.
|
| */
|
| - private void maybePerformMigrationTasks() {
|
| - if (DocumentModeManager.getInstance(this).isOptOutCleanUpPending()) {
|
| - cleanUpChromeRecents(
|
| - DocumentModeManager.getInstance(this).isOptedOutOfDocumentMode());
|
| - DocumentModeManager.getInstance(this).setOptOutCleanUpPending(false);
|
| - }
|
| - }
|
| +// private void maybePerformMigrationTasks() {
|
| +// if (DocumentModeManager.getInstance(this).isOptOutCleanUpPending()) {
|
| +// cleanUpChromeRecents(
|
| +// DocumentModeManager.getInstance(this).isOptedOutOfDocumentMode());
|
| +// DocumentModeManager.getInstance(this).setOptOutCleanUpPending(false);
|
| +// }
|
| +// }
|
|
|
| @Override
|
| public void processWebSearchIntent(String query) {
|
| @@ -264,128 +264,128 @@ public class ChromeLauncherActivity extends Activity
|
| * in the same task.
|
| * @return True if the intent is handled here.
|
| */
|
| - private boolean handleCustomTabActivityIntent() {
|
| - if (getIntent() == null || !getIntent().hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
|
| - return false;
|
| - }
|
| -
|
| - String url = IntentHandler.getUrlFromIntent(getIntent());
|
| - if (url == null) return false;
|
| -
|
| - if (!ChromePreferenceManager.getInstance(this).getCustomTabsEnabled()) return false;
|
| -
|
| - boolean handled = CustomTabActivity.handleInActiveContentIfNeeded(getIntent());
|
| - if (handled) return true;
|
| -
|
| - // Create and fire a launch intent. Use the copy constructor to carry over the myriad of
|
| - // extras.
|
| - Intent newIntent = new Intent(getIntent());
|
| - newIntent.setAction(Intent.ACTION_VIEW);
|
| - newIntent.setClassName(this, CustomTabActivity.class.getName());
|
| - newIntent.setData(Uri.parse(url));
|
| - startActivity(newIntent);
|
| - return true;
|
| - }
|
| +// private boolean handleCustomTabActivityIntent() {
|
| +// if (getIntent() == null || !getIntent().hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
|
| +// return false;
|
| +// }
|
| +//
|
| +// String url = IntentHandler.getUrlFromIntent(getIntent());
|
| +// if (url == null) return false;
|
| +//
|
| +// if (!ChromePreferenceManager.getInstance(this).getCustomTabsEnabled()) return false;
|
| +//
|
| +// boolean handled = CustomTabActivity.handleInActiveContentIfNeeded(getIntent());
|
| +// if (handled) return true;
|
| +//
|
| +// // Create and fire a launch intent. Use the copy constructor to carry over the myriad of
|
| +// // extras.
|
| +// Intent newIntent = new Intent(getIntent());
|
| +// newIntent.setAction(Intent.ACTION_VIEW);
|
| +// newIntent.setClassName(this, CustomTabActivity.class.getName());
|
| +// newIntent.setData(Uri.parse(url));
|
| +// startActivity(newIntent);
|
| +// return true;
|
| +// }
|
|
|
| /**
|
| * Handles the launching of a DocumentActivity from the current Intent. Routing Intents to
|
| * other types of Activities must be handled from onCreate() instead.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private void handleDocumentActivityIntent() {
|
| - if (getIntent() == null || mIntentHandler.shouldIgnoreIntent(this, getIntent())) {
|
| - Log.e(TAG, "Ignoring intent: " + getIntent());
|
| - mIsFinishNeeded = true;
|
| - return;
|
| - }
|
| -
|
| - maybePrefetchDnsInBackground();
|
| -
|
| - boolean hasUserGesture =
|
| - IntentWithGesturesHandler.getInstance().getUserGestureAndClear(getIntent());
|
| -
|
| - // Increment the Tab ID counter at this point since this Activity may not appear in
|
| - // getAppTasks() when DocumentTabModelSelector is initialized. This can potentially happen
|
| - // when Chrome is launched via the GSA/e200 search box and they relinquish their task.
|
| - TabIdManager.getInstance().incrementIdCounterTo(getTaskId() + 1);
|
| -
|
| - // Handle MAIN Intent actions, usually fired when the user starts Chrome via the launcher.
|
| - // Some launchers start Chrome by firing a VIEW Intent with an empty URL (crbug.com/459349);
|
| - // treat it as a MAIN Intent.
|
| - String url = IntentHandler.getUrlFromIntent(getIntent());
|
| - if ((url == null && TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW))
|
| - || TextUtils.equals(getIntent().getAction(), Intent.ACTION_MAIN)) {
|
| - handleMainDocumentIntent();
|
| - return;
|
| - }
|
| -
|
| - // Sometimes an Intent requests that the current Document get clobbered.
|
| - if (clobberCurrentDocument(url, hasUserGesture)) return;
|
| -
|
| - // Try to retarget existing Documents before creating a new one.
|
| - boolean incognito = IntentUtils.safeGetBooleanExtra(getIntent(),
|
| - IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false);
|
| - boolean append = IntentUtils.safeGetBooleanExtra(
|
| - getIntent(), IntentHandler.EXTRA_APPEND_TASK, false);
|
| - boolean reuse = IntentUtils.safeGetBooleanExtra(
|
| - getIntent(), BookmarkUtils.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, false);
|
| - boolean affiliated = IntentUtils.safeGetBooleanExtra(
|
| - getIntent(), IntentHandler.EXTRA_OPEN_IN_BG, false);
|
| -
|
| - // Try to relaunch an existing task.
|
| - if (reuse && !append) {
|
| - int shortcutSource = getIntent().getIntExtra(
|
| - ShortcutHelper.EXTRA_SOURCE, ShortcutSource.UNKNOWN);
|
| - LaunchMetrics.recordHomeScreenLaunchIntoTab(url, shortcutSource);
|
| - if (relaunchTask(incognito, url) != Tab.INVALID_TAB_ID) return;
|
| - }
|
| -
|
| - // Create and fire a launch Intent to start a new Task. The old Intent is copied using
|
| - // the constructor so that we pass through the myriad extras that were set on it.
|
| - Intent newIntent = createLaunchIntent(
|
| - getApplicationContext(), getIntent(), url, incognito, Tab.INVALID_TAB_ID);
|
| - setRecentsFlagsOnIntent(
|
| - newIntent, append ? 0 : Intent.FLAG_ACTIVITY_NEW_DOCUMENT, incognito);
|
| - AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(new LoadUrlParams(url));
|
| - fireDocumentIntent(this, newIntent, incognito, affiliated, asyncParams);
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private void handleDocumentActivityIntent() {
|
| +// if (getIntent() == null || mIntentHandler.shouldIgnoreIntent(this, getIntent())) {
|
| +// Log.e(TAG, "Ignoring intent: " + getIntent());
|
| +// mIsFinishNeeded = true;
|
| +// return;
|
| +// }
|
| +//
|
| +// maybePrefetchDnsInBackground();
|
| +//
|
| +// boolean hasUserGesture =
|
| +// IntentWithGesturesHandler.getInstance().getUserGestureAndClear(getIntent());
|
| +//
|
| +// // Increment the Tab ID counter at this point since this Activity may not appear in
|
| +// // getAppTasks() when DocumentTabModelSelector is initialized. This can potentially happen
|
| +// // when Chrome is launched via the GSA/e200 search box and they relinquish their task.
|
| +// TabIdManager.getInstance().incrementIdCounterTo(getTaskId() + 1);
|
| +//
|
| +// // Handle MAIN Intent actions, usually fired when the user starts Chrome via the launcher.
|
| +// // Some launchers start Chrome by firing a VIEW Intent with an empty URL (crbug.com/459349);
|
| +// // treat it as a MAIN Intent.
|
| +// String url = IntentHandler.getUrlFromIntent(getIntent());
|
| +// if ((url == null && TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW))
|
| +// || TextUtils.equals(getIntent().getAction(), Intent.ACTION_MAIN)) {
|
| +// handleMainDocumentIntent();
|
| +// return;
|
| +// }
|
| +//
|
| +// // Sometimes an Intent requests that the current Document get clobbered.
|
| +// if (clobberCurrentDocument(url, hasUserGesture)) return;
|
| +//
|
| +// // Try to retarget existing Documents before creating a new one.
|
| +// boolean incognito = IntentUtils.safeGetBooleanExtra(getIntent(),
|
| +// IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false);
|
| +// boolean append = IntentUtils.safeGetBooleanExtra(
|
| +// getIntent(), IntentHandler.EXTRA_APPEND_TASK, false);
|
| +// boolean reuse = IntentUtils.safeGetBooleanExtra(
|
| +// getIntent(), BookmarkUtils.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, false);
|
| +// boolean affiliated = IntentUtils.safeGetBooleanExtra(
|
| +// getIntent(), IntentHandler.EXTRA_OPEN_IN_BG, false);
|
| +//
|
| +// // Try to relaunch an existing task.
|
| +// if (reuse && !append) {
|
| +// int shortcutSource = getIntent().getIntExtra(
|
| +// ShortcutHelper.EXTRA_SOURCE, ShortcutSource.UNKNOWN);
|
| +// LaunchMetrics.recordHomeScreenLaunchIntoTab(url, shortcutSource);
|
| +// if (relaunchTask(incognito, url) != Tab.INVALID_TAB_ID) return;
|
| +// }
|
| +//
|
| +// // Create and fire a launch Intent to start a new Task. The old Intent is copied using
|
| +// // the constructor so that we pass through the myriad extras that were set on it.
|
| +// Intent newIntent = createLaunchIntent(
|
| +// getApplicationContext(), getIntent(), url, incognito, Tab.INVALID_TAB_ID);
|
| +// setRecentsFlagsOnIntent(
|
| +// newIntent, append ? 0 : Intent.FLAG_ACTIVITY_NEW_DOCUMENT, incognito);
|
| +// AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(new LoadUrlParams(url));
|
| +// fireDocumentIntent(this, newIntent, incognito, affiliated, asyncParams);
|
| +// }
|
|
|
| /**
|
| * Handles actions pertaining to Chrome being started with a MAIN Intent. Typically, receiving
|
| * this Intent means that a user has selected the Chrome icon from their launcher, but it is
|
| * also used internally (e.g. when firing Intents back at Chrome via notifications).
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private void handleMainDocumentIntent() {
|
| - // Bring a specific tab back to the foreground.
|
| - int tabId = IntentUtils.safeGetIntExtra(getIntent(),
|
| - TabOpenType.BRING_TAB_TO_FRONT.name(), Tab.INVALID_TAB_ID);
|
| - if (tabId != Tab.INVALID_TAB_ID && relaunchTask(tabId)) return;
|
| -
|
| - // Bring the last viewed tab to the foreground, unless we're in Samsung's multi-instance
|
| - // mode -- a MAIN Intent in that case results in the creation of a second default page.
|
| - if (!mIsInMultiInstanceMode && launchLastViewedActivity()) return;
|
| -
|
| - // Launch the default page asynchronously because the homepage URL needs to be queried.
|
| - // This is obviously not ideal, but we don't have a choice.
|
| - mIsFinishNeeded = mIsInMultiInstanceMode;
|
| - PartnerBrowserCustomizations.setOnInitializeAsyncFinished(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - String url = HomepageManager.getHomepageUri(ChromeLauncherActivity.this);
|
| - if (TextUtils.isEmpty(url)) url = UrlConstants.NTP_URL;
|
| -
|
| - AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(
|
| - new LoadUrlParams(url, PageTransition.AUTO_TOPLEVEL));
|
| - asyncParams.setDocumentStartedBy(DocumentMetricIds.STARTED_BY_LAUNCHER);
|
| - asyncParams.setDocumentLaunchMode(
|
| - mIsInMultiInstanceMode ? LAUNCH_MODE_FOREGROUND : LAUNCH_MODE_RETARGET);
|
| - launchDocumentInstance(ChromeLauncherActivity.this, false, asyncParams);
|
| -
|
| - if (mIsFinishNeeded) finish();
|
| - }
|
| - }, INITIAL_DOCUMENT_ACTIVITY_LAUNCH_TIMEOUT_MS);
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private void handleMainDocumentIntent() {
|
| +// // Bring a specific tab back to the foreground.
|
| +// int tabId = IntentUtils.safeGetIntExtra(getIntent(),
|
| +// TabOpenType.BRING_TAB_TO_FRONT.name(), Tab.INVALID_TAB_ID);
|
| +// if (tabId != Tab.INVALID_TAB_ID && relaunchTask(tabId)) return;
|
| +//
|
| +// // Bring the last viewed tab to the foreground, unless we're in Samsung's multi-instance
|
| +// // mode -- a MAIN Intent in that case results in the creation of a second default page.
|
| +// if (!mIsInMultiInstanceMode && launchLastViewedActivity()) return;
|
| +//
|
| +// // Launch the default page asynchronously because the homepage URL needs to be queried.
|
| +// // This is obviously not ideal, but we don't have a choice.
|
| +// mIsFinishNeeded = mIsInMultiInstanceMode;
|
| +// PartnerBrowserCustomizations.setOnInitializeAsyncFinished(new Runnable() {
|
| +// @Override
|
| +// public void run() {
|
| +// String url = HomepageManager.getHomepageUri(ChromeLauncherActivity.this);
|
| +// if (TextUtils.isEmpty(url)) url = UrlConstants.NTP_URL;
|
| +//
|
| +// AsyncTabCreationParams asyncParams = new AsyncTabCreationParams(
|
| +// new LoadUrlParams(url, PageTransition.AUTO_TOPLEVEL));
|
| +// asyncParams.setDocumentStartedBy(DocumentMetricIds.STARTED_BY_LAUNCHER);
|
| +// asyncParams.setDocumentLaunchMode(
|
| +// mIsInMultiInstanceMode ? LAUNCH_MODE_FOREGROUND : LAUNCH_MODE_RETARGET);
|
| +// launchDocumentInstance(ChromeLauncherActivity.this, false, asyncParams);
|
| +//
|
| +// if (mIsFinishNeeded) finish();
|
| +// }
|
| +// }, INITIAL_DOCUMENT_ACTIVITY_LAUNCH_TIMEOUT_MS);
|
| +// }
|
|
|
| /**
|
| * If necessary, attempts to clobber the current DocumentActivity's tab with the given URL.
|
| @@ -393,59 +393,59 @@ public class ChromeLauncherActivity extends Activity
|
| * @param hasUserGesture Whether the intent is launched from a previous user gesture.
|
| * @return Whether or not the clobber was successful.
|
| */
|
| - private boolean clobberCurrentDocument(String url, boolean hasUserGesture) {
|
| - boolean shouldOpenNewTab = IntentUtils.safeGetBooleanExtra(
|
| - getIntent(), Browser.EXTRA_CREATE_NEW_TAB, false);
|
| - String applicationId =
|
| - IntentUtils.safeGetStringExtra(getIntent(), Browser.EXTRA_APPLICATION_ID);
|
| - if (shouldOpenNewTab || !getPackageName().equals(applicationId)) return false;
|
| -
|
| - // Check if there's a Tab that can be clobbered.
|
| - int tabId = ChromeApplication.getDocumentTabModelSelector().getCurrentTabId();
|
| - if (tabId == Tab.INVALID_TAB_ID) return false;
|
| -
|
| - // Try to clobber the page.
|
| - LoadUrlParams params = new LoadUrlParams(
|
| - url, PageTransition.LINK | PageTransition.FROM_API);
|
| - params.setHasUserGesture(hasUserGesture);
|
| - AsyncTabCreationParams data =
|
| - new AsyncTabCreationParams(params, new Intent(getIntent()));
|
| - AsyncTabCreationParamsManager.add(tabId, data);
|
| - if (!relaunchTask(tabId)) {
|
| - // Were not able to clobber, will fall through to handle in a new document.
|
| - AsyncTabCreationParamsManager.remove(tabId);
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| - }
|
| -
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private boolean launchLastViewedActivity() {
|
| - int tabId = ChromeApplication.getDocumentTabModelSelector().getCurrentTabId();
|
| - DocumentTabModel model =
|
| - ChromeApplication.getDocumentTabModelSelector().getModelForTabId(tabId);
|
| - if (tabId != Tab.INVALID_TAB_ID && model != null && !model.isCoveredByChildActivity(tabId)
|
| - && relaunchTask(tabId)) {
|
| - return true;
|
| - }
|
| -
|
| - // Everything above failed, try to launch the last viewed activity based on app tasks list.
|
| - ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
|
| - PackageManager pm = getPackageManager();
|
| - for (AppTask task : am.getAppTasks()) {
|
| - String className = DocumentUtils.getTaskClassName(task, pm);
|
| - if (className == null || !DocumentActivity.isDocumentActivity(className)) continue;
|
| -
|
| - int id = ActivityDelegate.getTabIdFromIntent(task.getTaskInfo().baseIntent);
|
| - model = ChromeApplication.getDocumentTabModelSelector().getModelForTabId(id);
|
| - if (model != null && model.isCoveredByChildActivity(id)) continue;
|
| -
|
| - if (!moveToFront(task)) continue;
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| +// private boolean clobberCurrentDocument(String url, boolean hasUserGesture) {
|
| +// boolean shouldOpenNewTab = IntentUtils.safeGetBooleanExtra(
|
| +// getIntent(), Browser.EXTRA_CREATE_NEW_TAB, false);
|
| +// String applicationId =
|
| +// IntentUtils.safeGetStringExtra(getIntent(), Browser.EXTRA_APPLICATION_ID);
|
| +// if (shouldOpenNewTab || !getPackageName().equals(applicationId)) return false;
|
| +//
|
| +// // Check if there's a Tab that can be clobbered.
|
| +// int tabId = ChromeApplication.getDocumentTabModelSelector().getCurrentTabId();
|
| +// if (tabId == Tab.INVALID_TAB_ID) return false;
|
| +//
|
| +// // Try to clobber the page.
|
| +// LoadUrlParams params = new LoadUrlParams(
|
| +// url, PageTransition.LINK | PageTransition.FROM_API);
|
| +// params.setHasUserGesture(hasUserGesture);
|
| +// AsyncTabCreationParams data =
|
| +// new AsyncTabCreationParams(params, new Intent(getIntent()));
|
| +// AsyncTabCreationParamsManager.add(tabId, data);
|
| +// if (!relaunchTask(tabId)) {
|
| +// // Were not able to clobber, will fall through to handle in a new document.
|
| +// AsyncTabCreationParamsManager.remove(tabId);
|
| +// return false;
|
| +// }
|
| +//
|
| +// return true;
|
| +// }
|
| +
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private boolean launchLastViewedActivity() {
|
| +// int tabId = ChromeApplication.getDocumentTabModelSelector().getCurrentTabId();
|
| +// DocumentTabModel model =
|
| +// ChromeApplication.getDocumentTabModelSelector().getModelForTabId(tabId);
|
| +// if (tabId != Tab.INVALID_TAB_ID && model != null && !model.isCoveredByChildActivity(tabId)
|
| +// && relaunchTask(tabId)) {
|
| +// return true;
|
| +// }
|
| +//
|
| +// // Everything above failed, try to launch the last viewed activity based on app tasks list.
|
| +// ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
|
| +// PackageManager pm = getPackageManager();
|
| +// for (AppTask task : am.getAppTasks()) {
|
| +// String className = DocumentUtils.getTaskClassName(task, pm);
|
| +// if (className == null || !DocumentActivity.isDocumentActivity(className)) continue;
|
| +//
|
| +// int id = ActivityDelegate.getTabIdFromIntent(task.getTaskInfo().baseIntent);
|
| +// model = ChromeApplication.getDocumentTabModelSelector().getModelForTabId(id);
|
| +// if (model != null && model.isCoveredByChildActivity(id)) continue;
|
| +//
|
| +// if (!moveToFront(task)) continue;
|
| +// return true;
|
| +// }
|
| +// return false;
|
| +// }
|
|
|
| /**
|
| * Starts a Document for the given URL. Generally, you should be using the TabCreator attached
|
| @@ -460,63 +460,63 @@ public class ChromeLauncherActivity extends Activity
|
| * received to launch the URL.
|
| * @return ID of the Tab that was launched.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - public static int launchDocumentInstance(
|
| - Activity activity, boolean incognito, AsyncTabCreationParams asyncParams) {
|
| - assert asyncParams != null;
|
| -
|
| - final int launchMode = asyncParams.getDocumentLaunchMode();
|
| - final int intentSource = asyncParams.getDocumentStartedBy();
|
| - final LoadUrlParams loadUrlParams = asyncParams.getLoadUrlParams();
|
| -
|
| - // If we weren't given an initial URL, check the pending parameters.
|
| - if (loadUrlParams.getUrl() == null && asyncParams.getWebContents() != null) {
|
| - loadUrlParams.setUrl(asyncParams.getWebContents().getUrl());
|
| - }
|
| -
|
| - // Try to retarget an existing task. Make sure there is no pending POST data or a dangling
|
| - // WebContents to go with the load because relaunching an Activity will not use it when it
|
| - // is restarted.
|
| - if (launchMode == LAUNCH_MODE_RETARGET) {
|
| - assert asyncParams.getWebContents() == null;
|
| - assert loadUrlParams.getPostData() == null;
|
| - int relaunchedId = relaunchTask(incognito, loadUrlParams.getUrl());
|
| - if (relaunchedId != Tab.INVALID_TAB_ID) return relaunchedId;
|
| - }
|
| -
|
| - // If the new tab is spawned by another tab, record the parent.
|
| - int parentId = activity != null && (launchMode == LAUNCH_MODE_AFFILIATED
|
| - || intentSource == DocumentMetricIds.STARTED_BY_WINDOW_OPEN
|
| - || intentSource == DocumentMetricIds.STARTED_BY_CONTEXTUAL_SEARCH)
|
| - ? ActivityDelegate.getTabIdFromIntent(activity.getIntent())
|
| - : Tab.INVALID_TAB_ID;
|
| -
|
| - // Fire an Intent to start a DocumentActivity instance.
|
| - Context context = ApplicationStatus.getApplicationContext();
|
| - Intent intent = createLaunchIntent(
|
| - context, null, loadUrlParams.getUrl(), incognito, parentId);
|
| - setRecentsFlagsOnIntent(intent, Intent.FLAG_ACTIVITY_NEW_DOCUMENT, incognito);
|
| - intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, incognito);
|
| - intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE,
|
| - loadUrlParams.getTransitionType());
|
| - intent.putExtra(IntentHandler.EXTRA_STARTED_BY, intentSource);
|
| - if (activity != null && activity.getIntent() != null) {
|
| - intent.putExtra(IntentHandler.EXTRA_PARENT_INTENT, activity.getIntent());
|
| - }
|
| -
|
| - intent.putExtra(EXTRA_LAUNCH_MODE, launchMode);
|
| - IntentHandler.addTrustedIntentExtras(intent, context);
|
| -
|
| - boolean affiliated = launchMode == LAUNCH_MODE_AFFILIATED;
|
| - if (activity == null) {
|
| - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| - fireDocumentIntent(context, intent, incognito, affiliated, asyncParams);
|
| - } else {
|
| - fireDocumentIntent(activity, intent, incognito, affiliated, asyncParams);
|
| - }
|
| -
|
| - return ActivityDelegate.getTabIdFromIntent(intent);
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// public static int launchDocumentInstance(
|
| +// Activity activity, boolean incognito/*, AsyncTabCreationParams asyncParams*/) {
|
| +// assert asyncParams != null;
|
| +//
|
| +// final int launchMode = asyncParams.getDocumentLaunchMode();
|
| +// final int intentSource = asyncParams.getDocumentStartedBy();
|
| +// final LoadUrlParams loadUrlParams = asyncParams.getLoadUrlParams();
|
| +//
|
| +// // If we weren't given an initial URL, check the pending parameters.
|
| +// if (loadUrlParams.getUrl() == null && asyncParams.getWebContents() != null) {
|
| +// loadUrlParams.setUrl(asyncParams.getWebContents().getUrl());
|
| +// }
|
| +//
|
| +// // Try to retarget an existing task. Make sure there is no pending POST data or a dangling
|
| +// // WebContents to go with the load because relaunching an Activity will not use it when it
|
| +// // is restarted.
|
| +// if (launchMode == LAUNCH_MODE_RETARGET) {
|
| +// assert asyncParams.getWebContents() == null;
|
| +// assert loadUrlParams.getPostData() == null;
|
| +// int relaunchedId = relaunchTask(incognito, loadUrlParams.getUrl());
|
| +// if (relaunchedId != Tab.INVALID_TAB_ID) return relaunchedId;
|
| +// }
|
| +//
|
| +// // If the new tab is spawned by another tab, record the parent.
|
| +// int parentId = activity != null && (launchMode == LAUNCH_MODE_AFFILIATED
|
| +// || intentSource == DocumentMetricIds.STARTED_BY_WINDOW_OPEN
|
| +// || intentSource == DocumentMetricIds.STARTED_BY_CONTEXTUAL_SEARCH)
|
| +// ? ActivityDelegate.getTabIdFromIntent(activity.getIntent())
|
| +// : Tab.INVALID_TAB_ID;
|
| +//
|
| +// // Fire an Intent to start a DocumentActivity instance.
|
| +// Context context = ApplicationStatus.getApplicationContext();
|
| +// Intent intent = createLaunchIntent(
|
| +// context, null, loadUrlParams.getUrl(), incognito, parentId);
|
| +// setRecentsFlagsOnIntent(intent, Intent.FLAG_ACTIVITY_NEW_DOCUMENT, incognito);
|
| +// intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, incognito);
|
| +// intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE,
|
| +// loadUrlParams.getTransitionType());
|
| +// intent.putExtra(IntentHandler.EXTRA_STARTED_BY, intentSource);
|
| +// if (activity != null && activity.getIntent() != null) {
|
| +// intent.putExtra(IntentHandler.EXTRA_PARENT_INTENT, activity.getIntent());
|
| +// }
|
| +//
|
| +// intent.putExtra(EXTRA_LAUNCH_MODE, launchMode);
|
| +// IntentHandler.addTrustedIntentExtras(intent, context);
|
| +//
|
| +// boolean affiliated = launchMode == LAUNCH_MODE_AFFILIATED;
|
| +// if (activity == null) {
|
| +// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| +// fireDocumentIntent(context, intent, incognito, affiliated, asyncParams);
|
| +// } else {
|
| +// fireDocumentIntent(activity, intent, incognito, affiliated, asyncParams);
|
| +// }
|
| +//
|
| +// return ActivityDelegate.getTabIdFromIntent(intent);
|
| +// }
|
|
|
| /**
|
| * Starts the document activity specified by the intent and options. Potentially first runs
|
| @@ -526,46 +526,46 @@ public class ChromeLauncherActivity extends Activity
|
| * firing an Intent to the same class with the same URI data. Firing an Intent via this method
|
| * may therefore _not_ create a new DocumentActivity instance.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private static void fireDocumentIntent(Context context, Intent intent, boolean incognito,
|
| - boolean affiliated, AsyncTabCreationParams asyncParams) {
|
| - assert asyncParams != null;
|
| - assert incognito || TextUtils.equals(
|
| - IntentHandler.getUrlFromIntent(intent), asyncParams.getLoadUrlParams().getUrl());
|
| - assert !affiliated || !incognito;
|
| -
|
| - // Remove any flags from the Intent that would prevent a second instance of Chrome from
|
| - // appearing.
|
| - if (context instanceof ChromeLauncherActivity
|
| - && ((ChromeLauncherActivity) context).mIsInMultiInstanceMode) {
|
| - MultiWindowUtils.getInstance().makeMultiInstanceIntent((ChromeLauncherActivity) context,
|
| - intent);
|
| - }
|
| -
|
| - // Store parameters for the new DocumentActivity, which are retrieved immediately after the
|
| - // new Activity starts. This structure is used to avoid passing things like pointers to
|
| - // native WebContents in the Intent, which are strictly under Android's control and is
|
| - // re-delivered when a Chrome Activity is restarted.
|
| - boolean isWebContentsPending = false;
|
| - int tabId = ActivityDelegate.getTabIdFromIntent(intent);
|
| - AsyncTabCreationParamsManager.add(tabId, asyncParams);
|
| - isWebContentsPending = asyncParams.getWebContents() != null;
|
| -
|
| - Bundle options = null;
|
| - if (affiliated && !isWebContentsPending) {
|
| - options = ActivityOptions.makeTaskLaunchBehind().toBundle();
|
| - asyncParams.setIsInitiallyHidden(true);
|
| - }
|
| - if (incognito && !CipherFactory.getInstance().hasCipher()
|
| - && ChromeApplication.getDocumentTabModelSelector().getModel(true)
|
| - .getCount() > 0) {
|
| - // The CipherKeyActivity needs to be run to restore the Incognito decryption key.
|
| - Intent cipherIntent = CipherKeyActivity.createIntent(context, intent, options);
|
| - context.startActivity(cipherIntent);
|
| - } else {
|
| - context.startActivity(intent, options);
|
| - }
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private static void fireDocumentIntent(Context context, Intent intent, boolean incognito,
|
| +// boolean affiliated, AsyncTabCreationParams asyncParams) {
|
| +// assert asyncParams != null;
|
| +// assert incognito || TextUtils.equals(
|
| +// IntentHandler.getUrlFromIntent(intent), asyncParams.getLoadUrlParams().getUrl());
|
| +// assert !affiliated || !incognito;
|
| +//
|
| +// // Remove any flags from the Intent that would prevent a second instance of Chrome from
|
| +// // appearing.
|
| +// if (context instanceof ChromeLauncherActivity
|
| +// && ((ChromeLauncherActivity) context).mIsInMultiInstanceMode) {
|
| +// MultiWindowUtils.getInstance().makeMultiInstanceIntent((ChromeLauncherActivity) context,
|
| +// intent);
|
| +// }
|
| +//
|
| +// // Store parameters for the new DocumentActivity, which are retrieved immediately after the
|
| +// // new Activity starts. This structure is used to avoid passing things like pointers to
|
| +// // native WebContents in the Intent, which are strictly under Android's control and is
|
| +// // re-delivered when a Chrome Activity is restarted.
|
| +// boolean isWebContentsPending = false;
|
| +// int tabId = ActivityDelegate.getTabIdFromIntent(intent);
|
| +// AsyncTabCreationParamsManager.add(tabId, asyncParams);
|
| +// isWebContentsPending = asyncParams.getWebContents() != null;
|
| +//
|
| +// Bundle options = null;
|
| +// if (affiliated && !isWebContentsPending) {
|
| +// options = ActivityOptions.makeTaskLaunchBehind().toBundle();
|
| +// asyncParams.setIsInitiallyHidden(true);
|
| +// }
|
| +// if (incognito && !CipherFactory.getInstance().hasCipher()
|
| +// && ChromeApplication.getDocumentTabModelSelector().getModel(true)
|
| +// .getCount() > 0) {
|
| +// // The CipherKeyActivity needs to be run to restore the Incognito decryption key.
|
| +// Intent cipherIntent = CipherKeyActivity.createIntent(context, intent, options);
|
| +// context.startActivity(cipherIntent);
|
| +// } else {
|
| +// context.startActivity(intent, options);
|
| +// }
|
| +// }
|
|
|
| /**
|
| * Get an intent that will close all incognito tabs through {@link ChromeLauncherActivity}.
|
| @@ -579,50 +579,50 @@ public class ChromeLauncherActivity extends Activity
|
| return PendingIntent.getActivity(context, 0, intent, 0);
|
| }
|
|
|
| - static String getDocumentClassName(boolean isIncognito) {
|
| - return isIncognito ? IncognitoDocumentActivity.class.getName() :
|
| - DocumentActivity.class.getName();
|
| - }
|
| -
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private static Intent createLaunchIntent(
|
| - Context context, Intent oldIntent, String url, boolean incognito, int parentId) {
|
| - int newTabId = ChromeApplication.getDocumentTabModelSelector().generateValidTabId();
|
| -
|
| - // Copy the old Intent so that the extras carry over.
|
| - Intent intent = oldIntent == null ? new Intent() : new Intent(oldIntent);
|
| - intent.setAction(Intent.ACTION_VIEW);
|
| - intent.setClassName(context, getDocumentClassName(incognito));
|
| -
|
| - if (incognito) {
|
| - // Incognito Intents don't pass URLs in their data.
|
| - intent.setData(DocumentTabModelSelector.createDocumentDataString(newTabId, ""));
|
| - } else {
|
| - intent.setData(DocumentTabModelSelector.createDocumentDataString(newTabId, url));
|
| - }
|
| -
|
| - // For content URIs, because intent.getData().getScheme() begins with "document://,
|
| - // we need to pass a ClipData so DocumentActivity can access the content.
|
| - if (url != null && url.startsWith("content://")) {
|
| - intent.setClipData(ClipData.newUri(
|
| - context.getContentResolver(), "content", Uri.parse(url)));
|
| - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
| - }
|
| - intent.putExtra(IntentHandler.EXTRA_PARENT_TAB_ID, parentId);
|
| - if (oldIntent != null && Intent.ACTION_VIEW.equals(oldIntent.getAction())) {
|
| - intent.putExtra(IntentHandler.EXTRA_ORIGINAL_INTENT, oldIntent);
|
| - }
|
| -
|
| - return intent;
|
| - }
|
| +// static String getDocumentClassName(boolean isIncognito) {
|
| +// return isIncognito ? IncognitoDocumentActivity.class.getName() :
|
| +// DocumentActivity.class.getName();
|
| +// }
|
| +
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private static Intent createLaunchIntent(
|
| +// Context context, Intent oldIntent, String url, boolean incognito, int parentId) {
|
| +// int newTabId = ChromeApplication.getDocumentTabModelSelector().generateValidTabId();
|
| +//
|
| +// // Copy the old Intent so that the extras carry over.
|
| +// Intent intent = oldIntent == null ? new Intent() : new Intent(oldIntent);
|
| +// intent.setAction(Intent.ACTION_VIEW);
|
| +// intent.setClassName(context, getDocumentClassName(incognito));
|
| +//
|
| +// if (incognito) {
|
| +// // Incognito Intents don't pass URLs in their data.
|
| +// intent.setData(DocumentTabModelSelector.createDocumentDataString(newTabId, ""));
|
| +// } else {
|
| +// intent.setData(DocumentTabModelSelector.createDocumentDataString(newTabId, url));
|
| +// }
|
| +//
|
| +// // For content URIs, because intent.getData().getScheme() begins with "document://,
|
| +// // we need to pass a ClipData so DocumentActivity can access the content.
|
| +// if (url != null && url.startsWith("content://")) {
|
| +// intent.setClipData(ClipData.newUri(
|
| +// context.getContentResolver(), "content", Uri.parse(url)));
|
| +// intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
| +// }
|
| +// intent.putExtra(IntentHandler.EXTRA_PARENT_TAB_ID, parentId);
|
| +// if (oldIntent != null && Intent.ACTION_VIEW.equals(oldIntent.getAction())) {
|
| +// intent.putExtra(IntentHandler.EXTRA_ORIGINAL_INTENT, oldIntent);
|
| +// }
|
| +//
|
| +// return intent;
|
| +// }
|
|
|
| @SuppressLint("InlinedApi")
|
| private void launchTabbedMode() {
|
| - maybePrefetchDnsInBackground();
|
| +// maybePrefetchDnsInBackground();
|
|
|
| Intent newIntent = new Intent(getIntent());
|
| - newIntent.setClassName(getApplicationContext().getPackageName(),
|
| - ChromeTabbedActivity.class.getName());
|
| +// newIntent.setClassName(getApplicationContext().getPackageName(),
|
| +// ChromeTabbedActivity.class.getName());
|
| newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
|
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
| newIntent.addFlags(Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
|
| @@ -631,9 +631,9 @@ public class ChromeLauncherActivity extends Activity
|
| if (uri != null && "content".equals(uri.getScheme())) {
|
| newIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
| }
|
| - if (mIsInMultiInstanceMode) {
|
| - MultiWindowUtils.getInstance().makeMultiInstanceIntent(this, newIntent);
|
| - }
|
| +// if (mIsInMultiInstanceMode) {
|
| +// MultiWindowUtils.getInstance().makeMultiInstanceIntent(this, newIntent);
|
| +// }
|
| startActivity(newIntent);
|
| }
|
|
|
| @@ -642,28 +642,28 @@ public class ChromeLauncherActivity extends Activity
|
| * @param tabId tab ID to search for.
|
| * @return Whether the task was successfully brought back.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private static boolean relaunchTask(int tabId) {
|
| - if (tabId == Tab.INVALID_TAB_ID) return false;
|
| -
|
| - Context context = ApplicationStatus.getApplicationContext();
|
| - ActivityManager manager =
|
| - (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
| - for (AppTask task : manager.getAppTasks()) {
|
| - RecentTaskInfo info = DocumentUtils.getTaskInfoFromTask(task);
|
| - if (info == null) continue;
|
| -
|
| - int id = ActivityDelegate.getTabIdFromIntent(info.baseIntent);
|
| - if (id != tabId) continue;
|
| -
|
| - DocumentTabModelSelector.setPrioritizedTabId(id);
|
| - if (!moveToFront(task)) continue;
|
| -
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private static boolean relaunchTask(int tabId) {
|
| +// if (tabId == Tab.INVALID_TAB_ID) return false;
|
| +//
|
| +// Context context = ApplicationStatus.getApplicationContext();
|
| +// ActivityManager manager =
|
| +// (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
| +// for (AppTask task : manager.getAppTasks()) {
|
| +// RecentTaskInfo info = DocumentUtils.getTaskInfoFromTask(task);
|
| +// if (info == null) continue;
|
| +//
|
| +// int id = ActivityDelegate.getTabIdFromIntent(info.baseIntent);
|
| +// if (id != tabId) continue;
|
| +//
|
| +// DocumentTabModelSelector.setPrioritizedTabId(id);
|
| +// if (!moveToFront(task)) continue;
|
| +//
|
| +// return true;
|
| +// }
|
| +//
|
| +// return false;
|
| +// }
|
|
|
| /**
|
| * Bring the task matching the given URL to the front if the task is retargetable.
|
| @@ -671,58 +671,58 @@ public class ChromeLauncherActivity extends Activity
|
| * @param url URL that the tab would have been created for. If null, this param is ignored.
|
| * @return ID of the Tab if it was successfully relaunched, otherwise Tab.INVALID_TAB_ID.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private static int relaunchTask(boolean incognito, String url) {
|
| - if (TextUtils.isEmpty(url)) return Tab.INVALID_TAB_ID;
|
| -
|
| - Context context = ApplicationStatus.getApplicationContext();
|
| - ActivityManager manager =
|
| - (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
| - for (AppTask task : manager.getAppTasks()) {
|
| - RecentTaskInfo info = DocumentUtils.getTaskInfoFromTask(task);
|
| - if (info == null) continue;
|
| -
|
| - String initialUrl = ActivityDelegate.getInitialUrlForDocument(info.baseIntent);
|
| - if (TextUtils.isEmpty(initialUrl) || !TextUtils.equals(initialUrl, url)) continue;
|
| -
|
| - int id = ActivityDelegate.getTabIdFromIntent(info.baseIntent);
|
| - DocumentTabModelSelector.setPrioritizedTabId(id);
|
| - if (!ChromeApplication.getDocumentTabModelSelector().getModel(incognito)
|
| - .isRetargetable(id)) {
|
| - continue;
|
| - }
|
| -
|
| - if (!moveToFront(task)) continue;
|
| - return id;
|
| - }
|
| -
|
| - return Tab.INVALID_TAB_ID;
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private static int relaunchTask(boolean incognito, String url) {
|
| +// if (TextUtils.isEmpty(url)) return Tab.INVALID_TAB_ID;
|
| +//
|
| +// Context context = ApplicationStatus.getApplicationContext();
|
| +// ActivityManager manager =
|
| +// (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
| +// for (AppTask task : manager.getAppTasks()) {
|
| +// RecentTaskInfo info = DocumentUtils.getTaskInfoFromTask(task);
|
| +// if (info == null) continue;
|
| +//
|
| +// String initialUrl = ActivityDelegate.getInitialUrlForDocument(info.baseIntent);
|
| +// if (TextUtils.isEmpty(initialUrl) || !TextUtils.equals(initialUrl, url)) continue;
|
| +//
|
| +// int id = ActivityDelegate.getTabIdFromIntent(info.baseIntent);
|
| +// DocumentTabModelSelector.setPrioritizedTabId(id);
|
| +// if (!ChromeApplication.getDocumentTabModelSelector().getModel(incognito)
|
| +// .isRetargetable(id)) {
|
| +// continue;
|
| +// }
|
| +//
|
| +// if (!moveToFront(task)) continue;
|
| +// return id;
|
| +// }
|
| +//
|
| +// return Tab.INVALID_TAB_ID;
|
| +// }
|
|
|
| /**
|
| * On opting out, remove all the old tasks from the recents.
|
| * @param fromDocument Whether any possible migration was from document mode to classic.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private void cleanUpChromeRecents(boolean fromDocument) {
|
| - ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
| - List<ActivityManager.AppTask> taskList = am.getAppTasks();
|
| - PackageManager pm = getPackageManager();
|
| - for (int i = 0; i < taskList.size(); i++) {
|
| - AppTask task = taskList.get(i);
|
| - String className = DocumentUtils.getTaskClassName(task, pm);
|
| - if (className == null) continue;
|
| -
|
| - RecentTaskInfo taskInfo = DocumentUtils.getTaskInfoFromTask(task);
|
| - if (taskInfo == null) continue;
|
| -
|
| - // Skip the document activities if we are migrating from classic to document.
|
| - boolean skip = !fromDocument && DocumentActivity.isDocumentActivity(className);
|
| - if (!skip && (taskInfo.id != getTaskId())) {
|
| - taskList.get(i).finishAndRemoveTask();
|
| - }
|
| - }
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private void cleanUpChromeRecents(boolean fromDocument) {
|
| +// ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
| +// List<ActivityManager.AppTask> taskList = am.getAppTasks();
|
| +// PackageManager pm = getPackageManager();
|
| +// for (int i = 0; i < taskList.size(); i++) {
|
| +// AppTask task = taskList.get(i);
|
| +// String className = DocumentUtils.getTaskClassName(task, pm);
|
| +// if (className == null) continue;
|
| +//
|
| +// RecentTaskInfo taskInfo = DocumentUtils.getTaskInfoFromTask(task);
|
| +// if (taskInfo == null) continue;
|
| +//
|
| +// // Skip the document activities if we are migrating from classic to document.
|
| +// boolean skip = !fromDocument && DocumentActivity.isDocumentActivity(className);
|
| +// if (!skip && (taskInfo.id != getTaskId())) {
|
| +// taskList.get(i).finishAndRemoveTask();
|
| +// }
|
| +// }
|
| +// }
|
|
|
| /**
|
| * Set flags that ensure that we control when our Activities disappear from Recents.
|
| @@ -730,27 +730,27 @@ public class ChromeLauncherActivity extends Activity
|
| * @param extraFlags Other flags to add to the Intent, 0 if there's nothing to add.
|
| * @param incognito Whether we are launching an incognito document.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private static void setRecentsFlagsOnIntent(Intent intent, int extraFlags, boolean incognito) {
|
| - intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
|
| - if (!incognito) intent.addFlags(Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
|
| - if (extraFlags != 0) intent.addFlags(extraFlags);
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private static void setRecentsFlagsOnIntent(Intent intent, int extraFlags, boolean incognito) {
|
| +// intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
|
| +// if (!incognito) intent.addFlags(Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
|
| +// if (extraFlags != 0) intent.addFlags(extraFlags);
|
| +// }
|
|
|
| /**
|
| * @return Whether there is already an browser instance of Chrome already running.
|
| */
|
| public boolean isChromeBrowserActivityRunning() {
|
| - for (WeakReference<Activity> reference : ApplicationStatus.getRunningActivities()) {
|
| - Activity activity = reference.get();
|
| - if (activity == null) continue;
|
| -
|
| - String className = activity.getClass().getName();
|
| - if (DocumentActivity.isDocumentActivity(className)
|
| - || TextUtils.equals(className, ChromeTabbedActivity.class.getName())) {
|
| - return true;
|
| - }
|
| - }
|
| +// for (WeakReference<Activity> reference : ApplicationStatus.getRunningActivities()) {
|
| +// Activity activity = reference.get();
|
| +// if (activity == null) continue;
|
| +//
|
| +// String className = activity.getClass().getName();
|
| +// if (DocumentActivity.isDocumentActivity(className)
|
| +// || TextUtils.equals(className, ChromeTabbedActivity.class.getName())) {
|
| +// return true;
|
| +// }
|
| +// }
|
| return false;
|
| }
|
|
|
| @@ -761,62 +761,62 @@ public class ChromeLauncherActivity extends Activity
|
| * @param task Task to attempt to bring back to the foreground.
|
| * @return Whether or not this succeeded.
|
| */
|
| - @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| - private static boolean moveToFront(AppTask task) {
|
| - try {
|
| - task.moveToFront();
|
| - return true;
|
| - } catch (SecurityException e) {
|
| - sMoveToFrontExceptionHistogram.recordHit();
|
| - }
|
| - return false;
|
| - }
|
| +// @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| +// private static boolean moveToFront(AppTask task) {
|
| +// try {
|
| +// task.moveToFront();
|
| +// return true;
|
| +// } catch (SecurityException e) {
|
| +//// sMoveToFrontExceptionHistogram.recordHit();
|
| +// }
|
| +// return false;
|
| +// }
|
|
|
| /**
|
| * Tries to launch a WebappActivity for the given Intent.
|
| * @return Intent to fire if the webapp Intent failed to launch because of security checks,
|
| * null otherwise.
|
| */
|
| - private Intent launchWebapp(Intent intent) {
|
| - String webappId = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_ID);
|
| - String webappUrl = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_URL);
|
| - String webappIcon = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_ICON);
|
| - int webappOrientation = IntentUtils.safeGetIntExtra(intent,
|
| - ShortcutHelper.EXTRA_ORIENTATION, ScreenOrientationValues.DEFAULT);
|
| - int webappSource = IntentUtils.safeGetIntExtra(intent,
|
| - ShortcutHelper.EXTRA_SOURCE, ShortcutSource.UNKNOWN);
|
| -
|
| - String webappName = WebappInfo.nameFromIntent(intent);
|
| - String webappShortName = WebappInfo.shortNameFromIntent(intent);
|
| -
|
| - if (webappId != null && webappUrl != null) {
|
| - String webappMacString = IntentUtils.safeGetStringExtra(
|
| - intent, ShortcutHelper.EXTRA_MAC);
|
| - byte[] webappMac =
|
| - webappMacString == null ? null : Base64.decode(webappMacString, Base64.DEFAULT);
|
| -
|
| - if (webappMac != null && WebappAuthenticator.isUrlValid(this, webappUrl, webappMac)) {
|
| - if (TextUtils.equals(ACTION_START_WEBAPP, intent.getAction())) {
|
| - LaunchMetrics.recordHomeScreenLaunchIntoStandaloneActivity(
|
| - webappUrl, webappSource);
|
| - }
|
| -
|
| - WebappActivity.launchInstance(this, webappId, webappUrl,
|
| - webappIcon, webappName, webappShortName, webappOrientation, webappSource);
|
| - } else {
|
| - Log.e(TAG, "Shortcut (" + webappUrl + ") opened in Chrome.");
|
| -
|
| - // Tried and failed. Change the intent action and try the URL with a VIEW Intent.
|
| - Intent fallbackIntent = new Intent(intent);
|
| - fallbackIntent.setAction(Intent.ACTION_VIEW);
|
| - fallbackIntent.setData(Uri.parse(webappUrl));
|
| - fallbackIntent.putExtra(BookmarkUtils.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true);
|
| - fallbackIntent.putExtra(ShortcutHelper.EXTRA_SOURCE, webappSource);
|
| - return fallbackIntent;
|
| - }
|
| - }
|
| - return null;
|
| - }
|
| +// private Intent launchWebapp(Intent intent) {
|
| +// String webappId = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_ID);
|
| +// String webappUrl = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_URL);
|
| +// String webappIcon = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_ICON);
|
| +// int webappOrientation = IntentUtils.safeGetIntExtra(intent,
|
| +// ShortcutHelper.EXTRA_ORIENTATION, ScreenOrientationValues.DEFAULT);
|
| +// int webappSource = IntentUtils.safeGetIntExtra(intent,
|
| +// ShortcutHelper.EXTRA_SOURCE, ShortcutSource.UNKNOWN);
|
| +//
|
| +// String webappName = WebappInfo.nameFromIntent(intent);
|
| +// String webappShortName = WebappInfo.shortNameFromIntent(intent);
|
| +//
|
| +// if (webappId != null && webappUrl != null) {
|
| +// String webappMacString = IntentUtils.safeGetStringExtra(
|
| +// intent, ShortcutHelper.EXTRA_MAC);
|
| +// byte[] webappMac =
|
| +// webappMacString == null ? null : Base64.decode(webappMacString, Base64.DEFAULT);
|
| +//
|
| +// if (webappMac != null && WebappAuthenticator.isUrlValid(this, webappUrl, webappMac)) {
|
| +// if (TextUtils.equals(ACTION_START_WEBAPP, intent.getAction())) {
|
| +// LaunchMetrics.recordHomeScreenLaunchIntoStandaloneActivity(
|
| +// webappUrl, webappSource);
|
| +// }
|
| +//
|
| +// WebappActivity.launchInstance(this, webappId, webappUrl,
|
| +// webappIcon, webappName, webappShortName, webappOrientation, webappSource);
|
| +// } else {
|
| +// Log.e(TAG, "Shortcut (" + webappUrl + ") opened in Chrome.");
|
| +//
|
| +// // Tried and failed. Change the intent action and try the URL with a VIEW Intent.
|
| +// Intent fallbackIntent = new Intent(intent);
|
| +// fallbackIntent.setAction(Intent.ACTION_VIEW);
|
| +// fallbackIntent.setData(Uri.parse(webappUrl));
|
| +// fallbackIntent.putExtra(BookmarkUtils.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true);
|
| +// fallbackIntent.putExtra(ShortcutHelper.EXTRA_SOURCE, webappSource);
|
| +// return fallbackIntent;
|
| +// }
|
| +// }
|
| +// return null;
|
| +// }
|
|
|
| /**
|
| * Tries to launch the First Run Experience. If ChromeLauncherActivity is running with the
|
| @@ -824,28 +824,28 @@ public class ChromeLauncherActivity extends Activity
|
| * own task, which then triggers First Run.
|
| * @return Whether or not the First Run Experience needed to be shown.
|
| */
|
| - private boolean launchFirstRunExperience() {
|
| - final boolean isIntentActionMain = getIntent() != null
|
| - && TextUtils.equals(getIntent().getAction(), Intent.ACTION_MAIN);
|
| - final Intent freIntent = FirstRunFlowSequencer.checkIfFirstRunIsNecessary(
|
| - this, isIntentActionMain);
|
| - if (freIntent == null) return false;
|
| -
|
| - if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
|
| - startActivityForResult(freIntent, FIRST_RUN_EXPERIENCE_REQUEST_CODE);
|
| - } else {
|
| - Intent newIntent = new Intent(getIntent());
|
| - newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| - startActivity(newIntent);
|
| - finish();
|
| - }
|
| - return true;
|
| - }
|
| +// private boolean launchFirstRunExperience() {
|
| +// final boolean isIntentActionMain = getIntent() != null
|
| +// && TextUtils.equals(getIntent().getAction(), Intent.ACTION_MAIN);
|
| +// final Intent freIntent = FirstRunFlowSequencer.checkIfFirstRunIsNecessary(
|
| +// this, isIntentActionMain);
|
| +// if (freIntent == null) return false;
|
| +//
|
| +// if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) != 0) {
|
| +// startActivityForResult(freIntent, FIRST_RUN_EXPERIENCE_REQUEST_CODE);
|
| +// } else {
|
| +// Intent newIntent = new Intent(getIntent());
|
| +// newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| +// startActivity(newIntent);
|
| +// finish();
|
| +// }
|
| +// return true;
|
| +// }
|
|
|
| /**
|
| * Send the number of times an exception was caught when trying to move a task back to front.
|
| */
|
| - public static void sendExceptionCount() {
|
| - sMoveToFrontExceptionHistogram.commitHistogram();
|
| - }
|
| +// public static void sendExceptionCount() {
|
| +// sMoveToFrontExceptionHistogram.commitHistogram();
|
| +// }
|
| }
|
|
|