Index: third_party/WebKit/Source/modules/payments/PaymentRequest.cpp |
diff --git a/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp b/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp |
index 660181d04606d82d91e9281cb608be735d0563f7..ffaac4e2d1cc52c327238dcc6bb483374dce2e6c 100644 |
--- a/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp |
+++ b/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp |
@@ -97,12 +97,12 @@ struct TypeConverter<PaymentDetailsModifierPtr, blink::PaymentDetailsModifier> { |
else |
output->total = PaymentItem::New(); |
- if (input.hasAdditionalDisplayItems()) |
- output->additional_display_items = |
- mojo::WTFArray<PaymentItemPtr>::From(input.additionalDisplayItems()); |
- else |
- output->additional_display_items = mojo::WTFArray<PaymentItemPtr>::New(0); |
- |
+ if (input.hasAdditionalDisplayItems()) { |
+ for (size_t i = 0; i < input.additionalDisplayItems().size(); ++i) { |
+ output->additional_display_items.append( |
+ PaymentItem::From(input.additionalDisplayItems()[i])); |
+ } |
+ } |
return output; |
} |
}; |
@@ -113,24 +113,26 @@ struct TypeConverter<PaymentDetailsPtr, blink::PaymentDetails> { |
PaymentDetailsPtr output = PaymentDetails::New(); |
output->total = PaymentItem::From(input.total()); |
- if (input.hasDisplayItems()) |
- output->display_items = |
- mojo::WTFArray<PaymentItemPtr>::From(input.displayItems()); |
- else |
- output->display_items = mojo::WTFArray<PaymentItemPtr>::New(0); |
+ if (input.hasDisplayItems()) { |
+ for (size_t i = 0; i < input.displayItems().size(); ++i) { |
+ output->display_items.append( |
+ PaymentItem::From(input.displayItems()[i])); |
+ } |
+ } |
- if (input.hasShippingOptions()) |
- output->shipping_options = mojo::WTFArray<PaymentShippingOptionPtr>::From( |
- input.shippingOptions()); |
- else |
- output->shipping_options = |
- mojo::WTFArray<PaymentShippingOptionPtr>::New(0); |
+ if (input.hasShippingOptions()) { |
+ for (size_t i = 0; i < input.shippingOptions().size(); ++i) { |
+ output->shipping_options.append( |
+ PaymentShippingOption::From(input.shippingOptions()[i])); |
+ } |
+ } |
- if (input.hasModifiers()) |
- output->modifiers = |
- mojo::WTFArray<PaymentDetailsModifierPtr>::From(input.modifiers()); |
- else |
- output->modifiers = mojo::WTFArray<PaymentDetailsModifierPtr>::New(0); |
+ if (input.hasModifiers()) { |
+ for (size_t i = 0; i < input.modifiers().size(); ++i) { |
+ output->modifiers.append( |
+ PaymentDetailsModifier::From(input.modifiers()[i])); |
+ } |
+ } |
if (input.hasError()) |
output->error = input.error(); |
@@ -459,6 +461,19 @@ bool allowedToUsePaymentRequest(const Frame* frame) { |
return false; |
} |
+WTF::Vector<mojom::blink::PaymentMethodDataPtr> ConvertPaymentMethodData( |
+ const Vector<PaymentRequest::MethodData>& blinkMethods) { |
+ WTF::Vector<mojom::blink::PaymentMethodDataPtr> mojoMethods( |
+ blinkMethods.size()); |
+ for (size_t i = 0; i < blinkMethods.size(); ++i) { |
+ mojoMethods[i] = mojom::blink::PaymentMethodData::New(); |
+ mojoMethods[i]->supported_methods = |
+ WTF::Vector<WTF::String>(blinkMethods[i].supportedMethods); |
+ mojoMethods[i]->stringified_data = blinkMethods[i].stringifiedData; |
+ } |
+ return mojoMethods; |
+} |
+ |
} // namespace |
PaymentRequest* PaymentRequest::create( |
@@ -668,8 +683,7 @@ PaymentRequest::PaymentRequest(ScriptState* scriptState, |
mojom::blink::PaymentErrorReason::UNKNOWN))); |
m_paymentProvider->Init( |
m_clientBinding.CreateInterfacePtrAndBind(), |
- mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>::From( |
- validatedMethodData), |
+ ConvertPaymentMethodData(validatedMethodData), |
maybeKeepShippingOptions( |
mojom::blink::PaymentDetails::From(details), |
keepShippingOptions && m_options.requestShipping()), |