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 f844d6eab1c19d4bbbdc2eefbdc41b6c37a66c4f..2b685eb86546e7cb4012d13074adaac87f37188b 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 |
@@ -335,6 +335,10 @@ public class ExternalNavigationHandler { |
IntentHandler.setPendingReferrer(intent, params.getReferrerUrl()); |
} |
+ if (!params.isIncognito() && mDelegate.maybeDelegateToAppLink(intent)) { |
+ return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; |
+ } |
+ |
// Make sure webkit can handle it internally before checking for specialized |
// handlers. If webkit can't handle it internally, we need to call |
// startActivityIfNeeded or startActivity. |
@@ -383,6 +387,7 @@ public class ExternalNavigationHandler { |
params.shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent()); |
return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION; |
} else { |
+ |
// Some third-party app launched Chrome with an intent, and the URL got redirected. |
// The user has explicitly chosen Chrome over other intent handlers, so stay in |
// Chrome unless there was a new intent handler after redirection or Chrome cannot |
@@ -398,6 +403,7 @@ public class ExternalNavigationHandler { |
if (params.hasUserGesture()) { |
IntentWithGesturesHandler.getInstance().onNewIntentWithGesture(intent); |
} |
+ |
if (mDelegate.startActivityIfNeeded(intent)) { |
return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; |
} else { |