Chromium Code Reviews| 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(); |
| } |