Chromium Code Reviews| 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 efaf9f0b4fe6c32aa96d0cfb9d90073f5dbc2bc8..04c6ac8305f7f9bacfddd902ed589916e8e0c441 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 |
| @@ -37,6 +37,7 @@ import org.chromium.ui.base.WindowAndroid; |
| import java.io.IOException; |
| import java.io.StringWriter; |
| import java.util.ArrayList; |
| +import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.List; |
| @@ -75,6 +76,7 @@ public class AndroidPaymentApp |
| private static final String EXTRA_MERCHANT_NAME = "merchantName"; |
| private static final String EXTRA_METHOD_DATA = "methodData"; |
| private static final String EXTRA_METHOD_NAMES = "methodNames"; |
| + private static final String EXTRA_MODIFIERS = "modifiers"; |
| private static final String EXTRA_PAYMENT_REQUEST_ID = "paymentRequestId"; |
| private static final String EXTRA_PAYMENT_REQUEST_ORIGIN = "paymentRequestOrigin"; |
| private static final String EXTRA_TOP_LEVEL_CERTIFICATE_CHAIN = "topLevelCertificateChain"; |
| @@ -337,8 +339,8 @@ public class AndroidPaymentApp |
| } |
| } |
| - private static Bundle buildExtras(@Nullable String id, @Nullable String merchantName, |
| - String origin, String iframeOrigin, @Nullable byte[][] certificateChain, |
| + private Bundle buildExtras(@Nullable String id, @Nullable String merchantName, String origin, |
|
gogerald1
2017/05/18 21:57:33
you may want put static back here
wuandy1
2017/05/19 01:59:57
Done.
|
| + String iframeOrigin, @Nullable byte[][] certificateChain, |
| Map<String, PaymentMethodData> methodDataMap, PaymentItem total, |
| @Nullable List<PaymentItem> displayItems, |
| @Nullable Map<String, PaymentDetailsModifier> modifiers) { |
| @@ -369,6 +371,10 @@ public class AndroidPaymentApp |
| } |
| extras.putParcelable(EXTRA_METHOD_DATA, methodDataBundle); |
| + if (modifiers != null) { |
| + extras.putString(EXTRA_MODIFIERS, serializeModifiers(modifiers.values())); |
| + } |
| + |
| String serializedTotalAmount = serializeTotalAmount(total.amount); |
| extras.putString(EXTRA_TOTAL, |
| serializedTotalAmount == null ? EMPTY_JSON_DATA : serializedTotalAmount); |
| @@ -490,6 +496,45 @@ public class AndroidPaymentApp |
| // }}} item |
| } |
| + private static String serializeModifiers(Collection<PaymentDetailsModifier> modifiers) { |
| + StringWriter stringWriter = new StringWriter(); |
| + JsonWriter json = new JsonWriter(stringWriter); |
| + try { |
| + json.beginArray(); |
| + for (PaymentDetailsModifier modifier : modifiers) { |
| + serializeModifier(modifier, json); |
| + } |
| + json.endArray(); |
| + } catch (IOException e) { |
| + return EMPTY_JSON_DATA; |
| + } |
| + return stringWriter.toString(); |
| + } |
| + |
| + private static void serializeModifier(PaymentDetailsModifier modifier, JsonWriter json) |
| + throws IOException { |
| + // {{{ |
| + json.beginObject(); |
| + |
| + if (modifier.total != null) { |
|
gogerald1
2017/05/18 21:57:33
I guess you would do "json.name("total").nullValue
wuandy1
2017/05/19 01:59:57
Done.
|
| + // total {{{ |
| + json.name("total"); |
| + serializePaymentItem(modifier.total, json); |
| + // }}} total |
| + } |
| + |
| + // supportedMethods {{{ |
| + json.name("supportedMethods").beginArray(); |
| + for (String method : modifier.methodData.supportedMethods) { |
| + json.value(method); |
| + } |
| + json.endArray(); |
| + // }}} supportedMethods |
| + |
| + json.endObject(); |
| + // }}} |
| + } |
| + |
| @Override |
| public void onIntentCompleted(WindowAndroid window, int resultCode, Intent data) { |
| ThreadUtils.assertOnUiThread(); |