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

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

Issue 2885443003: enable modifiers for native apps (Closed)
Patch Set: more beautify Created 3 years, 7 months 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/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();

Powered by Google App Engine
This is Rietveld 408576698