Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(285)

Side by Side Diff: third_party/WebKit/Source/modules/payments/PaymentRequest.cpp

Issue 2355463002: [PaymentReqeust] Add error message in PaymentDetails. (in blink side) (Closed)
Patch Set: rebase from origin Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "modules/payments/PaymentRequest.h" 5 #include "modules/payments/PaymentRequest.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/JSONValuesForV8.h" 8 #include "bindings/core/v8/JSONValuesForV8.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 if (input.hasShippingOptions()) 118 if (input.hasShippingOptions())
119 output->shipping_options = mojo::WTFArray<PaymentShippingOptionPtr>: :From(input.shippingOptions()); 119 output->shipping_options = mojo::WTFArray<PaymentShippingOptionPtr>: :From(input.shippingOptions());
120 else 120 else
121 output->shipping_options = mojo::WTFArray<PaymentShippingOptionPtr>: :New(0); 121 output->shipping_options = mojo::WTFArray<PaymentShippingOptionPtr>: :New(0);
122 122
123 if (input.hasModifiers()) 123 if (input.hasModifiers())
124 output->modifiers = mojo::WTFArray<PaymentDetailsModifierPtr>::From( input.modifiers()); 124 output->modifiers = mojo::WTFArray<PaymentDetailsModifierPtr>::From( input.modifiers());
125 else 125 else
126 output->modifiers = mojo::WTFArray<PaymentDetailsModifierPtr>::New(0 ); 126 output->modifiers = mojo::WTFArray<PaymentDetailsModifierPtr>::New(0 );
127 127
128 if (input.hasError())
129 output->error = input.error();
130 else
131 output->error = WTF::emptyString();
132
128 return output; 133 return output;
129 } 134 }
130 }; 135 };
131 136
132 template <> 137 template <>
133 struct TypeConverter<PaymentOptionsPtr, blink::PaymentOptions> { 138 struct TypeConverter<PaymentOptionsPtr, blink::PaymentOptions> {
134 static PaymentOptionsPtr Convert(const blink::PaymentOptions& input) 139 static PaymentOptionsPtr Convert(const blink::PaymentOptions& input)
135 { 140 {
136 PaymentOptionsPtr output = PaymentOptions::New(); 141 PaymentOptionsPtr output = PaymentOptions::New();
137 output->request_payer_name = input.requestPayerName(); 142 output->request_payer_name = input.requestPayerName();
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 302
298 if (details.hasShippingOptions()) { 303 if (details.hasShippingOptions()) {
299 validateShippingOptions(details.shippingOptions(), exceptionState); 304 validateShippingOptions(details.shippingOptions(), exceptionState);
300 if (exceptionState.hadException()) 305 if (exceptionState.hadException())
301 return; 306 return;
302 } 307 }
303 308
304 if (details.hasModifiers()) { 309 if (details.hasModifiers()) {
305 validatePaymentDetailsModifiers(details.modifiers(), exceptionState); 310 validatePaymentDetailsModifiers(details.modifiers(), exceptionState);
306 } 311 }
312
313 String errorMessage;
314 if (!PaymentsValidators::isValidErrorMsgFormat(details.error(), &errorMessag e)) {
315 exceptionState.throwTypeError(errorMessage);
316 return;
317 }
307 } 318 }
308 319
309 void validateAndConvertPaymentMethodData(const HeapVector<PaymentMethodData>& pa ymentMethodData, Vector<PaymentRequest::MethodData>* methodData, ExceptionState& exceptionState) 320 void validateAndConvertPaymentMethodData(const HeapVector<PaymentMethodData>& pa ymentMethodData, Vector<PaymentRequest::MethodData>* methodData, ExceptionState& exceptionState)
310 { 321 {
311 if (paymentMethodData.isEmpty()) { 322 if (paymentMethodData.isEmpty()) {
312 exceptionState.throwTypeError("Must specify at least one payment method identifier"); 323 exceptionState.throwTypeError("Must specify at least one payment method identifier");
313 return; 324 return;
314 } 325 }
315 326
316 HashSet<String> uniqueMethods; 327 HashSet<String> uniqueMethods;
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 538
528 if (!scriptState->domWindow()->frame() || !scriptState->domWindow()->frame() ->isMainFrame()) { 539 if (!scriptState->domWindow()->frame() || !scriptState->domWindow()->frame() ->isMainFrame()) {
529 exceptionState.throwSecurityError("Must be in a top-level browsing conte xt"); 540 exceptionState.throwSecurityError("Must be in a top-level browsing conte xt");
530 return; 541 return;
531 } 542 }
532 543
533 validatePaymentDetails(details, exceptionState); 544 validatePaymentDetails(details, exceptionState);
534 if (exceptionState.hadException()) 545 if (exceptionState.hadException())
535 return; 546 return;
536 547
548 if (details.hasError() && !details.error().isEmpty()) {
549 exceptionState.throwTypeError("Error value should be empty");
550 return;
551 }
552
537 if (m_options.requestShipping()) { 553 if (m_options.requestShipping()) {
538 m_shippingOption = getSelectedShippingOption(details); 554 m_shippingOption = getSelectedShippingOption(details);
539 m_shippingType = getValidShippingType(m_options.shippingType()); 555 m_shippingType = getValidShippingType(m_options.shippingType());
540 } 556 }
541 557
542 scriptState->domWindow()->frame()->interfaceProvider()->getInterface(mojo::G etProxy(&m_paymentProvider)); 558 scriptState->domWindow()->frame()->interfaceProvider()->getInterface(mojo::G etProxy(&m_paymentProvider));
543 m_paymentProvider.set_connection_error_handler(convertToBaseCallback(WTF::bi nd(&PaymentRequest::OnError, wrapWeakPersistent(this), mojom::blink::PaymentErro rReason::UNKNOWN))); 559 m_paymentProvider.set_connection_error_handler(convertToBaseCallback(WTF::bi nd(&PaymentRequest::OnError, wrapWeakPersistent(this), mojom::blink::PaymentErro rReason::UNKNOWN)));
544 m_paymentProvider->Init(m_clientBinding.CreateInterfacePtrAndBind(), mojo::W TFArray<mojom::blink::PaymentMethodDataPtr>::From(validatedMethodData), mojom::b link::PaymentDetails::From(details), mojom::blink::PaymentOptions::From(m_option s)); 560 m_paymentProvider->Init(m_clientBinding.CreateInterfacePtrAndBind(), mojo::W TFArray<mojom::blink::PaymentMethodDataPtr>::From(validatedMethodData), mojom::b link::PaymentDetails::From(details), mojom::blink::PaymentOptions::From(m_option s));
545 } 561 }
546 562
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 m_completeTimer.stop(); 731 m_completeTimer.stop();
716 m_completeResolver.clear(); 732 m_completeResolver.clear();
717 m_showResolver.clear(); 733 m_showResolver.clear();
718 m_abortResolver.clear(); 734 m_abortResolver.clear();
719 if (m_clientBinding.is_bound()) 735 if (m_clientBinding.is_bound())
720 m_clientBinding.Close(); 736 m_clientBinding.Close();
721 m_paymentProvider.reset(); 737 m_paymentProvider.reset();
722 } 738 }
723 739
724 } // namespace blink 740 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698