| 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; | 
|  |