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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java

Issue 2586213002: PaymentApp: Implement nativeGetAllAppManifests (Closed)
Patch Set: Rebase Created 4 years 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/payments/ServiceWorkerPaymentAppBridge.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java
index 46cf672f57624db40aa62430df27a7132c158c82..a67cd7513dc766243f3770432999f46ed2a679eb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java
@@ -7,7 +7,6 @@ package org.chromium.chrome.browser.payments;
import android.content.Context;
import android.graphics.drawable.Drawable;
-import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.content_public.browser.WebContents;
@@ -15,7 +14,7 @@ import org.chromium.payments.mojom.PaymentMethodData;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
+import java.util.Set;
/**
* Native bridge for interacting with service worker based payment apps.
@@ -33,11 +32,11 @@ public class ServiceWorkerPaymentAppBridge implements PaymentAppFactory.PaymentA
*/
public static class Manifest {
/**
- * The scope url of the service worker.
+ * The registration ID of the service worker.
*
* This can be used to identify a service worker based payment app.
*/
- public String scopeUrl;
+ public long registrationId;
public String label;
public Drawable icon;
public List<Option> options = new ArrayList<>();
@@ -56,50 +55,33 @@ public class ServiceWorkerPaymentAppBridge implements PaymentAppFactory.PaymentA
public List<String> enabledMethods = new ArrayList<>();
}
- /**
- * Fetch all the installed service worker app manifests.
- *
- * This method is protected so that it can be overridden by tests.
- *
- * @return The installed service worker app manifests.
- */
- @VisibleForTesting
- protected List<Manifest> getAllAppManifests() {
- return nativeGetAllAppManifests();
- }
-
@Override
public void create(Context context, WebContents webContents,
PaymentAppFactory.PaymentAppCreatedCallback callback) {
- List<Manifest> manifests = getAllAppManifests();
- for (int i = 0; i < manifests.size(); i++) {
- callback.onPaymentAppCreated(new ServiceWorkerPaymentApp(manifests.get(i)));
- }
- callback.onAllPaymentAppsCreated();
+ nativeGetAllAppManifests(webContents, callback);
}
/**
* Invoke a payment app with a given option and matching method data.
+ *
+ * @param webContents The web contents that invoked PaymentRequest.
+ * @param registrationId The service worker registration ID of the Payment App.
+ * @param optionId The ID of the PaymentOption that was selected by the user.
+ * @param methodData The PaymentMethodData objects that are relevant for this payment app.
*/
- public void invokePaymentapp(
- String scopeUrl, String optionId, Map<String, PaymentMethodData> methodData) {
- nativeInvokePaymentApp(scopeUrl, optionId, methodData);
- }
-
- @CalledByNative
- private static List<Manifest> createManifestList() {
- return new ArrayList<Manifest>();
+ public static void invokePaymentApp(WebContents webContents, long registrationId,
+ String optionId, Set<PaymentMethodData> methodData) {
+ nativeInvokePaymentApp(webContents, registrationId, optionId,
+ methodData.toArray(new PaymentMethodData[0]));
}
@CalledByNative
- private static Manifest createAndAddManifest(
- List<Manifest> manifestList, String scopeUrl, String label, String icon) {
+ private static Manifest createManifest(long registrationId, String label, String icon) {
Manifest manifest = new Manifest();
- manifest.scopeUrl = scopeUrl;
+ manifest.registrationId = registrationId;
manifest.label = label;
// TODO(tommyt): crbug.com/669876. Handle icons.
manifest.icon = null;
- manifestList.add(manifest);
return manifest;
}
@@ -120,7 +102,26 @@ public class ServiceWorkerPaymentAppBridge implements PaymentAppFactory.PaymentA
option.enabledMethods.add(enabledMethod);
}
- private static native List<Manifest> nativeGetAllAppManifests();
- private static native void nativeInvokePaymentApp(
- String scopeUrl, String optionId, Object methodDataMap);
+ @CalledByNative
+ private static void onGotManifest(Manifest manifest, WebContents webContents, Object callback) {
+ assert callback instanceof PaymentAppFactory.PaymentAppCreatedCallback;
+ ((PaymentAppFactory.PaymentAppCreatedCallback) callback)
+ .onPaymentAppCreated(new ServiceWorkerPaymentApp(webContents, manifest));
+ }
+
+ @CalledByNative
+ private static void onGotAllManifests(Object callback) {
+ assert callback instanceof PaymentAppFactory.PaymentAppCreatedCallback;
+ ((PaymentAppFactory.PaymentAppCreatedCallback) callback).onAllPaymentAppsCreated();
+ }
+
+ /*
+ * TODO(tommyt): crbug.com/505554. Change the |callback| parameter below to
+ * be of type PaymentAppFactory.PaymentAppCreatedCallback, once this JNI bug
+ * has been resolved.
+ */
+ private static native void nativeGetAllAppManifests(WebContents webContents, Object callback);
+
+ private static native void nativeInvokePaymentApp(WebContents webContents, long registrationId,
+ String optionId, PaymentMethodData[] methodData);
}

Powered by Google App Engine
This is Rietveld 408576698