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

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

Issue 2974573002: Refactor WebApkServiceConnectionManager. (Closed)
Patch Set: Call the callback on UI thread if bindService() fails. 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..3bc287a0a851beb8d4891f41ad1825dc0ce74503 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;
/**
@@ -23,6 +27,27 @@ public class ChromeWebApkHost {
return LibraryLoader.isInitialized() && nativeCanLaunchRendererInWebApkProcess();
}
+ /*
+ * Registers an application listener to disconnect WebApkIdentityServiceClient when Chrome isn't
+ * visible.
+ */
+ public static void initializeWithNative() {
+ ApplicationStatus.registerApplicationStateListener(createApplicationStateListener());
+ }
+
+ /** Unbinds to the WebAPK Identity services once Chrome doesn't have any visible activity. */
+ private static ApplicationStatus.ApplicationStateListener createApplicationStateListener() {
+ return new ApplicationStatus.ApplicationStateListener() {
+ @Override
+ public void onApplicationStateChange(int newState) {
+ if (newState == ApplicationState.HAS_STOPPED_ACTIVITIES
+ || newState == ApplicationState.HAS_DESTROYED_ACTIVITIES) {
+ WebApkIdentityServiceClient.getInstance().disconnect(
+ ContextUtils.getApplicationContext());
+ }
+ }
+ };
+ }
private static native boolean nativeCanLaunchRendererInWebApkProcess();
}

Powered by Google App Engine
This is Rietveld 408576698