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 2171503004: [Merge M-53] Parameterize OnError method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2785
Patch Set: Created 4 years, 5 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 17 matching lines...) Expand all
28 #include <utility> 28 #include <utility>
29 29
30 namespace mojo { 30 namespace mojo {
31 31
32 using blink::mojom::blink::PaymentCurrencyAmount; 32 using blink::mojom::blink::PaymentCurrencyAmount;
33 using blink::mojom::blink::PaymentCurrencyAmountPtr; 33 using blink::mojom::blink::PaymentCurrencyAmountPtr;
34 using blink::mojom::blink::PaymentDetails; 34 using blink::mojom::blink::PaymentDetails;
35 using blink::mojom::blink::PaymentDetailsModifier; 35 using blink::mojom::blink::PaymentDetailsModifier;
36 using blink::mojom::blink::PaymentDetailsModifierPtr; 36 using blink::mojom::blink::PaymentDetailsModifierPtr;
37 using blink::mojom::blink::PaymentDetailsPtr; 37 using blink::mojom::blink::PaymentDetailsPtr;
38 using blink::mojom::blink::PaymentErrorReason;
38 using blink::mojom::blink::PaymentItem; 39 using blink::mojom::blink::PaymentItem;
39 using blink::mojom::blink::PaymentItemPtr; 40 using blink::mojom::blink::PaymentItemPtr;
40 using blink::mojom::blink::PaymentMethodData; 41 using blink::mojom::blink::PaymentMethodData;
41 using blink::mojom::blink::PaymentMethodDataPtr; 42 using blink::mojom::blink::PaymentMethodDataPtr;
42 using blink::mojom::blink::PaymentOptions; 43 using blink::mojom::blink::PaymentOptions;
43 using blink::mojom::blink::PaymentOptionsPtr; 44 using blink::mojom::blink::PaymentOptionsPtr;
44 using blink::mojom::blink::PaymentShippingOption; 45 using blink::mojom::blink::PaymentShippingOption;
45 using blink::mojom::blink::PaymentShippingOptionPtr; 46 using blink::mojom::blink::PaymentShippingOptionPtr;
46 47
47 template <> 48 template <>
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 ScriptPromise PaymentRequest::show(ScriptState* scriptState) 349 ScriptPromise PaymentRequest::show(ScriptState* scriptState)
349 { 350 {
350 if (m_showResolver) 351 if (m_showResolver)
351 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Already called show() once")); 352 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Already called show() once"));
352 353
353 if (!scriptState->domWindow() || !scriptState->domWindow()->frame()) 354 if (!scriptState->domWindow() || !scriptState->domWindow()->frame())
354 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Cannot show the payment request")); 355 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Cannot show the payment request"));
355 356
356 DCHECK(!m_paymentProvider.is_bound()); 357 DCHECK(!m_paymentProvider.is_bound());
357 scriptState->domWindow()->frame()->serviceRegistry()->connectToRemoteService (mojo::GetProxy(&m_paymentProvider)); 358 scriptState->domWindow()->frame()->serviceRegistry()->connectToRemoteService (mojo::GetProxy(&m_paymentProvider));
358 m_paymentProvider.set_connection_error_handler(createBaseCallback(WTF::bind( &PaymentRequest::OnError, wrapWeakPersistent(this)))); 359 m_paymentProvider.set_connection_error_handler(createBaseCallback(WTF::bind( &PaymentRequest::OnError, wrapWeakPersistent(this), mojom::blink::PaymentErrorRe ason::UNKNOWN)));
359 m_paymentProvider->SetClient(m_clientBinding.CreateInterfacePtrAndBind()); 360 m_paymentProvider->SetClient(m_clientBinding.CreateInterfacePtrAndBind());
360 m_paymentProvider->Show(mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>:: From(m_methodData), mojom::blink::PaymentDetails::From(m_details), mojom::blink: :PaymentOptions::From(m_options)); 361 m_paymentProvider->Show(mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>:: From(m_methodData), mojom::blink::PaymentDetails::From(m_details), mojom::blink: :PaymentOptions::From(m_options));
361 362
362 m_showResolver = ScriptPromiseResolver::create(scriptState); 363 m_showResolver = ScriptPromiseResolver::create(scriptState);
363 return m_showResolver->promise(); 364 return m_showResolver->promise();
364 } 365 }
365 366
366 ScriptPromise PaymentRequest::abort(ScriptState* scriptState) 367 ScriptPromise PaymentRequest::abort(ScriptState* scriptState)
367 { 368 {
368 if (m_abortResolver) 369 if (m_abortResolver)
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 } 563 }
563 564
564 m_showResolver->resolve(new PaymentResponse(std::move(response), this)); 565 m_showResolver->resolve(new PaymentResponse(std::move(response), this));
565 566
566 // Do not close the mojo connection here. The merchant website should call 567 // Do not close the mojo connection here. The merchant website should call
567 // PaymentResponse::complete(boolean), which will be forwarded over the mojo 568 // PaymentResponse::complete(boolean), which will be forwarded over the mojo
568 // connection to display a success or failure message to the user. 569 // connection to display a success or failure message to the user.
569 m_showResolver.clear(); 570 m_showResolver.clear();
570 } 571 }
571 572
572 void PaymentRequest::OnError() 573 void PaymentRequest::OnError(mojo::PaymentErrorReason error)
573 { 574 {
574 if (m_completeResolver) 575 bool isError = false;
575 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca ncelled")); 576 ExceptionCode ec = UnknownError;
576 if (m_showResolver) 577 String message;
577 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel led")); 578
578 if (m_abortResolver) 579 switch (error) {
579 m_abortResolver->reject(DOMException::create(SyntaxError, "Request cance lled")); 580 case mojom::blink::PaymentErrorReason::USER_CANCEL:
581 message = "Request cancelled";
582 break;
583 case mojom::blink::PaymentErrorReason::NOT_SUPPORTED:
584 isError = true;
585 ec = NotSupportedError;
586 message = "The payment method is not supported";
587 break;
588 case mojom::blink::PaymentErrorReason::UNKNOWN:
589 isError = true;
590 ec = UnknownError;
591 message = "Request failed";
592 break;
593 }
594
595 DCHECK(!message.isEmpty());
596
597 if (isError) {
598 if (m_completeResolver)
599 m_completeResolver->reject(DOMException::create(ec, message));
600
601 if (m_showResolver)
602 m_showResolver->reject(DOMException::create(ec, message));
603
604 if (m_abortResolver)
605 m_abortResolver->reject(DOMException::create(ec, message));
606 } else {
607 if (m_completeResolver)
608 m_completeResolver->reject(message);
609
610 if (m_showResolver)
611 m_showResolver->reject(message);
612
613 if (m_abortResolver)
614 m_abortResolver->reject(message);
615 }
616
580 clearResolversAndCloseMojoConnection(); 617 clearResolversAndCloseMojoConnection();
581 } 618 }
582 619
583 void PaymentRequest::OnComplete() 620 void PaymentRequest::OnComplete()
584 { 621 {
585 DCHECK(m_completeResolver); 622 DCHECK(m_completeResolver);
586 m_completeResolver->resolve(); 623 m_completeResolver->resolve();
587 clearResolversAndCloseMojoConnection(); 624 clearResolversAndCloseMojoConnection();
588 } 625 }
589 626
(...skipping 17 matching lines...) Expand all
607 { 644 {
608 m_completeResolver.clear(); 645 m_completeResolver.clear();
609 m_showResolver.clear(); 646 m_showResolver.clear();
610 m_abortResolver.clear(); 647 m_abortResolver.clear();
611 if (m_clientBinding.is_bound()) 648 if (m_clientBinding.is_bound())
612 m_clientBinding.Close(); 649 m_clientBinding.Close();
613 m_paymentProvider.reset(); 650 m_paymentProvider.reset();
614 } 651 }
615 652
616 } // namespace blink 653 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698