| Index: chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
|
| index 681dc1f6482840be0f6af0f59c1ab8febd90bebb..759556274ffd256daa5fa308b51aa23292cf02c5 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationPlatformBridge.java
|
| @@ -41,6 +41,7 @@ import org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences
|
| import org.chromium.chrome.browser.preferences.website.SingleWebsitePreferences;
|
| import org.chromium.chrome.browser.preferences.website.SiteSettingsCategory;
|
| import org.chromium.components.url_formatter.UrlFormatter;
|
| +import org.chromium.webapk.lib.client.WebApkServiceClient;
|
| import org.chromium.webapk.lib.client.WebApkValidator;
|
|
|
| import java.net.URI;
|
| @@ -147,16 +148,30 @@ public class NotificationPlatformBridge {
|
|
|
| /**
|
| * Returns the package for the WebAPK which should handle the URL.
|
| - *
|
| * @param url The url to check.
|
| + * @param callbackPointer The callback to call after we know whether a WebAPK can handle the
|
| + * url.
|
| * @return Package name of the WebAPK which should handle the URL. Returns empty string if the
|
| * URL should not be handled by a WebAPK.
|
| */
|
| @CalledByNative
|
| - private String queryWebApkPackage(String url) {
|
| - String webApkPackage =
|
| + private void queryWebApkPackage(String url, final long callbackPointer) {
|
| + final String webApkPackage =
|
| WebApkValidator.queryWebApkPackage(ContextUtils.getApplicationContext(), url);
|
| - return webApkPackage == null ? "" : webApkPackage;
|
| + if (webApkPackage == null) {
|
| + nativeOnQueryWebApkPackage(mNativeNotificationPlatformBridge, "", callbackPointer);
|
| + return;
|
| + }
|
| +
|
| + WebApkValidator.IsOwnedCheckCallback callback = new WebApkValidator.IsOwnedCheckCallback() {
|
| + @Override
|
| + public void onIsOwnedChecked(boolean isOwned) {
|
| + nativeOnQueryWebApkPackage(mNativeNotificationPlatformBridge,
|
| + isOwned ? webApkPackage : "", callbackPointer);
|
| + }
|
| + };
|
| + WebApkValidator.isOwnedWebApkAsync(
|
| + ContextUtils.getApplicationContext(), webApkPackage, callback);
|
| }
|
|
|
| /**
|
| @@ -717,7 +732,8 @@ public class NotificationPlatformBridge {
|
| if (webApkPackage.isEmpty()) {
|
| mNotificationManager.cancel(platformTag, PLATFORM_ID);
|
| } else {
|
| - WebApkNotificationClient.cancelNotification(webApkPackage, platformTag, PLATFORM_ID);
|
| + WebApkServiceClient.cancelNotification(
|
| + ContextUtils.getApplicationContext(), webApkPackage, platformTag, PLATFORM_ID);
|
| }
|
| }
|
|
|
| @@ -769,4 +785,6 @@ public class NotificationPlatformBridge {
|
| private native void nativeOnNotificationClosed(long nativeNotificationPlatformBridgeAndroid,
|
| String notificationId, String origin, String profileId, boolean incognito, String tag,
|
| boolean byUser);
|
| + private native void nativeOnQueryWebApkPackage(long nativeNotificationPlatformBridgeAndroid,
|
| + String webApkPackage, long callbackPointer);
|
| }
|
|
|