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 99c2a0418e6c33bcb9d4d677230334e3549929bd..ece7817e2585d69e40c8514104590c961e2a40ed 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 |
@@ -15,12 +15,17 @@ import android.text.TextUtils; |
import android.webkit.WebView; |
import org.chromium.base.CommandLine; |
+import org.chromium.base.ContextUtils; |
import org.chromium.base.Log; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.chrome.browser.ChromeSwitches; |
+import org.chromium.chrome.browser.ChromeTabbedActivity; |
import org.chromium.chrome.browser.IntentHandler; |
import org.chromium.chrome.browser.UrlConstants; |
+import org.chromium.chrome.browser.customtabs.CustomTabActivity; |
+import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider; |
+import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tab.TabRedirectHandler; |
import org.chromium.chrome.browser.util.IntentUtils; |
@@ -373,7 +378,22 @@ public class ExternalNavigationHandler { |
if (!mDelegate.isSpecializedHandlerAvailable(resolvingInfos)) { |
if (params.webApkPackageName() != null) { |
intent.setPackage(mDelegate.getPackageName()); |
+ intent.setClassName(mDelegate.getPackageName(), CustomTabActivity.class.getName()); |
+ |
+ ChromeLauncherActivity.updateHerbIntent(ContextUtils.getApplicationContext(), intent, intent.getData()); |
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID, mDelegate.getPackageName()); |
+ intent.putExtra( |
+ CustomTabIntentDataProvider.EXTRA_IS_OPENED_BY_CHROME, true); |
+ |
+ |
+ // Launch the Activity on top of this task. |
+ int updatedFlags = intent.getFlags(); |
+ updatedFlags &= ~Intent.FLAG_ACTIVITY_NEW_TASK; |
+ updatedFlags &= ~Intent.FLAG_ACTIVITY_NEW_DOCUMENT; |
+ intent.setFlags(updatedFlags); |
mDelegate.startActivity(intent); |
+ |
+ |
return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT; |
} |
return OverrideUrlLoadingResult.NO_OVERRIDE; |