| Index: chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java
|
| index 3fb4a74185d085ced85bbde53895bac9edfec3b0..2b8c941161185c1abf5aebdf9ef537c28a67fd19 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/InterceptNavigationDelegateImpl.java
|
| @@ -106,24 +106,9 @@ public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg
|
| mTab.getActivity().getLastUserInteractionTime(), getLastCommittedEntryIndex());
|
|
|
| boolean shouldCloseTab = shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent();
|
| - boolean isInitialTabLaunchInBackground =
|
| - mTab.getLaunchType() == TabLaunchType.FROM_LONGPRESS_BACKGROUND && shouldCloseTab;
|
| - // http://crbug.com/448977: If a new tab is closed by this overriding, we should open an
|
| - // Intent in a new tab when Chrome receives it again.
|
| - ExternalNavigationParams params = new ExternalNavigationParams.Builder(
|
| - url, mTab.isIncognito(), navigationParams.referrer,
|
| - navigationParams.pageTransitionType,
|
| - navigationParams.isRedirect)
|
| - .setTab(mTab)
|
| - .setApplicationMustBeInForeground(true)
|
| - .setRedirectHandler(tabRedirectHandler)
|
| - .setOpenInNewTab(shouldCloseTab)
|
| - .setIsBackgroundTabNavigation(mTab.isHidden() && !isInitialTabLaunchInBackground)
|
| - .setIsMainFrame(navigationParams.isMainFrame)
|
| - .setHasUserGesture(navigationParams.hasUserGesture)
|
| - .setShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(shouldCloseTab
|
| - && navigationParams.isMainFrame)
|
| - .build();
|
| + ExternalNavigationParams params = buildExternalNavigationParams(navigationParams,
|
| + tabRedirectHandler,
|
| + shouldCloseTab).build();
|
| OverrideUrlLoadingResult result = mExternalNavHandler.shouldOverrideUrlLoading(params);
|
| mLastOverrideUrlLoadingResult = result;
|
|
|
| @@ -156,6 +141,31 @@ public class InterceptNavigationDelegateImpl implements InterceptNavigationDeleg
|
| }
|
|
|
| /**
|
| + * Returns ExternalNavigationParams.Builder to generate ExternalNavigationParams for
|
| + * ExternalNavigationHandler#shouldOverrideUrlLoading().
|
| + */
|
| + public ExternalNavigationParams.Builder buildExternalNavigationParams(
|
| + NavigationParams navigationParams, TabRedirectHandler tabRedirectHandler,
|
| + boolean shouldCloseTab) {
|
| + boolean isInitialTabLaunchInBackground =
|
| + mTab.getLaunchType() == TabLaunchType.FROM_LONGPRESS_BACKGROUND && shouldCloseTab;
|
| + // http://crbug.com/448977: If a new tab is closed by this overriding, we should open an
|
| + // Intent in a new tab when Chrome receives it again.
|
| + return new ExternalNavigationParams
|
| + .Builder(navigationParams.url, mTab.isIncognito(), navigationParams.referrer,
|
| + navigationParams.pageTransitionType, navigationParams.isRedirect)
|
| + .setTab(mTab)
|
| + .setApplicationMustBeInForeground(true)
|
| + .setRedirectHandler(tabRedirectHandler)
|
| + .setOpenInNewTab(shouldCloseTab)
|
| + .setIsBackgroundTabNavigation(mTab.isHidden() && !isInitialTabLaunchInBackground)
|
| + .setIsMainFrame(navigationParams.isMainFrame)
|
| + .setHasUserGesture(navigationParams.hasUserGesture)
|
| + .setShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent(
|
| + shouldCloseTab && navigationParams.isMainFrame);
|
| + }
|
| +
|
| + /**
|
| * Updates navigation history if navigation is canceled due to intent handler. We go back to the
|
| * last committed entry index which was saved before the navigation, and remove the empty
|
| * entries from the navigation history. See crbug.com/426679
|
|
|