| 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 b73fc416d8e6d1a06968dc2a2f29075eb7b6b524..ee460eb457ef759bd0ef36d42e2d674a56eb6245 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
|
| @@ -11,10 +11,12 @@ import android.os.StrictMode;
|
| import android.provider.Settings;
|
| import android.support.v7.app.AlertDialog;
|
|
|
| +import org.chromium.base.Callback;
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.Log;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.ChromeApplication;
|
| import org.chromium.chrome.browser.ChromeFeatureList;
|
| import org.chromium.chrome.browser.ChromeVersionInfo;
|
| import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
|
| @@ -22,12 +24,16 @@ import org.chromium.webapk.lib.client.WebApkValidator;
|
|
|
| /**
|
| * Contains functionality needed for Chrome to host WebAPKs.
|
| + * This Java object is created by and owned by the native ChromeWebApkHost.
|
| */
|
| public class ChromeWebApkHost {
|
| private static final String TAG = "ChromeWebApkHost";
|
|
|
| private static Boolean sEnabledForTesting;
|
|
|
| + /** Weak pointer to the native ChromeWebApkHost. */
|
| + private long mNativePointer;
|
| +
|
| public static void init() {
|
| WebApkValidator.initWithBrowserHostSignature(ChromeWebApkHostSignature.EXPECTED_SIGNATURE);
|
| }
|
| @@ -63,6 +69,43 @@ public class ChromeWebApkHost {
|
| return ChromeWebApkHost.isEnabled();
|
| }
|
|
|
| + @CalledByNative
|
| + private static ChromeWebApkHost create(long nativePtr) {
|
| + return new ChromeWebApkHost(nativePtr);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void destroy() {
|
| + mNativePointer = 0;
|
| + }
|
| +
|
| + /**
|
| + * Checks whether the Google Play Install API is available.
|
| + */
|
| + @CalledByNative
|
| + private void canUseGooglePlayInstallApi() {
|
| + ChromeApplication application = (ChromeApplication) ContextUtils.getApplicationContext();
|
| + GooglePlayWebApkInstallDelegate delegate = application.getGooglePlayWebApkInstallDelegate();
|
| + if (delegate == null) {
|
| + nativeOnCanUseGooglePlayInstallApi(mNativePointer, false);
|
| + return;
|
| + }
|
| +
|
| + Callback<Boolean> callback = new Callback<Boolean>() {
|
| + @Override
|
| + public void onResult(Boolean result) {
|
| + if (mNativePointer != 0) {
|
| + nativeOnCanUseGooglePlayInstallApi(mNativePointer, result);
|
| + }
|
| + }
|
| + };
|
| + delegate.canUseInstallApi("org.chromium.test", 0, "test", "", "", callback);
|
| + }
|
| +
|
| + private ChromeWebApkHost(long nativePtr) {
|
| + mNativePointer = nativePtr;
|
| + }
|
| +
|
| /**
|
| * Check the cached value to figure out if the feature is enabled. We have to use the cached
|
| * value because native library may not yet been loaded.
|
| @@ -155,4 +198,6 @@ public class ChromeWebApkHost {
|
| }
|
|
|
| private static native boolean nativeCanUseGooglePlayToInstallWebApk();
|
| + private native void nativeOnCanUseGooglePlayInstallApi(long nativeChromeWebApkHost,
|
| + boolean success);
|
| }
|
|
|