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

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: [PaymentReqeust] Add error message in PaymentDetails. (in blink side) 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_email = input.requestPayerEmail(); 142 output->request_payer_email = input.requestPayerEmail();
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 } 300 }
296 301
297 if (details.hasShippingOptions()) { 302 if (details.hasShippingOptions()) {
298 validateShippingOptions(details.shippingOptions(), exceptionState); 303 validateShippingOptions(details.shippingOptions(), exceptionState);
299 if (exceptionState.hadException()) 304 if (exceptionState.hadException())
300 return; 305 return;
301 } 306 }
302 307
303 if (details.hasModifiers()) { 308 if (details.hasModifiers()) {
304 validatePaymentDetailsModifiers(details.modifiers(), exceptionState); 309 validatePaymentDetailsModifiers(details.modifiers(), exceptionState);
305 } 310 }
please use gerrit instead 2016/09/23 11:39:00 Please also validate the length of the error messa
306 } 311 }
307 312
308 void validateAndConvertPaymentMethodData(const HeapVector<PaymentMethodData>& pa ymentMethodData, Vector<PaymentRequest::MethodData>* methodData, ExceptionState& exceptionState) 313 void validateAndConvertPaymentMethodData(const HeapVector<PaymentMethodData>& pa ymentMethodData, Vector<PaymentRequest::MethodData>* methodData, ExceptionState& exceptionState)
309 { 314 {
310 if (paymentMethodData.isEmpty()) { 315 if (paymentMethodData.isEmpty()) {
311 exceptionState.throwTypeError("Must specify at least one payment method identifier"); 316 exceptionState.throwTypeError("Must specify at least one payment method identifier");
312 return; 317 return;
313 } 318 }
314 319
315 HashSet<String> uniqueMethods; 320 HashSet<String> uniqueMethods;
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 517
513 if (!scriptState->domWindow()->frame() || !scriptState->domWindow()->frame() ->isMainFrame()) { 518 if (!scriptState->domWindow()->frame() || !scriptState->domWindow()->frame() ->isMainFrame()) {
514 exceptionState.throwSecurityError("Must be in a top-level browsing conte xt"); 519 exceptionState.throwSecurityError("Must be in a top-level browsing conte xt");
515 return; 520 return;
516 } 521 }
517 522
518 validatePaymentDetails(details, exceptionState); 523 validatePaymentDetails(details, exceptionState);
519 if (exceptionState.hadException()) 524 if (exceptionState.hadException())
520 return; 525 return;
521 526
527 if (details.hasError() && !details.error().isEmpty()) {
528 exceptionState.throwTypeError("Error value should be empty");
529 return;
530 }
531
522 if (m_options.requestShipping()) 532 if (m_options.requestShipping())
523 m_shippingOption = getSelectedShippingOption(details); 533 m_shippingOption = getSelectedShippingOption(details);
524 534
525 scriptState->domWindow()->frame()->interfaceProvider()->getInterface(mojo::G etProxy(&m_paymentProvider)); 535 scriptState->domWindow()->frame()->interfaceProvider()->getInterface(mojo::G etProxy(&m_paymentProvider));
526 m_paymentProvider.set_connection_error_handler(convertToBaseCallback(WTF::bi nd(&PaymentRequest::OnError, wrapWeakPersistent(this), mojom::blink::PaymentErro rReason::UNKNOWN))); 536 m_paymentProvider.set_connection_error_handler(convertToBaseCallback(WTF::bi nd(&PaymentRequest::OnError, wrapWeakPersistent(this), mojom::blink::PaymentErro rReason::UNKNOWN)));
527 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)); 537 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));
528 } 538 }
529 539
530 void PaymentRequest::contextDestroyed() 540 void PaymentRequest::contextDestroyed()
531 { 541 {
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 m_completeTimer.stop(); 706 m_completeTimer.stop();
697 m_completeResolver.clear(); 707 m_completeResolver.clear();
698 m_showResolver.clear(); 708 m_showResolver.clear();
699 m_abortResolver.clear(); 709 m_abortResolver.clear();
700 if (m_clientBinding.is_bound()) 710 if (m_clientBinding.is_bound())
701 m_clientBinding.Close(); 711 m_clientBinding.Close();
702 m_paymentProvider.reset(); 712 m_paymentProvider.reset();
703 } 713 }
704 714
705 } // namespace blink 715 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698