Chromium Code Reviews| 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 fb01a7ba7708bb871637c854cd8f1de218a5b5df..6bd6c8fe341441eb24aa6fdf23114a5b37365183 100644 |
| --- a/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp |
| +++ b/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp |
| @@ -94,12 +94,13 @@ struct TypeConverter<PaymentDetailsModifierPtr, blink::PaymentDetailsModifier> { |
| else |
| output->total = PaymentItem::New(); |
| - if (input.hasAdditionalDisplayItems()) |
| - output->additional_display_items = |
| - mojo::WTFArray<PaymentItemPtr>::From(input.additionalDisplayItems()); |
|
please use gerrit instead
2016/10/12 23:51:55
Is it not possible to continue using WTFArray::Fro
Kevin Bailey
2016/10/13 18:30:42
The destination field has changed from mojo::WTFAr
please use gerrit instead
2016/10/13 20:24:00
Please see if there's a shorter way to write this,
|
| - 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( |
| + TypeConverter<PaymentItemPtr, blink::PaymentItem>::Convert( |
| + input.additionalDisplayItems()[i])); |
|
please use gerrit instead
2016/10/12 23:51:55
It's shorter to call "PaymentItem::From()" instead
Kevin Bailey
2016/10/13 18:30:42
Ok, changed all 4 occurrences.
|
| + } |
| + } |
| return output; |
| } |
| }; |
| @@ -110,24 +111,31 @@ 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( |
| + TypeConverter<PaymentItemPtr, blink::PaymentItem>::Convert( |
| + 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( |
| + TypeConverter<PaymentShippingOptionPtr, |
| + blink::PaymentShippingOption>:: |
| + Convert(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( |
| + TypeConverter< |
| + PaymentDetailsModifierPtr, |
| + blink::PaymentDetailsModifier>::Convert(input.modifiers()[i])); |
| + } |
| + } |
| if (input.hasError()) |
| output->error = input.error(); |
| @@ -169,6 +177,9 @@ struct TypeConverter<WTFArray<PaymentMethodDataPtr>, |
| } // namespace mojo |
| namespace blink { |
| + |
| +bool validatePaymentDetails(const mojo::PaymentDetailsPtr&); |
|
please use gerrit instead
2016/10/12 23:51:55
Pretty sure that this declaration is no-op, becaus
Kevin Bailey
2016/10/13 18:30:42
Was left-over. Gone.
|
| + |
| namespace { |
| // If the website does not call complete() 60 seconds after show() has been |
| @@ -588,8 +599,6 @@ PaymentRequest::PaymentRequest(ScriptState* scriptState, |
| "Must be in a top-level browsing context"); |
| return; |
| } |
| - |
| - validatePaymentDetails(details, exceptionState); |
| if (exceptionState.hadException()) |
| return; |
| @@ -608,12 +617,19 @@ PaymentRequest::PaymentRequest(ScriptState* scriptState, |
| m_paymentProvider.set_connection_error_handler(convertToBaseCallback( |
| WTF::bind(&PaymentRequest::OnError, wrapWeakPersistent(this), |
| mojom::blink::PaymentErrorReason::UNKNOWN))); |
| - m_paymentProvider->Init( |
| - m_clientBinding.CreateInterfacePtrAndBind(), |
| - mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>::From( |
| - validatedMethodData), |
| - mojom::blink::PaymentDetails::From(details), |
| - mojom::blink::PaymentOptions::From(m_options)); |
| + |
| + WTF::Vector<mojom::blink::PaymentMethodDataPtr> methods( |
| + validatedMethodData.size()); |
| + for (size_t i = 0; i < validatedMethodData.size(); ++i) { |
| + methods[i] = mojom::blink::PaymentMethodData::New(); |
| + methods[i]->supported_methods = |
| + WTF::Vector<WTF::String>(validatedMethodData[i].supportedMethods); |
| + methods[i]->stringified_data = validatedMethodData[i].stringifiedData; |
| + } |
| + m_paymentProvider->Init(m_clientBinding.CreateInterfacePtrAndBind(), |
| + std::move(methods), |
| + mojom::blink::PaymentDetails::From(details), |
| + mojom::blink::PaymentOptions::From(m_options)); |
| } |
| void PaymentRequest::contextDestroyed() { |