Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java |
index 9a5e163b32c3e18ac72edda2601bc0f86a387d6c..468d2c22768d4a4dea594770fc7e26abbb4c580b 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java |
@@ -8,6 +8,7 @@ import android.content.Context; |
import android.content.Intent; |
import android.os.AsyncTask; |
+import org.chromium.base.CommandLine; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParams; |
@@ -19,6 +20,8 @@ import org.chromium.components.service_tab_launcher.ServiceTabLauncher; |
import org.chromium.content_public.browser.LoadUrlParams; |
import org.chromium.content_public.common.Referrer; |
import org.chromium.ui.base.PageTransition; |
+import org.chromium.webapk.lib.client.NavigationClient; |
+import org.chromium.webapk.lib.client.WebApkValidator; |
/** |
* Service Tab Launcher implementation for Chrome. Provides the ability for Android Services |
@@ -41,9 +44,17 @@ public class ChromeServiceTabLauncher extends ServiceTabLauncher { |
final int referrerPolicy, final String extraHeaders, final byte[] postData) { |
final TabDelegate tabDelegate = new TabDelegate(incognito); |
- // Try and retrieve a WebappDataStorage object with scope corresponding to the URL to be |
- // opened. If one is found, and it has been opened recently, create an intent to launch the |
- // URL in a standalone web app frame. Otherwise, open the URL in a tab. |
+ // 1. Launch WebAPK if one matches the target URL. |
+ if (CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_WEBAPK)) { |
+ String webApkPackageName = WebApkValidator.queryWebApkPackage(context, url); |
+ if (webApkPackageName != null) { |
+ NavigationClient.launchWebApk(context, webApkPackageName, url); |
+ return; |
+ } |
+ } |
+ |
+ // 2. Launch WebappActivity if one matches the target URL and was opened recently. |
+ // Otherwise, open the URL in a tab. |
FetchWebappDataStorageCallback callback = new FetchWebappDataStorageCallback() { |
@Override |
public void onWebappDataStorageRetrieved(final WebappDataStorage storage) { |