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