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 62e7b26e134f1410c79c85b6eb56c6c04d801d72..870686359751c326fd92b41bac7c6b28dbc53c68 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,17 @@ public class ExternalNavigationHandler { |
IntentWithGesturesHandler.getInstance().onNewIntentWithGesture(intent); |
} |
+ if (CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_WEBAPK)) { |
+ // 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 { |