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 81bb2d147516f070c339313ad75badcc9d2cf7fa..62724443fc2b8ee27222583a78c49e2a39f96598 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 |
@@ -4,7 +4,13 @@ |
package org.chromium.chrome.browser.webapps; |
+import android.content.Context; |
+ |
+import org.chromium.base.ApplicationState; |
+import org.chromium.base.ApplicationStatus; |
+import org.chromium.base.ContextUtils; |
import org.chromium.base.library_loader.LibraryLoader; |
+import org.chromium.webapk.lib.client.WebApkIdentityServiceClient; |
import org.chromium.webapk.lib.client.WebApkValidator; |
/** |
@@ -12,6 +18,7 @@ import org.chromium.webapk.lib.client.WebApkValidator; |
*/ |
public class ChromeWebApkHost { |
private static final String TAG = "ChromeWebApkHost"; |
+ private static ApplicationStatus.ApplicationStateListener sListener; |
public static void init() { |
WebApkValidator.init( |
@@ -23,6 +30,37 @@ public class ChromeWebApkHost { |
return LibraryLoader.isInitialized() && nativeCanLaunchRendererInWebApkProcess(); |
} |
+ /** Checks whether Chrome is the runtime host of the WebAPK asynchronously. */ |
+ public static void checkChromeBacksWebApkAsync(Context appContext, String webApkPackageName, |
+ WebApkIdentityServiceClient.CheckBacksWebApkCallback callback) { |
pkotwicz
2017/07/19 16:09:13
Does the context have to be passed in?
Xi Han
2017/07/21 20:36:33
Done.
|
+ maybeRegisterListenerForWebApkIdentityServiceClient(); |
+ WebApkIdentityServiceClient.checkBacksWebApkAsync(appContext, webApkPackageName, callback); |
+ } |
+ |
+ /** |
+ * Registers an application listener to disconnect the singleton WebApkIdentityServiceClient if |
+ * it hasn't registered yet. |
+ */ |
pkotwicz
2017/07/19 16:09:13
The comment is out of date. Perhaps:
"to disconnec
Xi Han
2017/07/21 20:36:33
Thanks!
|
+ private static void maybeRegisterListenerForWebApkIdentityServiceClient() { |
+ if (sListener != null) return; |
+ |
+ sListener = new ApplicationStatus.ApplicationStateListener() { |
+ @Override |
+ public void onApplicationStateChange(int newState) { |
+ if (newState == ApplicationState.HAS_STOPPED_ACTIVITIES |
+ || newState == ApplicationState.HAS_DESTROYED_ACTIVITIES) { |
+ WebApkIdentityServiceClient.disconnectWebApkIdentityService( |
+ ContextUtils.getApplicationContext()); |
+ WebApkServiceClient.disconnectWebApkService( |
+ ContextUtils.getApplicationContext()); |
pkotwicz
2017/07/19 16:09:13
I think that disconnecting from both the WebApkIde
Xi Han
2017/07/21 20:36:33
Acknowledged.
|
+ |
+ ApplicationStatus.unregisterApplicationStateListener(sListener); |
+ sListener = null; |
+ } |
+ } |
+ }; |
+ ApplicationStatus.registerApplicationStateListener(sListener); |
+ } |
private static native boolean nativeCanLaunchRendererInWebApkProcess(); |
} |