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

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

Issue 2225893004: [WebApks] Tweak logic for 'bouncing back to chrome' (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 d717db18818f48dd145458009e185dcdf135c7d4..c509fd0695204d53d0cffccbfce86c3d01859950 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
@@ -445,6 +445,18 @@ public class ExternalNavigationHandler {
// to launch the WebAPK without showing the intent picker.
String targetWebApkPackageName =
mDelegate.findWebApkPackageName(resolvingInfos);
+
+ // We can't rely on this falling through to startActivityIfNeeded and behaving
+ // correctly for WebAPKs. This is because the target of the intent is the
+ // WebApk's main activity but that's just a bouncer which will redirect to
+ // WebApkActivity in chrome. To avoid bouncing indefinitely, don't override the
+ // navigation if we are currently showing the WebApk
+ // |params.webApkPackageName()| that we will redirect to.
+ if (targetWebApkPackageName != null
+ && targetWebApkPackageName.equals(params.webApkPackageName())) {
+ return OverrideUrlLoadingResult.NO_OVERRIDE;
+ }
+
if (targetWebApkPackageName != null
&& mDelegate.countSpecializedHandlers(resolvingInfos) == 1) {
intent.setPackage(targetWebApkPackageName);

Powered by Google App Engine
This is Rietveld 408576698