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

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

Issue 2974573002: Refactor WebApkServiceConnectionManager. (Closed)
Patch Set: yfriedman@'s comments. Created 3 years, 5 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 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();
}

Powered by Google App Engine
This is Rietveld 408576698