| Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| index 1291b1fafcb9f72923e305cb2170327ee5e68896..b682de400c5f0c57660c3532cf100cba3e58877b 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
| @@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.IntentHandler;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| +import org.chromium.chrome.browser.tab.TabRedirectHandler;
|
| import org.chromium.chrome.browser.util.IntentUtils;
|
| import org.chromium.chrome.browser.util.UrlUtilities;
|
| import org.chromium.ui.base.PageTransition;
|
| @@ -203,8 +204,13 @@ public class ExternalNavigationHandler {
|
| // http://crbug/331571 : Do not override a navigation started from user typing.
|
| // http://crbug/424029 : Need to stay in Chrome for an intent heading explicitly to Chrome.
|
| if (params.getRedirectHandler() != null) {
|
| - if (params.getRedirectHandler().shouldStayInChrome(isExternalProtocol)
|
| - || params.getRedirectHandler().shouldNotOverrideUrlLoading()) {
|
| + TabRedirectHandler handler = params.getRedirectHandler();
|
| + if (handler.isFromCustomTabIntent()) {
|
| + // http://crbug.com/613667 : Custom tabs forbids external navigation for the first
|
| + // url, unless the first url is a redirect.
|
| + if (!params.isRedirect()) return OverrideUrlLoadingResult.NO_OVERRIDE;
|
| + } else if (handler.shouldStayInChrome(isExternalProtocol)
|
| + || handler.shouldNotOverrideUrlLoading()) {
|
| return OverrideUrlLoadingResult.NO_OVERRIDE;
|
| }
|
| }
|
|
|