Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java |
index 77f01b87f7aebfe72504a9944c42108e277d2a7f..d6e36d0fde86dc381f278f5e0135c4677dae95d4 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java |
@@ -6,12 +6,14 @@ package org.chromium.chrome.browser.webapps; |
import android.os.StrictMode; |
+import org.chromium.base.CommandLine; |
import org.chromium.base.ContextUtils; |
import org.chromium.base.Log; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.base.library_loader.LibraryLoader; |
import org.chromium.chrome.browser.AppHooks; |
import org.chromium.chrome.browser.ChromeFeatureList; |
+import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.GooglePlayInstallState; |
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; |
import org.chromium.chrome.browser.externalauth.UserRecoverableErrorHandler; |
@@ -30,7 +32,8 @@ public class ChromeWebApkHost { |
private static Boolean sEnabledForTesting; |
public static void init() { |
- WebApkValidator.initWithBrowserHostSignature(ChromeWebApkHostSignature.EXPECTED_SIGNATURE); |
+ WebApkValidator.init(isAnyPackageNameEnabledInPrefs(), |
+ ChromeWebApkHostSignature.EXPECTED_SIGNATURE, ChromeWebApkHostSignature.PUBLIC_KEY); |
} |
public static void initForTesting(boolean enabled) { |
@@ -98,6 +101,21 @@ public class ChromeWebApkHost { |
} |
/** |
+ * Check the cached value to figure out if any WebAPK package name may be used. We have to use |
+ * the cached value because native library may not yet been loaded. |
+ * @return Whether the feature is enabled. |
+ */ |
+ private static boolean isAnyPackageNameEnabledInPrefs() { |
+ // Will go away once the feature is enabled for everyone by default. |
+ StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); |
+ try { |
+ return ChromePreferenceManager.getInstance().getCachedWebApkAnyPackageName(); |
+ } finally { |
+ StrictMode.setThreadPolicy(oldPolicy); |
+ } |
+ } |
+ |
+ /** |
* Once native is loaded we can consult the command-line (set via about:flags) and also finch |
* state to see if we should enable WebAPKs. |
*/ |
@@ -110,6 +128,15 @@ public class ChromeWebApkHost { |
Log.d(TAG, "WebApk setting changed (%s => %s)", wasEnabled, isEnabled); |
preferenceManager.setCachedWebApkRuntimeEnabled(isEnabled); |
} |
+ |
+ boolean wasAnyPackageNameEnabled = isAnyPackageNameEnabledInPrefs(); |
+ boolean isAnyPackageNameEnabled = |
+ CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_ANY_WEBAPK_PACKAGE_NAME); |
+ if (wasAnyPackageNameEnabled != isAnyPackageNameEnabled) { |
+ Log.d(TAG, "WebApk Any Package name setting changed (%s => %s)", |
+ wasAnyPackageNameEnabled, isAnyPackageNameEnabled); |
+ preferenceManager.setCachedWebApkAnyPackageNameEnabled(isAnyPackageNameEnabled); |
+ } |
} |
private static native boolean nativeCanLaunchRendererInWebApkProcess(); |