OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.payments; | 5 package org.chromium.chrome.browser.payments; |
6 | 6 |
7 import android.app.Activity; | 7 import android.app.Activity; |
8 import android.content.Intent; | 8 import android.content.Intent; |
9 import android.graphics.Bitmap; | 9 import android.graphics.Bitmap; |
10 import android.os.Handler; | 10 import android.os.Handler; |
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 new LineItem(total.label, mCurrencyFormatter.getFormattedCurrenc
yCode(), | 664 new LineItem(total.label, mCurrencyFormatter.getFormattedCurrenc
yCode(), |
665 mCurrencyFormatter.format(total.amount.value), false /*
isPending */)); | 665 mCurrencyFormatter.format(total.amount.value), false /*
isPending */)); |
666 mUiShoppingCart.setAdditionalContents(modifier == null | 666 mUiShoppingCart.setAdditionalContents(modifier == null |
667 ? null | 667 ? null |
668 : getLineItems(modifier.additionalDisplayItems, mCurrenc
yFormatter)); | 668 : getLineItems(modifier.additionalDisplayItems, mCurrenc
yFormatter)); |
669 mUI.updateOrderSummarySection(mUiShoppingCart); | 669 mUI.updateOrderSummarySection(mUiShoppingCart); |
670 } | 670 } |
671 | 671 |
672 /** @return The first modifier that matches the given instrument, or null. *
/ | 672 /** @return The first modifier that matches the given instrument, or null. *
/ |
673 @Nullable private PaymentDetailsModifier getModifier(@Nullable PaymentInstru
ment instrument) { | 673 @Nullable private PaymentDetailsModifier getModifier(@Nullable PaymentInstru
ment instrument) { |
674 if (instrument == null) return null; | 674 if (mModifiers == null || instrument == null) return null; |
675 Set<String> methodNames = instrument.getInstrumentMethodNames(); | 675 Set<String> methodNames = instrument.getInstrumentMethodNames(); |
676 methodNames.retainAll(mModifiers.keySet()); | 676 methodNames.retainAll(mModifiers.keySet()); |
677 return methodNames.isEmpty() ? null : mModifiers.get(methodNames.iterato
r().next()); | 677 return methodNames.isEmpty() ? null : mModifiers.get(methodNames.iterato
r().next()); |
678 } | 678 } |
679 | 679 |
680 /** | 680 /** |
681 * Converts a list of payment items and returns their parsed representation. | 681 * Converts a list of payment items and returns their parsed representation. |
682 * | 682 * |
683 * @param items The payment items to parse. Can be null. | 683 * @param items The payment items to parse. Can be null. |
684 * @param formatter A formatter for the currency amount value. | 684 * @param formatter A formatter for the currency amount value. |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 PaymentOption selectedShippingOption, PaymentOption selectedPaymentM
ethod) { | 1027 PaymentOption selectedShippingOption, PaymentOption selectedPaymentM
ethod) { |
1028 assert selectedPaymentMethod instanceof PaymentInstrument; | 1028 assert selectedPaymentMethod instanceof PaymentInstrument; |
1029 PaymentInstrument instrument = (PaymentInstrument) selectedPaymentMethod
; | 1029 PaymentInstrument instrument = (PaymentInstrument) selectedPaymentMethod
; |
1030 mPaymentAppRunning = true; | 1030 mPaymentAppRunning = true; |
1031 | 1031 |
1032 PaymentOption selectedContact = mContactSection != null ? mContactSectio
n.getSelectedItem() | 1032 PaymentOption selectedContact = mContactSection != null ? mContactSectio
n.getSelectedItem() |
1033 : null; | 1033 : null; |
1034 mPaymentResponseHelper = new PaymentResponseHelper( | 1034 mPaymentResponseHelper = new PaymentResponseHelper( |
1035 selectedShippingAddress, selectedShippingOption, selectedContact
, this); | 1035 selectedShippingAddress, selectedShippingOption, selectedContact
, this); |
1036 | 1036 |
1037 // Create a map that is the subset of mMethodData that contains the | 1037 // Create maps that are subsets of mMethodData and mModifiers, that cont
ain |
1038 // payment methods supported by the selected payment instrument. If this | 1038 // the payment methods supported by the selected payment instrument. If
the |
1039 // intersection contains more than one payment method, the payment app i
s | 1039 // intersection of method data contains more than one payment method, th
e |
1040 // at liberty to choose (or have the user choose) one of the methods. | 1040 // payment app is at liberty to choose (or have the user choose) one of
the |
| 1041 // methods. |
1041 Map<String, PaymentMethodData> methodData = new HashMap<>(); | 1042 Map<String, PaymentMethodData> methodData = new HashMap<>(); |
| 1043 Map<String, PaymentDetailsModifier> modifiers = new HashMap<>(); |
1042 for (String instrumentMethodName : instrument.getInstrumentMethodNames()
) { | 1044 for (String instrumentMethodName : instrument.getInstrumentMethodNames()
) { |
1043 if (mMethodData.containsKey(instrumentMethodName)) { | 1045 if (mMethodData.containsKey(instrumentMethodName)) { |
1044 methodData.put(instrumentMethodName, mMethodData.get(instrumentM
ethodName)); | 1046 methodData.put(instrumentMethodName, mMethodData.get(instrumentM
ethodName)); |
1045 } | 1047 } |
| 1048 if (mModifiers != null && mModifiers.containsKey(instrumentMethodNam
e)) { |
| 1049 modifiers.put(instrumentMethodName, mModifiers.get(instrumentMet
hodName)); |
| 1050 } |
1046 } | 1051 } |
1047 | 1052 |
1048 instrument.invokePaymentApp(mMerchantName, mOrigin, mRawTotal, mRawLineI
tems, | 1053 instrument.invokePaymentApp(mMerchantName, mOrigin, Collections.unmodifi
ableMap(methodData), |
1049 Collections.unmodifiableMap(methodData), this); | 1054 mRawTotal, mRawLineItems, Collections.unmodifiableMap(modifiers)
, this); |
| 1055 |
1050 recordSuccessFunnelHistograms("PayClicked"); | 1056 recordSuccessFunnelHistograms("PayClicked"); |
1051 return !(instrument instanceof AutofillPaymentInstrument); | 1057 return !(instrument instanceof AutofillPaymentInstrument); |
1052 } | 1058 } |
1053 | 1059 |
1054 @Override | 1060 @Override |
1055 public void onDismiss() { | 1061 public void onDismiss() { |
1056 disconnectFromClientWithDebugMessage("Dialog dismissed"); | 1062 disconnectFromClientWithDebugMessage("Dialog dismissed"); |
1057 recordAbortReasonHistogram(PaymentRequestMetrics.ABORT_REASON_ABORTED_BY
_USER); | 1063 recordAbortReasonHistogram(PaymentRequestMetrics.ABORT_REASON_ABORTED_BY
_USER); |
1058 } | 1064 } |
1059 | 1065 |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1467 "PaymentRequest.CheckoutFunnel.Aborted", abortReason, | 1473 "PaymentRequest.CheckoutFunnel.Aborted", abortReason, |
1468 PaymentRequestMetrics.ABORT_REASON_MAX); | 1474 PaymentRequestMetrics.ABORT_REASON_MAX); |
1469 | 1475 |
1470 if (abortReason == PaymentRequestMetrics.ABORT_REASON_ABORTED_BY_USER) { | 1476 if (abortReason == PaymentRequestMetrics.ABORT_REASON_ABORTED_BY_USER) { |
1471 mJourneyLogger.recordJourneyStatsHistograms("UserAborted"); | 1477 mJourneyLogger.recordJourneyStatsHistograms("UserAborted"); |
1472 } else { | 1478 } else { |
1473 mJourneyLogger.recordJourneyStatsHistograms("OtherAborted"); | 1479 mJourneyLogger.recordJourneyStatsHistograms("OtherAborted"); |
1474 } | 1480 } |
1475 } | 1481 } |
1476 } | 1482 } |
OLD | NEW |