OLD | NEW |
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/ScriptPromiseResolver.h" | 8 #include "bindings/core/v8/ScriptPromiseResolver.h" |
9 #include "bindings/core/v8/ScriptState.h" | 9 #include "bindings/core/v8/ScriptState.h" |
10 #include "bindings/core/v8/V8StringResource.h" | 10 #include "bindings/core/v8/V8StringResource.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "mojo/public/cpp/bindings/wtf_array.h" | 31 #include "mojo/public/cpp/bindings/wtf_array.h" |
32 #include "platform/RuntimeEnabledFeatures.h" | 32 #include "platform/RuntimeEnabledFeatures.h" |
33 #include "platform/mojo/MojoHelper.h" | 33 #include "platform/mojo/MojoHelper.h" |
34 #include "public/platform/InterfaceProvider.h" | 34 #include "public/platform/InterfaceProvider.h" |
35 #include "public/platform/Platform.h" | 35 #include "public/platform/Platform.h" |
36 #include "public/platform/WebTraceLocation.h" | 36 #include "public/platform/WebTraceLocation.h" |
37 #include "wtf/HashSet.h" | 37 #include "wtf/HashSet.h" |
38 #include <stddef.h> | 38 #include <stddef.h> |
39 #include <utility> | 39 #include <utility> |
40 | 40 |
41 using payments::mojom::blink::ActivePaymentQueryResult; | 41 using payments::mojom::blink::CanMakePaymentQueryResult; |
42 using payments::mojom::blink::PaymentAddressPtr; | 42 using payments::mojom::blink::PaymentAddressPtr; |
43 using payments::mojom::blink::PaymentCurrencyAmount; | 43 using payments::mojom::blink::PaymentCurrencyAmount; |
44 using payments::mojom::blink::PaymentCurrencyAmountPtr; | 44 using payments::mojom::blink::PaymentCurrencyAmountPtr; |
45 using payments::mojom::blink::PaymentDetailsModifierPtr; | 45 using payments::mojom::blink::PaymentDetailsModifierPtr; |
46 using payments::mojom::blink::PaymentDetailsPtr; | 46 using payments::mojom::blink::PaymentDetailsPtr; |
47 using payments::mojom::blink::PaymentErrorReason; | 47 using payments::mojom::blink::PaymentErrorReason; |
48 using payments::mojom::blink::PaymentItemPtr; | 48 using payments::mojom::blink::PaymentItemPtr; |
49 using payments::mojom::blink::PaymentMethodDataPtr; | 49 using payments::mojom::blink::PaymentMethodDataPtr; |
50 using payments::mojom::blink::PaymentOptionsPtr; | 50 using payments::mojom::blink::PaymentOptionsPtr; |
51 using payments::mojom::blink::PaymentResponsePtr; | 51 using payments::mojom::blink::PaymentResponsePtr; |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 return ScriptPromise::rejectWithDOMException( | 545 return ScriptPromise::rejectWithDOMException( |
546 scriptState, | 546 scriptState, |
547 DOMException::create(InvalidStateError, | 547 DOMException::create(InvalidStateError, |
548 "Never called show(), so nothing to abort")); | 548 "Never called show(), so nothing to abort")); |
549 | 549 |
550 m_abortResolver = ScriptPromiseResolver::create(scriptState); | 550 m_abortResolver = ScriptPromiseResolver::create(scriptState); |
551 m_paymentProvider->Abort(); | 551 m_paymentProvider->Abort(); |
552 return m_abortResolver->promise(); | 552 return m_abortResolver->promise(); |
553 } | 553 } |
554 | 554 |
555 ScriptPromise PaymentRequest::canMakeActivePayment(ScriptState* scriptState) { | 555 ScriptPromise PaymentRequest::canMakePayment(ScriptState* scriptState) { |
556 if (!m_paymentProvider.is_bound() || m_canMakeActivePaymentResolver || | 556 if (!m_paymentProvider.is_bound() || m_canMakePaymentResolver || |
557 !scriptState->contextIsValid()) { | 557 !scriptState->contextIsValid()) { |
558 return ScriptPromise::rejectWithDOMException( | 558 return ScriptPromise::rejectWithDOMException( |
559 scriptState, DOMException::create(InvalidStateError, | 559 scriptState, DOMException::create(InvalidStateError, |
560 "Cannot query payment request")); | 560 "Cannot query payment request")); |
561 } | 561 } |
562 | 562 |
563 m_paymentProvider->CanMakeActivePayment(); | 563 m_paymentProvider->CanMakePayment(); |
564 | 564 |
565 m_canMakeActivePaymentResolver = ScriptPromiseResolver::create(scriptState); | 565 m_canMakePaymentResolver = ScriptPromiseResolver::create(scriptState); |
566 return m_canMakeActivePaymentResolver->promise(); | 566 return m_canMakePaymentResolver->promise(); |
567 } | 567 } |
568 | 568 |
569 bool PaymentRequest::hasPendingActivity() const { | 569 bool PaymentRequest::hasPendingActivity() const { |
570 return m_showResolver || m_completeResolver; | 570 return m_showResolver || m_completeResolver; |
571 } | 571 } |
572 | 572 |
573 const AtomicString& PaymentRequest::interfaceName() const { | 573 const AtomicString& PaymentRequest::interfaceName() const { |
574 return EventTargetNames::PaymentRequest; | 574 return EventTargetNames::PaymentRequest; |
575 } | 575 } |
576 | 576 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 m_completeResolver->reject(DOMException::create(AbortError, error)); | 646 m_completeResolver->reject(DOMException::create(AbortError, error)); |
647 clearResolversAndCloseMojoConnection(); | 647 clearResolversAndCloseMojoConnection(); |
648 } | 648 } |
649 | 649 |
650 DEFINE_TRACE(PaymentRequest) { | 650 DEFINE_TRACE(PaymentRequest) { |
651 visitor->trace(m_options); | 651 visitor->trace(m_options); |
652 visitor->trace(m_shippingAddress); | 652 visitor->trace(m_shippingAddress); |
653 visitor->trace(m_showResolver); | 653 visitor->trace(m_showResolver); |
654 visitor->trace(m_completeResolver); | 654 visitor->trace(m_completeResolver); |
655 visitor->trace(m_abortResolver); | 655 visitor->trace(m_abortResolver); |
656 visitor->trace(m_canMakeActivePaymentResolver); | 656 visitor->trace(m_canMakePaymentResolver); |
657 EventTargetWithInlineData::trace(visitor); | 657 EventTargetWithInlineData::trace(visitor); |
658 ContextLifecycleObserver::trace(visitor); | 658 ContextLifecycleObserver::trace(visitor); |
659 } | 659 } |
660 | 660 |
661 void PaymentRequest::onCompleteTimeoutForTesting() { | 661 void PaymentRequest::onCompleteTimeoutForTesting() { |
662 m_completeTimer.stop(); | 662 m_completeTimer.stop(); |
663 onCompleteTimeout(0); | 663 onCompleteTimeout(0); |
664 } | 664 } |
665 | 665 |
666 PaymentRequest::PaymentRequest(Document& document, | 666 PaymentRequest::PaymentRequest(Document& document, |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
840 if (isError) { | 840 if (isError) { |
841 if (m_completeResolver) | 841 if (m_completeResolver) |
842 m_completeResolver->reject(DOMException::create(ec, message)); | 842 m_completeResolver->reject(DOMException::create(ec, message)); |
843 | 843 |
844 if (m_showResolver) | 844 if (m_showResolver) |
845 m_showResolver->reject(DOMException::create(ec, message)); | 845 m_showResolver->reject(DOMException::create(ec, message)); |
846 | 846 |
847 if (m_abortResolver) | 847 if (m_abortResolver) |
848 m_abortResolver->reject(DOMException::create(ec, message)); | 848 m_abortResolver->reject(DOMException::create(ec, message)); |
849 | 849 |
850 if (m_canMakeActivePaymentResolver) | 850 if (m_canMakePaymentResolver) |
851 m_canMakeActivePaymentResolver->reject(DOMException::create(ec, message)); | 851 m_canMakePaymentResolver->reject(DOMException::create(ec, message)); |
852 } else { | 852 } else { |
853 if (m_completeResolver) | 853 if (m_completeResolver) |
854 m_completeResolver->reject(message); | 854 m_completeResolver->reject(message); |
855 | 855 |
856 if (m_showResolver) | 856 if (m_showResolver) |
857 m_showResolver->reject(message); | 857 m_showResolver->reject(message); |
858 | 858 |
859 if (m_abortResolver) | 859 if (m_abortResolver) |
860 m_abortResolver->reject(message); | 860 m_abortResolver->reject(message); |
861 | 861 |
862 if (m_canMakeActivePaymentResolver) | 862 if (m_canMakePaymentResolver) |
863 m_canMakeActivePaymentResolver->reject(message); | 863 m_canMakePaymentResolver->reject(message); |
864 } | 864 } |
865 | 865 |
866 clearResolversAndCloseMojoConnection(); | 866 clearResolversAndCloseMojoConnection(); |
867 } | 867 } |
868 | 868 |
869 void PaymentRequest::OnComplete() { | 869 void PaymentRequest::OnComplete() { |
870 DCHECK(m_completeResolver); | 870 DCHECK(m_completeResolver); |
871 m_completeResolver->resolve(); | 871 m_completeResolver->resolve(); |
872 clearResolversAndCloseMojoConnection(); | 872 clearResolversAndCloseMojoConnection(); |
873 } | 873 } |
874 | 874 |
875 void PaymentRequest::OnAbort(bool abortedSuccessfully) { | 875 void PaymentRequest::OnAbort(bool abortedSuccessfully) { |
876 DCHECK(m_abortResolver); | 876 DCHECK(m_abortResolver); |
877 DCHECK(m_showResolver); | 877 DCHECK(m_showResolver); |
878 | 878 |
879 if (!abortedSuccessfully) { | 879 if (!abortedSuccessfully) { |
880 m_abortResolver->reject(DOMException::create(InvalidStateError)); | 880 m_abortResolver->reject(DOMException::create(InvalidStateError)); |
881 m_abortResolver.clear(); | 881 m_abortResolver.clear(); |
882 return; | 882 return; |
883 } | 883 } |
884 | 884 |
885 m_showResolver->reject(DOMException::create(AbortError)); | 885 m_showResolver->reject(DOMException::create(AbortError)); |
886 m_abortResolver->resolve(); | 886 m_abortResolver->resolve(); |
887 clearResolversAndCloseMojoConnection(); | 887 clearResolversAndCloseMojoConnection(); |
888 } | 888 } |
889 | 889 |
890 void PaymentRequest::OnCanMakeActivePayment(ActivePaymentQueryResult result) { | 890 void PaymentRequest::OnCanMakePayment(CanMakePaymentQueryResult result) { |
891 DCHECK(m_canMakeActivePaymentResolver); | 891 DCHECK(m_canMakePaymentResolver); |
892 | 892 |
893 switch (result) { | 893 switch (result) { |
894 case ActivePaymentQueryResult::CAN_MAKE_ACTIVE_PAYMENT: | 894 case CanMakePaymentQueryResult::CAN_MAKE_PAYMENT: |
895 m_canMakeActivePaymentResolver->resolve(true); | 895 m_canMakePaymentResolver->resolve(true); |
896 break; | 896 break; |
897 case ActivePaymentQueryResult::CANNOT_MAKE_ACTIVE_PAYMENT: | 897 case CanMakePaymentQueryResult::CANNOT_MAKE_PAYMENT: |
898 m_canMakeActivePaymentResolver->resolve(false); | 898 m_canMakePaymentResolver->resolve(false); |
899 break; | 899 break; |
900 case ActivePaymentQueryResult::QUERY_QUOTA_EXCEEDED: | 900 case CanMakePaymentQueryResult::QUERY_QUOTA_EXCEEDED: |
901 m_canMakeActivePaymentResolver->reject( | 901 m_canMakePaymentResolver->reject( |
902 DOMException::create(QuotaExceededError, "Query quota exceeded")); | 902 DOMException::create(QuotaExceededError, "Query quota exceeded")); |
903 break; | 903 break; |
904 } | 904 } |
905 | 905 |
906 m_canMakeActivePaymentResolver.clear(); | 906 m_canMakePaymentResolver.clear(); |
907 } | 907 } |
908 | 908 |
909 void PaymentRequest::onCompleteTimeout(TimerBase*) { | 909 void PaymentRequest::onCompleteTimeout(TimerBase*) { |
910 m_paymentProvider->Complete(payments::mojom::blink::PaymentComplete(Fail)); | 910 m_paymentProvider->Complete(payments::mojom::blink::PaymentComplete(Fail)); |
911 clearResolversAndCloseMojoConnection(); | 911 clearResolversAndCloseMojoConnection(); |
912 } | 912 } |
913 | 913 |
914 void PaymentRequest::clearResolversAndCloseMojoConnection() { | 914 void PaymentRequest::clearResolversAndCloseMojoConnection() { |
915 m_completeTimer.stop(); | 915 m_completeTimer.stop(); |
916 m_completeResolver.clear(); | 916 m_completeResolver.clear(); |
917 m_showResolver.clear(); | 917 m_showResolver.clear(); |
918 m_abortResolver.clear(); | 918 m_abortResolver.clear(); |
919 m_canMakeActivePaymentResolver.clear(); | 919 m_canMakePaymentResolver.clear(); |
920 if (m_clientBinding.is_bound()) | 920 if (m_clientBinding.is_bound()) |
921 m_clientBinding.Close(); | 921 m_clientBinding.Close(); |
922 m_paymentProvider.reset(); | 922 m_paymentProvider.reset(); |
923 } | 923 } |
924 | 924 |
925 } // namespace blink | 925 } // namespace blink |
OLD | NEW |