Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2936)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java

Issue 2057933002: [Custom Tabs] Navigate to other apps if the first url is a redirect (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
}

Powered by Google App Engine
This is Rietveld 408576698