OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.webapps; | 5 package org.chromium.chrome.browser.webapps; |
6 | 6 |
7 import android.content.Context; | |
8 | |
9 import org.chromium.base.ApplicationState; | |
10 import org.chromium.base.ApplicationStatus; | |
11 import org.chromium.base.ContextUtils; | |
7 import org.chromium.base.library_loader.LibraryLoader; | 12 import org.chromium.base.library_loader.LibraryLoader; |
13 import org.chromium.webapk.lib.client.WebApkIdentityServiceClient; | |
8 import org.chromium.webapk.lib.client.WebApkValidator; | 14 import org.chromium.webapk.lib.client.WebApkValidator; |
9 | 15 |
10 /** | 16 /** |
11 * Contains functionality needed for Chrome to host WebAPKs. | 17 * Contains functionality needed for Chrome to host WebAPKs. |
12 */ | 18 */ |
13 public class ChromeWebApkHost { | 19 public class ChromeWebApkHost { |
14 private static final String TAG = "ChromeWebApkHost"; | 20 private static final String TAG = "ChromeWebApkHost"; |
21 private static ApplicationStatus.ApplicationStateListener sListener; | |
15 | 22 |
16 public static void init() { | 23 public static void init() { |
17 WebApkValidator.init( | 24 WebApkValidator.init( |
18 ChromeWebApkHostSignature.EXPECTED_SIGNATURE, ChromeWebApkHostSi gnature.PUBLIC_KEY); | 25 ChromeWebApkHostSignature.EXPECTED_SIGNATURE, ChromeWebApkHostSi gnature.PUBLIC_KEY); |
19 } | 26 } |
20 | 27 |
21 /* Returns whether launching renderer in WebAPK process is enabled by Chrome . */ | 28 /* Returns whether launching renderer in WebAPK process is enabled by Chrome . */ |
22 public static boolean canLaunchRendererInWebApkProcess() { | 29 public static boolean canLaunchRendererInWebApkProcess() { |
23 return LibraryLoader.isInitialized() && nativeCanLaunchRendererInWebApkP rocess(); | 30 return LibraryLoader.isInitialized() && nativeCanLaunchRendererInWebApkP rocess(); |
24 } | 31 } |
25 | 32 |
33 /** Checks whether Chrome is the runtime host of the WebAPK asynchronously. */ | |
34 public static void checkChromeBacksWebApkAsync(Context appContext, String we bApkPackageName, | |
35 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.
| |
36 maybeRegisterListenerForWebApkIdentityServiceClient(); | |
37 WebApkIdentityServiceClient.checkBacksWebApkAsync(appContext, webApkPack ageName, callback); | |
38 } | |
39 | |
40 /** | |
41 * Registers an application listener to disconnect the singleton WebApkIdent ityServiceClient if | |
42 * it hasn't registered yet. | |
43 */ | |
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!
| |
44 private static void maybeRegisterListenerForWebApkIdentityServiceClient() { | |
45 if (sListener != null) return; | |
46 | |
47 sListener = new ApplicationStatus.ApplicationStateListener() { | |
48 @Override | |
49 public void onApplicationStateChange(int newState) { | |
50 if (newState == ApplicationState.HAS_STOPPED_ACTIVITIES | |
51 || newState == ApplicationState.HAS_DESTROYED_ACTIVITIES ) { | |
52 WebApkIdentityServiceClient.disconnectWebApkIdentityService( | |
53 ContextUtils.getApplicationContext()); | |
54 WebApkServiceClient.disconnectWebApkService( | |
55 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.
| |
56 | |
57 ApplicationStatus.unregisterApplicationStateListener(sListen er); | |
58 sListener = null; | |
59 } | |
60 } | |
61 }; | |
62 ApplicationStatus.registerApplicationStateListener(sListener); | |
63 } | |
26 | 64 |
27 private static native boolean nativeCanLaunchRendererInWebApkProcess(); | 65 private static native boolean nativeCanLaunchRendererInWebApkProcess(); |
28 } | 66 } |
OLD | NEW |