summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc56
1 files changed, 55 insertions, 1 deletions
diff --git a/chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc b/chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc
index 6d652458039..031ee99b7b5 100644
--- a/chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc
+++ b/chromium/third_party/blink/renderer/modules/payments/payment_event_data_conversion.cc
@@ -4,6 +4,7 @@
#include "third_party/blink/renderer/modules/payments/payment_event_data_conversion.h"
+#include "third_party/blink/public/mojom/payments/payment_app.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/to_v8_for_core.h"
#include "third_party/blink/renderer/modules/payments/can_make_payment_event_init.h"
#include "third_party/blink/renderer/modules/payments/payment_currency_amount.h"
@@ -62,7 +63,7 @@ ScriptValue StringDataToScriptValue(ScriptState* script_state,
.ToLocal(&v8_value)) {
return ScriptValue();
}
- return ScriptValue(script_state, v8_value);
+ return ScriptValue(script_state->GetIsolate(), v8_value);
}
PaymentMethodData* ToPaymentMethodData(
@@ -76,6 +77,44 @@ PaymentMethodData* ToPaymentMethodData(
return method_data;
}
+PaymentOptions* ToPaymentOptions(
+ payments::mojom::blink::PaymentOptionsPtr options) {
+ DCHECK(options);
+ PaymentOptions* payment_options = PaymentOptions::Create();
+ payment_options->setRequestPayerName(options->request_payer_name);
+ payment_options->setRequestPayerEmail(options->request_payer_email);
+ payment_options->setRequestPayerPhone(options->request_payer_phone);
+ payment_options->setRequestShipping(options->request_shipping);
+
+ String shipping_type = "";
+ switch (options->shipping_type) {
+ case payments::mojom::PaymentShippingType::SHIPPING:
+ shipping_type = "shipping";
+ break;
+ case payments::mojom::PaymentShippingType::DELIVERY:
+ shipping_type = "delivery";
+ break;
+ case payments::mojom::PaymentShippingType::PICKUP:
+ shipping_type = "pickup";
+ break;
+ }
+ payment_options->setShippingType(shipping_type);
+ return payment_options;
+}
+
+PaymentShippingOption* ToShippingOption(
+ payments::mojom::blink::PaymentShippingOptionPtr option) {
+ DCHECK(option);
+ PaymentShippingOption* shipping_option = PaymentShippingOption::Create();
+
+ shipping_option->setAmount(
+ ToPaymentCurrencyAmount(std::move(option->amount)));
+ shipping_option->setLabel(option->label);
+ shipping_option->setId(option->id);
+ shipping_option->setSelected(option->selected);
+ return shipping_option;
+}
+
} // namespace
PaymentRequestEventInit* PaymentEventDataConversion::ToPaymentRequestEventInit(
@@ -107,6 +146,21 @@ PaymentRequestEventInit* PaymentEventDataConversion::ToPaymentRequestEventInit(
}
event_init->setModifiers(modifiers);
event_init->setInstrumentKey(event_data->instrument_key);
+
+ bool request_shipping = false;
+ if (event_data->payment_options) {
+ request_shipping = event_data->payment_options->request_shipping;
+ event_init->setPaymentOptions(
+ ToPaymentOptions(std::move(event_data->payment_options)));
+ }
+ if (event_data->shipping_options.has_value() && request_shipping) {
+ HeapVector<Member<PaymentShippingOption>> shipping_options;
+ for (auto& option : event_data->shipping_options.value()) {
+ shipping_options.push_back(ToShippingOption(std::move(option)));
+ }
+ event_init->setShippingOptions(shipping_options);
+ }
+
return event_init;
}