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

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

Issue 2974573002: Refactor WebApkServiceConnectionManager. (Closed)
Patch Set: pkotwicz@‘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..3b6a8a11f4400bd6297eb71ec27a683a7de83ec0 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,11 @@
package org.chromium.chrome.browser.webapps;
+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 +16,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 +28,36 @@ public class ChromeWebApkHost {
return LibraryLoader.isInitialized() && nativeCanLaunchRendererInWebApkProcess();
}
+ /** Checks whether Chrome is the runtime host of the WebAPK asynchronously. */
+ public static void checkChromeBacksWebApkAsync(String webApkPackageName,
+ WebApkIdentityServiceClient.CheckBrowserBacksWebApkCallback callback) {
+ maybeRegisterListenerForWebApkIdentityServiceClient();
+ WebApkIdentityServiceClient.getInstance().checkBrowserBacksWebApkAsync(
+ ContextUtils.getApplicationContext(), webApkPackageName, callback);
+ }
+
+ /**
+ * Registers an application listener to disconnect all connections to WebAPKs when Chrome is
+ * stopped.
+ */
+ 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.disconnectAll(ContextUtils.getApplicationContext());
+ WebApkServiceClient.disconnectAll();
+
+ ApplicationStatus.unregisterApplicationStateListener(sListener);
+ sListener = null;
+ }
+ }
+ };
+ ApplicationStatus.registerApplicationStateListener(sListener);
+ }
private static native boolean nativeCanLaunchRendererInWebApkProcess();
}

Powered by Google App Engine
This is Rietveld 408576698