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 5a86992c61579c0e43facf58d1d21524bd386ff0..bf47b42b2e172f69d843532814c879c1f9af4a6a 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 |
@@ -347,7 +347,7 @@ public class ExternalNavigationHandler { |
// startActivityIfNeeded or startActivity. |
if (!isExternalProtocol) { |
if (!mDelegate.isSpecializedHandlerAvailable(resolvingInfos)) { |
- if (params.isWebApk()) { |
+ if (params.webApkPackageName() != null) { |
intent.setPackage(mDelegate.getPackageName()); |
mDelegate.startActivity(intent); |
return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; |
@@ -412,6 +412,15 @@ public class ExternalNavigationHandler { |
IntentWithGesturesHandler.getInstance().onNewIntentWithGesture(intent); |
} |
+ // If the only specialized intent handler is a WebAPK, set the intent's package |
+ // to launch the WebAPK without showing the intent picker. |
+ String targetWebApkPackageName = |
+ mDelegate.findValidWebApkPackageName(resolvingInfos); |
+ if (targetWebApkPackageName != null |
+ && mDelegate.countSpecializedHandlers(resolvingInfos) == 1) { |
+ intent.setPackage(targetWebApkPackageName); |
+ } |
+ |
if (mDelegate.startActivityIfNeeded(intent)) { |
return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; |
} else { |