Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java

Issue 2675803004: Fall back to shortcut A2HS when Phonesky is out of date or unavailable. (Closed)
Patch Set: Update add_to_homescreen_data_fetcher_unittest.cc. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698