| Index: chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java
|
| index 0cf740802273d9c8679e2093d7060fcb13880f4b..65626274323429661f42144c4873f7c5fe48cbc6 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentApp.java
|
| @@ -13,6 +13,7 @@ import android.graphics.drawable.Drawable;
|
| import android.os.Bundle;
|
| import android.os.Handler;
|
| import android.os.IBinder;
|
| +import android.os.Parcelable;
|
| import android.os.RemoteException;
|
| import android.util.JsonWriter;
|
|
|
| @@ -46,6 +47,8 @@ public class AndroidPaymentApp extends PaymentInstrument implements PaymentApp,
|
| private static final String EXTRA_ORIGIN = "origin";
|
| private static final String EXTRA_DETAILS = "details";
|
| private static final String EXTRA_INSTRUMENT_DETAILS = "instrumentDetails";
|
| + private static final String EXTRA_CERTIFICATE_CHAIN = "certificateChain";
|
| + private static final String EXTRA_CERTIFICATE = "certificate";
|
| private static final String EMPTY_JSON_DATA = "{}";
|
| private final Handler mHandler;
|
| private final WebContents mWebContents;
|
| @@ -104,9 +107,21 @@ public class AndroidPaymentApp extends PaymentInstrument implements PaymentApp,
|
| mIsReadyToPayIntent.setClassName(mIsReadyToPayIntent.getPackage(), className);
|
| }
|
|
|
| + private void addCertificateChain(Bundle extras, byte[][] certificateChain) {
|
| + if (certificateChain != null && certificateChain.length > 0) {
|
| + Parcelable[] certificateArray = new Parcelable[certificateChain.length];
|
| + for (int i = 0; i < certificateChain.length; i++) {
|
| + Bundle bundle = new Bundle();
|
| + bundle.putByteArray(EXTRA_CERTIFICATE, certificateChain[i]);
|
| + certificateArray[i] = bundle;
|
| + }
|
| + extras.putParcelableArray(EXTRA_CERTIFICATE_CHAIN, certificateArray);
|
| + }
|
| + }
|
| +
|
| @Override
|
| public void getInstruments(Map<String, PaymentMethodData> methodData, String origin,
|
| - InstrumentsCallback callback) {
|
| + byte[][] certificateChain, InstrumentsCallback callback) {
|
| mInstrumentsCallback = callback;
|
| if (mIsReadyToPayIntent.getPackage() == null) {
|
| mHandler.post(new Runnable() {
|
| @@ -122,6 +137,7 @@ public class AndroidPaymentApp extends PaymentInstrument implements PaymentApp,
|
| extras.putString(EXTRA_ORIGIN, origin);
|
| PaymentMethodData data = methodData.get(mMethodNames.iterator().next());
|
| extras.putString(EXTRA_DATA, data == null ? EMPTY_JSON_DATA : data.stringifiedData);
|
| + addCertificateChain(extras, certificateChain);
|
| mIsReadyToPayIntent.putExtras(extras);
|
|
|
| if (mIsReadyToPayService != null) {
|
| @@ -202,13 +218,14 @@ public class AndroidPaymentApp extends PaymentInstrument implements PaymentApp,
|
| }
|
|
|
| @Override
|
| - public void invokePaymentApp(String merchantName, String origin,
|
| + public void invokePaymentApp(String merchantName, String origin, byte[][] certificateChain,
|
| Map<String, PaymentMethodData> methodDataMap, PaymentItem total,
|
| List<PaymentItem> displayItems, Map<String, PaymentDetailsModifier> modifiers,
|
| InstrumentDetailsCallback callback) {
|
| assert !mMethodNames.isEmpty();
|
| Bundle extras = new Bundle();
|
| extras.putString(EXTRA_ORIGIN, origin);
|
| + addCertificateChain(extras, certificateChain);
|
|
|
| String methodName = mMethodNames.iterator().next();
|
| extras.putString(EXTRA_METHOD_NAME, methodName);
|
|
|