Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.chrome.browser.payments; | |
| 6 | |
| 7 import android.content.Context; | |
| 8 import android.os.Handler; | |
| 9 | |
| 10 import org.chromium.content_public.browser.WebContents; | |
| 11 import org.chromium.payments.mojom.PaymentMethodData; | |
| 12 | |
| 13 import java.util.ArrayList; | |
| 14 import java.util.HashSet; | |
| 15 import java.util.List; | |
| 16 import java.util.Map; | |
| 17 import java.util.Set; | |
| 18 | |
| 19 /** | |
| 20 * This app class represents a web based payment app. | |
| 21 * | |
| 22 * Such apps are implemented as service workers according to the Payment | |
| 23 * App API specification. | |
| 24 * | |
| 25 * @see https://w3c.github.io/webpayments-payment-apps-api/ | |
| 26 */ | |
| 27 public class WebBasedPaymentApp implements PaymentApp { | |
| 28 private final Context mContext; | |
| 29 private final WebContents mWebContents; | |
| 30 private final WebBasedPaymentAppBridge.Manifest mManifest; | |
| 31 private final Set<String> mMethodNames; | |
| 32 | |
| 33 /** | |
| 34 * Build a web based payment app instance based on an installed manifest. | |
| 35 * | |
| 36 * @see https://w3c.github.io/webpayments-payment-apps-api/#payment-app-mani fest | |
| 37 * | |
| 38 * @param context The context. | |
| 39 * @param webContents The web contents where PaymentRequest was invoked. | |
| 40 * @param manifest A manifest that describes this payment app. | |
| 41 */ | |
| 42 public WebBasedPaymentApp(Context context, WebContents webContents, | |
| 43 WebBasedPaymentAppBridge.Manifest manifest) { | |
| 44 mContext = context; | |
| 45 mWebContents = webContents; | |
| 46 mManifest = manifest; | |
| 47 | |
| 48 mMethodNames = new HashSet<>(); | |
| 49 for (WebBasedPaymentAppBridge.Option option : manifest.options) { | |
| 50 mMethodNames.addAll(option.enabledMethods); | |
| 51 } | |
| 52 } | |
| 53 | |
| 54 @Override | |
| 55 public void getInstruments( | |
| 56 Map<String, PaymentMethodData> unusedMethodData, | |
| 57 final InstrumentsCallback callback) { | |
| 58 final List<PaymentInstrument> instruments = | |
| 59 new ArrayList<PaymentInstrument>(); | |
| 60 | |
| 61 for (WebBasedPaymentAppBridge.Option option : mManifest.options) { | |
| 62 instruments.add(new WebBasedPaymentInstrument( | |
| 63 mContext, mWebContents, mManifest.id, option)); | |
| 64 } | |
| 65 | |
| 66 new Handler().post(new Runnable() { | |
| 67 @Override | |
| 68 public void run() { | |
| 69 callback.onInstrumentsReady(WebBasedPaymentApp.this, instruments ); | |
| 70 } | |
| 71 }); | |
| 72 } | |
| 73 | |
| 74 @Override | |
| 75 public Set<String> getAppMethodNames() { | |
| 76 return mMethodNames; | |
|
please use gerrit instead
2016/11/29 14:28:44
Collections.unmodifiableSet().
tommyt
2016/11/30 13:44:38
Done.
| |
| 77 } | |
| 78 | |
| 79 @Override | |
| 80 public boolean supportsMethodsAndData(Map<String, PaymentMethodData> methods AndData) { | |
| 81 // TODO(tommyt): Implement this for Web Based Payment Apps. | |
|
please use gerrit instead
2016/11/29 14:28:44
TODO should have a bug number. Please file a new b
tommyt
2016/11/30 13:44:38
Done.
| |
| 82 return true; | |
| 83 } | |
| 84 | |
| 85 @Override | |
| 86 public String getAppIdentifier() { | |
| 87 return "Chrome_Web_Based_Payment_App"; | |
| 88 } | |
| 89 } | |
| OLD | NEW |