Index: chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java |
index c80fa37afe9f8665d77a53c6635fe6822e282b7a..74283028cd88bbb5220504d018cfb630956454f3 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentRequestImpl.java |
@@ -421,6 +421,13 @@ public class PaymentRequestImpl |
if (!parseAndValidateDetailsOrDisconnectFromClient(details)) return; |
+ if (mRawTotal == null) { |
+ disconnectFromClientWithDebugMessage("Missing total"); |
+ recordAbortReasonHistogram( |
+ PaymentRequestMetrics.ABORT_REASON_INVALID_DATA_FROM_RENDERER); |
+ return; |
+ } |
+ |
PaymentAppFactory.getInstance().create(mWebContents, |
Collections.unmodifiableSet(mMethodData.keySet()), this /* callback */); |
@@ -736,15 +743,20 @@ public class PaymentRequestImpl |
details.total.amount.currencySystem, Locale.getDefault()); |
} |
- // Total is never pending. |
- LineItem uiTotal = new LineItem(details.total.label, |
- mCurrencyFormatter.getFormattedCurrencyCode(), |
- mCurrencyFormatter.format(details.total.amount.value), /* isPending */ false); |
+ if (details.total != null) { |
+ mRawTotal = details.total; |
+ } |
+ |
+ if (mRawTotal != null) { |
+ // Total is never pending. |
+ LineItem uiTotal = new LineItem(mRawTotal.label, |
+ mCurrencyFormatter.getFormattedCurrencyCode(), |
+ mCurrencyFormatter.format(mRawTotal.amount.value), /* isPending */ false); |
- List<LineItem> uiLineItems = getLineItems(details.displayItems, mCurrencyFormatter); |
+ List<LineItem> uiLineItems = getLineItems(details.displayItems, mCurrencyFormatter); |
- mUiShoppingCart = new ShoppingCart(uiTotal, uiLineItems); |
- mRawTotal = details.total; |
+ mUiShoppingCart = new ShoppingCart(uiTotal, uiLineItems); |
+ } |
mRawLineItems = Collections.unmodifiableList(Arrays.asList(details.displayItems)); |
mUiShippingOptions = getShippingOptions(details.shippingOptions, mCurrencyFormatter); |