| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include "bindings/core/v8/ExceptionState.h" | 9 #include "bindings/core/v8/ExceptionState.h" |
| 10 #include "bindings/core/v8/ScriptPromiseResolver.h" | 10 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| (...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 return ScriptPromise::rejectWithDOMException( | 737 return ScriptPromise::rejectWithDOMException( |
| 738 scriptState, | 738 scriptState, |
| 739 DOMException::create( | 739 DOMException::create( |
| 740 InvalidStateError, | 740 InvalidStateError, |
| 741 "Timed out after 60 seconds, complete() called too late")); | 741 "Timed out after 60 seconds, complete() called too late")); |
| 742 } | 742 } |
| 743 | 743 |
| 744 // User has cancelled the transaction while the website was processing it. | 744 // User has cancelled the transaction while the website was processing it. |
| 745 if (!m_paymentProvider) { | 745 if (!m_paymentProvider) { |
| 746 return ScriptPromise::rejectWithDOMException( | 746 return ScriptPromise::rejectWithDOMException( |
| 747 scriptState, | 747 scriptState, DOMException::create(AbortError, "Request cancelled")); |
| 748 DOMException::create(InvalidStateError, "Request cancelled")); | |
| 749 } | 748 } |
| 750 | 749 |
| 751 m_completeTimer.stop(); | 750 m_completeTimer.stop(); |
| 752 | 751 |
| 753 // The payment provider should respond in PaymentRequest::OnComplete(). | 752 // The payment provider should respond in PaymentRequest::OnComplete(). |
| 754 m_paymentProvider->Complete(payments::mojom::blink::PaymentComplete(result)); | 753 m_paymentProvider->Complete(payments::mojom::blink::PaymentComplete(result)); |
| 755 | 754 |
| 756 m_completeResolver = ScriptPromiseResolver::create(scriptState); | 755 m_completeResolver = ScriptPromiseResolver::create(scriptState); |
| 757 return m_completeResolver->promise(); | 756 return m_completeResolver->promise(); |
| 758 } | 757 } |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 | 953 |
| 955 m_showResolver->resolve(new PaymentResponse(std::move(response), this)); | 954 m_showResolver->resolve(new PaymentResponse(std::move(response), this)); |
| 956 | 955 |
| 957 // Do not close the mojo connection here. The merchant website should call | 956 // Do not close the mojo connection here. The merchant website should call |
| 958 // PaymentResponse::complete(String), which will be forwarded over the mojo | 957 // PaymentResponse::complete(String), which will be forwarded over the mojo |
| 959 // connection to display a success or failure message to the user. | 958 // connection to display a success or failure message to the user. |
| 960 m_showResolver.clear(); | 959 m_showResolver.clear(); |
| 961 } | 960 } |
| 962 | 961 |
| 963 void PaymentRequest::OnError(PaymentErrorReason error) { | 962 void PaymentRequest::OnError(PaymentErrorReason error) { |
| 964 bool isError = false; | |
| 965 ExceptionCode ec = UnknownError; | 963 ExceptionCode ec = UnknownError; |
| 966 String message; | 964 String message; |
| 967 | 965 |
| 968 switch (error) { | 966 switch (error) { |
| 969 case PaymentErrorReason::USER_CANCEL: | 967 case PaymentErrorReason::USER_CANCEL: |
| 968 ec = AbortError; |
| 970 message = "Request cancelled"; | 969 message = "Request cancelled"; |
| 971 break; | 970 break; |
| 972 case PaymentErrorReason::NOT_SUPPORTED: | 971 case PaymentErrorReason::NOT_SUPPORTED: |
| 973 isError = true; | |
| 974 ec = NotSupportedError; | 972 ec = NotSupportedError; |
| 975 message = "The payment method is not supported"; | 973 message = "The payment method is not supported"; |
| 976 break; | 974 break; |
| 977 case PaymentErrorReason::UNKNOWN: | 975 case PaymentErrorReason::UNKNOWN: |
| 978 isError = true; | |
| 979 ec = UnknownError; | 976 ec = UnknownError; |
| 980 message = "Request failed"; | 977 message = "Request failed"; |
| 981 break; | 978 break; |
| 982 } | 979 } |
| 983 | 980 |
| 984 DCHECK(!message.isEmpty()); | 981 DCHECK(!message.isEmpty()); |
| 985 | 982 |
| 986 if (isError) { | 983 if (m_completeResolver) |
| 987 if (m_completeResolver) | 984 m_completeResolver->reject(DOMException::create(ec, message)); |
| 988 m_completeResolver->reject(DOMException::create(ec, message)); | |
| 989 | 985 |
| 990 if (m_showResolver) | 986 if (m_showResolver) |
| 991 m_showResolver->reject(DOMException::create(ec, message)); | 987 m_showResolver->reject(DOMException::create(ec, message)); |
| 992 | 988 |
| 993 if (m_abortResolver) | 989 if (m_abortResolver) |
| 994 m_abortResolver->reject(DOMException::create(ec, message)); | 990 m_abortResolver->reject(DOMException::create(ec, message)); |
| 995 | 991 |
| 996 if (m_canMakePaymentResolver) | 992 if (m_canMakePaymentResolver) |
| 997 m_canMakePaymentResolver->reject(DOMException::create(ec, message)); | 993 m_canMakePaymentResolver->reject(DOMException::create(ec, message)); |
| 998 } else { | |
| 999 if (m_completeResolver) | |
| 1000 m_completeResolver->reject(message); | |
| 1001 | |
| 1002 if (m_showResolver) | |
| 1003 m_showResolver->reject(message); | |
| 1004 | |
| 1005 if (m_abortResolver) | |
| 1006 m_abortResolver->reject(message); | |
| 1007 | |
| 1008 if (m_canMakePaymentResolver) | |
| 1009 m_canMakePaymentResolver->reject(message); | |
| 1010 } | |
| 1011 | 994 |
| 1012 clearResolversAndCloseMojoConnection(); | 995 clearResolversAndCloseMojoConnection(); |
| 1013 } | 996 } |
| 1014 | 997 |
| 1015 void PaymentRequest::OnComplete() { | 998 void PaymentRequest::OnComplete() { |
| 1016 DCHECK(m_completeResolver); | 999 DCHECK(m_completeResolver); |
| 1017 m_completeResolver->resolve(); | 1000 m_completeResolver->resolve(); |
| 1018 clearResolversAndCloseMojoConnection(); | 1001 clearResolversAndCloseMojoConnection(); |
| 1019 } | 1002 } |
| 1020 | 1003 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1062 m_completeResolver.clear(); | 1045 m_completeResolver.clear(); |
| 1063 m_showResolver.clear(); | 1046 m_showResolver.clear(); |
| 1064 m_abortResolver.clear(); | 1047 m_abortResolver.clear(); |
| 1065 m_canMakePaymentResolver.clear(); | 1048 m_canMakePaymentResolver.clear(); |
| 1066 if (m_clientBinding.is_bound()) | 1049 if (m_clientBinding.is_bound()) |
| 1067 m_clientBinding.Close(); | 1050 m_clientBinding.Close(); |
| 1068 m_paymentProvider.reset(); | 1051 m_paymentProvider.reset(); |
| 1069 } | 1052 } |
| 1070 | 1053 |
| 1071 } // namespace blink | 1054 } // namespace blink |
| OLD | NEW |