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

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

Issue 1937783002: Provide shipping in PaymentRequest response (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 4 years, 7 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 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 { 302 {
303 cleanUp(); 303 cleanUp();
304 } 304 }
305 305
306 void PaymentRequest::OnShippingAddressChange(mojom::blink::ShippingAddressPtr ad dress) 306 void PaymentRequest::OnShippingAddressChange(mojom::blink::ShippingAddressPtr ad dress)
307 { 307 {
308 DCHECK(m_showResolver); 308 DCHECK(m_showResolver);
309 DCHECK(!m_completeResolver); 309 DCHECK(!m_completeResolver);
310 310
311 String errorMessage; 311 String errorMessage;
312 if (!PaymentsValidators::isValidRegionCodeFormat(address->region_code, &erro rMessage) 312 if (!PaymentsValidators::isValidShippingAddress(address, &errorMessage)) {
313 || !PaymentsValidators::isValidLanguageCodeFormat(address->language_code , &errorMessage)
314 || !PaymentsValidators::isValidScriptCodeFormat(address->script_code, &e rrorMessage)) {
315 m_showResolver->reject(DOMException::create(SyntaxError, errorMessage)); 313 m_showResolver->reject(DOMException::create(SyntaxError, errorMessage));
316 cleanUp(); 314 cleanUp();
317 return; 315 return;
318 } 316 }
319 317
320 if (address->language_code.isEmpty() && !address->script_code.isEmpty()) {
321 m_showResolver->reject(DOMException::create(SyntaxError, "If language co de is empty, then script code should also be empty"));
322 cleanUp();
323 return;
324 }
325
326 m_shippingAddress = new ShippingAddress(std::move(address)); 318 m_shippingAddress = new ShippingAddress(std::move(address));
327 Event* event = Event::create(EventTypeNames::shippingaddresschange); 319 Event* event = Event::create(EventTypeNames::shippingaddresschange);
328 event->setTarget(this); 320 event->setTarget(this);
329 getExecutionContext()->getEventQueue()->enqueueEvent(event); 321 getExecutionContext()->getEventQueue()->enqueueEvent(event);
330 } 322 }
331 323
332 void PaymentRequest::OnShippingOptionChange(const String& shippingOptionId) 324 void PaymentRequest::OnShippingOptionChange(const String& shippingOptionId)
333 { 325 {
334 DCHECK(m_showResolver); 326 DCHECK(m_showResolver);
335 DCHECK(!m_completeResolver); 327 DCHECK(!m_completeResolver);
336 m_shippingOption = shippingOptionId; 328 m_shippingOption = shippingOptionId;
337 Event* event = Event::create(EventTypeNames::shippingoptionchange); 329 Event* event = Event::create(EventTypeNames::shippingoptionchange);
338 event->setTarget(this); 330 event->setTarget(this);
339 getExecutionContext()->getEventQueue()->enqueueEvent(event); 331 getExecutionContext()->getEventQueue()->enqueueEvent(event);
340 } 332 }
341 333
342 void PaymentRequest::OnPaymentResponse(mojom::blink::PaymentResponsePtr response ) 334 void PaymentRequest::OnPaymentResponse(mojom::blink::PaymentResponsePtr response )
343 { 335 {
344 DCHECK(m_showResolver); 336 DCHECK(m_showResolver);
345 DCHECK(!m_completeResolver); 337 DCHECK(!m_completeResolver);
338
339 if (response->shipping_address) {
340 String errorMessage;
341 if (!PaymentsValidators::isValidShippingAddress(response->shipping_addre ss, &errorMessage)) {
342 m_showResolver->reject(DOMException::create(SyntaxError, errorMessag e));
343 cleanUp();
344 return;
345 }
346
347 m_shippingAddress = new ShippingAddress(std::move(response->shipping_add ress));
348 m_shippingOption = response->shipping_option_id;
349 }
350
346 m_showResolver->resolve(new PaymentResponse(std::move(response), this)); 351 m_showResolver->resolve(new PaymentResponse(std::move(response), this));
347 } 352 }
348 353
349 void PaymentRequest::OnError() 354 void PaymentRequest::OnError()
350 { 355 {
351 if (m_completeResolver) 356 if (m_completeResolver)
352 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca ncelled")); 357 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca ncelled"));
353 if (m_showResolver) 358 if (m_showResolver)
354 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel led")); 359 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel led"));
355 cleanUp(); 360 cleanUp();
356 } 361 }
357 362
358 void PaymentRequest::OnComplete() 363 void PaymentRequest::OnComplete()
359 { 364 {
360 DCHECK(m_completeResolver); 365 DCHECK(m_completeResolver);
361 m_completeResolver->resolve(); 366 m_completeResolver->resolve();
362 cleanUp(); 367 cleanUp();
363 } 368 }
364 369
365 void PaymentRequest::cleanUp() 370 void PaymentRequest::cleanUp()
366 { 371 {
367 m_completeResolver.clear(); 372 m_completeResolver.clear();
368 m_showResolver.clear(); 373 m_showResolver.clear();
369 if (m_clientBinding.is_bound()) 374 if (m_clientBinding.is_bound())
370 m_clientBinding.Close(); 375 m_clientBinding.Close();
371 m_paymentProvider.reset(); 376 m_paymentProvider.reset();
372 } 377 }
373 378
374 } // namespace blink 379 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698