| 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 21 matching lines...) Expand all Loading... |
| 32 #include "modules/payments/PaymentAddress.h" | 32 #include "modules/payments/PaymentAddress.h" |
| 33 #include "modules/payments/PaymentDetailsInit.h" | 33 #include "modules/payments/PaymentDetailsInit.h" |
| 34 #include "modules/payments/PaymentDetailsUpdate.h" | 34 #include "modules/payments/PaymentDetailsUpdate.h" |
| 35 #include "modules/payments/PaymentItem.h" | 35 #include "modules/payments/PaymentItem.h" |
| 36 #include "modules/payments/PaymentRequestUpdateEvent.h" | 36 #include "modules/payments/PaymentRequestUpdateEvent.h" |
| 37 #include "modules/payments/PaymentResponse.h" | 37 #include "modules/payments/PaymentResponse.h" |
| 38 #include "modules/payments/PaymentShippingOption.h" | 38 #include "modules/payments/PaymentShippingOption.h" |
| 39 #include "modules/payments/PaymentsValidators.h" | 39 #include "modules/payments/PaymentsValidators.h" |
| 40 #include "mojo/public/cpp/bindings/interface_request.h" | 40 #include "mojo/public/cpp/bindings/interface_request.h" |
| 41 #include "platform/RuntimeEnabledFeatures.h" | 41 #include "platform/RuntimeEnabledFeatures.h" |
| 42 #include "platform/UUID.h" |
| 42 #include "platform/mojo/MojoHelper.h" | 43 #include "platform/mojo/MojoHelper.h" |
| 43 #include "platform/wtf/HashSet.h" | 44 #include "platform/wtf/HashSet.h" |
| 44 #include "public/platform/InterfaceProvider.h" | 45 #include "public/platform/InterfaceProvider.h" |
| 45 #include "public/platform/Platform.h" | 46 #include "public/platform/Platform.h" |
| 46 #include "public/platform/WebTraceLocation.h" | 47 #include "public/platform/WebTraceLocation.h" |
| 47 | 48 |
| 48 namespace { | 49 namespace { |
| 49 | 50 |
| 50 using ::payments::mojom::blink::CanMakePaymentQueryResult; | 51 using ::payments::mojom::blink::CanMakePaymentQueryResult; |
| 51 using ::payments::mojom::blink::PaymentAddressPtr; | 52 using ::payments::mojom::blink::PaymentAddressPtr; |
| (...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 shipping_option_output, | 530 shipping_option_output, |
| 530 execution_context, exception_state); | 531 execution_context, exception_state); |
| 531 if (exception_state.HadException()) | 532 if (exception_state.HadException()) |
| 532 return; | 533 return; |
| 533 | 534 |
| 534 if (!input.hasTotal()) { | 535 if (!input.hasTotal()) { |
| 535 exception_state.ThrowTypeError("Must specify total"); | 536 exception_state.ThrowTypeError("Must specify total"); |
| 536 return; | 537 return; |
| 537 } | 538 } |
| 538 | 539 |
| 540 if (input.hasId()) |
| 541 output->id = input.id(); |
| 542 else |
| 543 output->id = CreateCanonicalUUIDString(); |
| 544 |
| 539 ValidateAndConvertTotal(input.total(), output->total, exception_state); | 545 ValidateAndConvertTotal(input.total(), output->total, exception_state); |
| 540 } | 546 } |
| 541 | 547 |
| 542 void ValidateAndConvertPaymentDetailsUpdate(const PaymentDetailsUpdate& input, | 548 void ValidateAndConvertPaymentDetailsUpdate(const PaymentDetailsUpdate& input, |
| 543 bool request_shipping, | 549 bool request_shipping, |
| 544 PaymentDetailsPtr& output, | 550 PaymentDetailsPtr& output, |
| 545 String& shipping_option_output, | 551 String& shipping_option_output, |
| 546 ExecutionContext& execution_context, | 552 ExecutionContext& execution_context, |
| 547 ExceptionState& exception_state) { | 553 ExceptionState& exception_state) { |
| 548 ValidateAndConvertPaymentDetailsBase(input, request_shipping, output, | 554 ValidateAndConvertPaymentDetailsBase(input, request_shipping, output, |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 873 } | 879 } |
| 874 | 880 |
| 875 PaymentDetailsPtr validated_details = | 881 PaymentDetailsPtr validated_details = |
| 876 payments::mojom::blink::PaymentDetails::New(); | 882 payments::mojom::blink::PaymentDetails::New(); |
| 877 ValidateAndConvertPaymentDetailsInit(details, options_.requestShipping(), | 883 ValidateAndConvertPaymentDetailsInit(details, options_.requestShipping(), |
| 878 validated_details, shipping_option_, | 884 validated_details, shipping_option_, |
| 879 *GetExecutionContext(), exception_state); | 885 *GetExecutionContext(), exception_state); |
| 880 if (exception_state.HadException()) | 886 if (exception_state.HadException()) |
| 881 return; | 887 return; |
| 882 | 888 |
| 889 id_ = validated_details->id; |
| 890 |
| 883 if (options_.requestShipping()) | 891 if (options_.requestShipping()) |
| 884 shipping_type_ = GetValidShippingType(options_.shippingType()); | 892 shipping_type_ = GetValidShippingType(options_.shippingType()); |
| 885 | 893 |
| 886 GetFrame()->GetInterfaceProvider()->GetInterface( | 894 GetFrame()->GetInterfaceProvider()->GetInterface( |
| 887 mojo::MakeRequest(&payment_provider_)); | 895 mojo::MakeRequest(&payment_provider_)); |
| 888 payment_provider_.set_connection_error_handler(ConvertToBaseCallback( | 896 payment_provider_.set_connection_error_handler(ConvertToBaseCallback( |
| 889 WTF::Bind(&PaymentRequest::OnError, WrapWeakPersistent(this), | 897 WTF::Bind(&PaymentRequest::OnError, WrapWeakPersistent(this), |
| 890 PaymentErrorReason::UNKNOWN))); | 898 PaymentErrorReason::UNKNOWN))); |
| 891 payment_provider_->Init( | 899 payment_provider_->Init( |
| 892 client_binding_.CreateInterfacePtrAndBind(), | 900 client_binding_.CreateInterfacePtrAndBind(), |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 (!options_.requestPayerName() && !response->payer_name.IsNull()) || | 976 (!options_.requestPayerName() && !response->payer_name.IsNull()) || |
| 969 (!options_.requestPayerEmail() && !response->payer_email.IsNull()) || | 977 (!options_.requestPayerEmail() && !response->payer_email.IsNull()) || |
| 970 (!options_.requestPayerPhone() && !response->payer_phone.IsNull())) { | 978 (!options_.requestPayerPhone() && !response->payer_phone.IsNull())) { |
| 971 show_resolver_->Reject(DOMException::Create(kSyntaxError)); | 979 show_resolver_->Reject(DOMException::Create(kSyntaxError)); |
| 972 ClearResolversAndCloseMojoConnection(); | 980 ClearResolversAndCloseMojoConnection(); |
| 973 return; | 981 return; |
| 974 } | 982 } |
| 975 | 983 |
| 976 complete_timer_.StartOneShot(kCompleteTimeoutSeconds, BLINK_FROM_HERE); | 984 complete_timer_.StartOneShot(kCompleteTimeoutSeconds, BLINK_FROM_HERE); |
| 977 | 985 |
| 978 show_resolver_->Resolve(new PaymentResponse(std::move(response), this)); | 986 show_resolver_->Resolve(new PaymentResponse(std::move(response), this, id_)); |
| 979 | 987 |
| 980 // Do not close the mojo connection here. The merchant website should call | 988 // Do not close the mojo connection here. The merchant website should call |
| 981 // PaymentResponse::complete(String), which will be forwarded over the mojo | 989 // PaymentResponse::complete(String), which will be forwarded over the mojo |
| 982 // connection to display a success or failure message to the user. | 990 // connection to display a success or failure message to the user. |
| 983 show_resolver_.Clear(); | 991 show_resolver_.Clear(); |
| 984 } | 992 } |
| 985 | 993 |
| 986 void PaymentRequest::OnError(PaymentErrorReason error) { | 994 void PaymentRequest::OnError(PaymentErrorReason error) { |
| 987 ExceptionCode ec = kUnknownError; | 995 ExceptionCode ec = kUnknownError; |
| 988 String message; | 996 String message; |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1080 complete_resolver_.Clear(); | 1088 complete_resolver_.Clear(); |
| 1081 show_resolver_.Clear(); | 1089 show_resolver_.Clear(); |
| 1082 abort_resolver_.Clear(); | 1090 abort_resolver_.Clear(); |
| 1083 can_make_payment_resolver_.Clear(); | 1091 can_make_payment_resolver_.Clear(); |
| 1084 if (client_binding_.is_bound()) | 1092 if (client_binding_.is_bound()) |
| 1085 client_binding_.Close(); | 1093 client_binding_.Close(); |
| 1086 payment_provider_.reset(); | 1094 payment_provider_.reset(); |
| 1087 } | 1095 } |
| 1088 | 1096 |
| 1089 } // namespace blink | 1097 } // namespace blink |
| OLD | NEW |