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

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

Issue 2885443003: enable modifiers for native apps (Closed)
Patch Set: fix compilation error 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
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 864760ea89049ac282d019d0e0e771b0805dbd1c..6653d4d1b91fae281157425d9f3781d5679450fc 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
@@ -38,6 +38,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;
@@ -76,6 +77,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";
@@ -376,6 +378,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);
@@ -497,6 +503,51 @@ 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();
+
+ // total {{{
+ if (modifier.total != null) {
+ json.name("total");
+ serializePaymentItem(modifier.total, json);
+ } else {
+ json.name("total").nullValue();
+ }
+ // }}} total
+
+ // supportedMethods {{{
+ json.name("supportedMethods").beginArray();
+ for (String method : modifier.methodData.supportedMethods) {
+ json.value(method);
+ }
+ json.endArray();
+ // }}} supportedMethods
+
+ // data {{{
+ json.name("data").value(modifier.methodData.stringifiedData);
+ // }}}
+
+ json.endObject();
+ // }}}
+ }
+
@Override
public void onIntentCompleted(WindowAndroid window, int resultCode, Intent data) {
ThreadUtils.assertOnUiThread();
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestUI.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698