Changeset 288698 in webkit
- Timestamp:
- Jan 27, 2022 1:06:58 PM (6 months ago)
- Location:
- trunk
- Files:
-
- 3 added
- 51 edited
- 3 copied
- 1 moved
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/http/tests/paymentrequest/ApplePayPaymentCompleteDetails.https-expected.txt (added)
-
LayoutTests/http/tests/paymentrequest/ApplePayPaymentCompleteDetails.https.html (added)
-
Source/WebCore/CMakeLists.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/DerivedSources-input.xcfilelist (modified) (2 diffs)
-
Source/WebCore/DerivedSources-output.xcfilelist (modified) (2 diffs)
-
Source/WebCore/DerivedSources.make (modified) (2 diffs)
-
Source/WebCore/Headers.cmake (modified) (1 diff)
-
Source/WebCore/Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.cpp (modified) (1 diff)
-
Source/WebCore/Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.h (modified) (1 diff)
-
Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.cpp (moved) (moved from trunk/Source/WebCore/Modules/applepay/PaymentAuthorizationStatus.h) (2 diffs)
-
Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.h (modified) (1 diff)
-
Source/WebCore/Modules/applepay/ApplePaySession.cpp (modified) (3 diffs)
-
Source/WebCore/Modules/applepay/ApplePaySession.h (modified) (3 diffs)
-
Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.cpp (modified) (2 diffs)
-
Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h (modified) (2 diffs)
-
Source/WebCore/Modules/applepay/PaymentCoordinator.cpp (modified) (2 diffs)
-
Source/WebCore/Modules/applepay/PaymentCoordinator.h (modified) (3 diffs)
-
Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h (modified) (2 diffs)
-
Source/WebCore/Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm (modified) (1 diff)
-
Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.h (added)
-
Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl (copied) (copied from trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.h) (2 diffs)
-
Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp (modified) (4 diffs)
-
Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.h (modified) (1 diff)
-
Source/WebCore/Modules/paymentrequest/PaymentCompleteDetails.h (copied) (copied from trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.h) (2 diffs)
-
Source/WebCore/Modules/paymentrequest/PaymentCompleteDetails.idl (copied) (copied from trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.h) (2 diffs)
-
Source/WebCore/Modules/paymentrequest/PaymentHandler.h (modified) (1 diff)
-
Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp (modified) (2 diffs)
-
Source/WebCore/Modules/paymentrequest/PaymentRequest.h (modified) (1 diff)
-
Source/WebCore/Modules/paymentrequest/PaymentResponse.cpp (modified) (3 diffs)
-
Source/WebCore/Modules/paymentrequest/PaymentResponse.h (modified) (3 diffs)
-
Source/WebCore/Modules/paymentrequest/PaymentResponse.idl (modified) (1 diff)
-
Source/WebCore/PlatformMac.cmake (modified) (1 diff)
-
Source/WebCore/Sources.txt (modified) (1 diff)
-
Source/WebCore/SourcesCocoa.txt (modified) (2 diffs)
-
Source/WebCore/WebCore.xcodeproj/project.pbxproj (modified) (16 diffs)
-
Source/WebCore/loader/EmptyClients.cpp (modified) (1 diff)
-
Source/WebCore/testing/MockPaymentCoordinator.cpp (modified) (2 diffs)
-
Source/WebCore/testing/MockPaymentCoordinator.h (modified) (1 diff)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h (modified) (2 diffs)
-
Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.mm (modified) (3 diffs)
-
Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.h (modified) (1 diff)
-
Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.mm (modified) (1 diff)
-
Source/WebKit/Scripts/webkit/messages.py (modified) (1 diff)
-
Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.cpp (modified) (3 diffs)
-
Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h (modified) (3 diffs)
-
Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in (modified) (1 diff)
-
Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm (modified) (2 diffs)
-
Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm (modified) (1 diff)
-
Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm (modified) (2 diffs)
-
Source/WebKit/Shared/WebCoreArgumentCoders.h (modified) (1 diff)
-
Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.cpp (modified) (2 diffs)
-
Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.h (modified) (1 diff)
-
Source/WebKitLegacy/mac/ChangeLog (modified) (1 diff)
-
Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.h (modified) (1 diff)
-
Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r288697 r288698 1 2022-01-27 Devin Rousso <drousso@apple.com> 2 3 [Payment Request] allow additional payment method specific data to be passed to `complete()` 4 https://bugs.webkit.org/show_bug.cgi?id=235415 5 <rdar://problem/82970451> 6 7 Reviewed by Darin Adler. 8 9 * http/tests/paymentrequest/ApplePayPaymentCompleteDetails.https.html: Added. 10 * http/tests/paymentrequest/ApplePayPaymentCompleteDetails.https-expected.txt: Added. 11 1 12 2022-01-26 Jon Lee <jonlee@apple.com> 2 13 -
trunk/Source/WebCore/CMakeLists.txt
r288442 r288698 485 485 Modules/paymentrequest/PaymentAddress.idl 486 486 Modules/paymentrequest/PaymentComplete.idl 487 Modules/paymentrequest/PaymentCompleteDetails.idl 487 488 Modules/paymentrequest/PaymentCurrencyAmount.idl 488 489 Modules/paymentrequest/PaymentDetailsBase.idl -
trunk/Source/WebCore/ChangeLog
r288696 r288698 1 2022-01-27 Devin Rousso <drousso@apple.com> 2 3 [Payment Request] allow additional payment method specific data to be passed to `complete()` 4 https://bugs.webkit.org/show_bug.cgi?id=235415 5 <rdar://problem/82970451> 6 7 Reviewed by Darin Adler. 8 9 This allows for developers/merchants to give additional details to Apple Pay on completion. 10 11 Issue: <https://github.com/w3c/payment-request/issues/981> 12 Spec PR: <https://github.com/w3c/payment-request/pull/982> 13 14 Test: http/tests/paymentrequest/ApplePayPaymentCompleteDetails.https.html 15 16 * Modules/paymentrequest/PaymentCompleteDetails.h: Added. 17 * Modules/paymentrequest/PaymentCompleteDetails.idl: Added. 18 * Modules/paymentrequest/PaymentResponse.h: 19 * Modules/paymentrequest/PaymentResponse.idl: 20 * Modules/paymentrequest/PaymentResponse.cpp: 21 (WebCore::PaymentResponse::complete): 22 * Modules/paymentrequest/PaymentRequest.h: 23 * Modules/paymentrequest/PaymentRequest.cpp: 24 (WebCore::PaymentRequest::complete): 25 * Modules/paymentrequest/PaymentHandler.h: 26 Add new `dictionary PaymentCompleteDetails` that's allowed as an optional second argument to 27 `PaymentResponse.prototype.complete`. If provided, JSON stringify it and pass the serialized 28 string data along to the relevant `PaymentHandler` for JSON (re)parsing if the associated 29 payment method requires it. 30 31 * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: 32 * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: 33 (WebCore::convertAndValidate): 34 (WebCore::merge): 35 (WebCore::ApplePayPaymentHandler::complete): 36 (WebCore::ApplePayPaymentHandler::retry): 37 * Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl: Added. 38 * Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.h: Added. 39 (WebCore::ApplePayPaymentCompleteDetails::encode const): 40 (WebCore::ApplePayPaymentCompleteDetails::decode): 41 Convert the JSON (re)parsed object into a `ApplePayPaymentCompleteDetails`, merging it into 42 the `ApplePayPaymentAuthorizationResult` passed to the `PaymentCoordinator` (see below). 43 44 * Modules/applepay/ApplePayPaymentAuthorizationResult.h: 45 * Modules/applepay/ApplePayPaymentAuthorizationResult.cpp: Added. 46 (WebCore::ApplePayPaymentAuthorizationResult::isFinalState const): 47 (WebCore::ApplePayPaymentAuthorizationResult::encode const): 48 (WebCore::ApplePayPaymentAuthorizationResult::decode): 49 * Modules/applepay/ApplePaySessionPaymentRequest.h: 50 * Modules/applepay/ApplePaySessionPaymentRequest.cpp: 51 (WebCore::isFinalStateResult): Deleted. 52 * Modules/applepay/ApplePaySession.h: 53 * Modules/applepay/ApplePaySession.cpp: 54 (WebCore::convertAndValidate): 55 (WebCore::ApplePaySession::completePayment): 56 * Modules/applepay/PaymentCoordinator.h: 57 * Modules/applepay/PaymentCoordinator.cpp: 58 (WebCore::PaymentCoordinator::completePaymentSession): 59 * Modules/applepay/PaymentCoordinatorClient.h: 60 * loader/EmptyClients.cpp: 61 * testing/MockPaymentCoordinator.h: 62 * testing/MockPaymentCoordinator.cpp: 63 (WebCore::MockPaymentCoordinator::completePaymentSession): 64 Replace `PaymentAuthorizationResult` with `ApplePayPaymentAuthorizationResult` so that data 65 doesn't need to be moved between identically shaped structs for sending to the UIProcess. 66 67 * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm: 68 (WebCore::PaymentAPIVersion::current): 69 Increment the current version. 70 71 * Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.h: 72 * Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.cpp: 73 (WebCore::ApplePayAMSUIPaymentHandler::complete): 74 AMS UI does not allow/require any data to be provided on completion. 75 76 * CMakeLists.txt: 77 * DerivedSources-input.xcfilelist: 78 * DerivedSources-output.xcfilelist: 79 * DerivedSources.make: 80 * Headers.cmake: 81 * PlatformMac.cmake: 82 * Sources.txt: 83 * SourcesCocoa.txt: 84 * WebCore.xcodeproj/project.pbxproj: 85 1 86 2022-01-27 Elliott Williams <emw@apple.com> 2 87 -
trunk/Source/WebCore/DerivedSources-input.xcfilelist
r288442 r288698 219 219 $(PROJECT_DIR)/Modules/applepay/ApplePayValidateMerchantEvent.idl 220 220 $(PROJECT_DIR)/Modules/applepay/paymentrequest/ApplePayModifier.idl 221 $(PROJECT_DIR)/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl 221 222 $(PROJECT_DIR)/Modules/applepay/paymentrequest/ApplePayRequest.idl 222 223 $(PROJECT_DIR)/Modules/async-clipboard/Clipboard.idl … … 552 553 $(PROJECT_DIR)/Modules/paymentrequest/PaymentAddress.idl 553 554 $(PROJECT_DIR)/Modules/paymentrequest/PaymentComplete.idl 555 $(PROJECT_DIR)/Modules/paymentrequest/PaymentCompleteDetails.idl 554 556 $(PROJECT_DIR)/Modules/paymentrequest/PaymentCurrencyAmount.idl 555 557 $(PROJECT_DIR)/Modules/paymentrequest/PaymentDetailsBase.idl -
trunk/Source/WebCore/DerivedSources-output.xcfilelist
r288453 r288698 125 125 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentAuthorizedEvent.cpp 126 126 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentAuthorizedEvent.h 127 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentCompleteDetails.cpp 128 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentCompleteDetails.h 127 129 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentContact.cpp 128 130 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentContact.h … … 1794 1796 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSPaymentComplete.cpp 1795 1797 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSPaymentComplete.h 1798 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSPaymentCompleteDetails.cpp 1799 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSPaymentCompleteDetails.h 1796 1800 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSPaymentCurrencyAmount.cpp 1797 1801 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSPaymentCurrencyAmount.h -
trunk/Source/WebCore/DerivedSources.make
r288442 r288698 240 240 $(WebCore)/Modules/applepay/ApplePayValidateMerchantEvent.idl \ 241 241 $(WebCore)/Modules/applepay/paymentrequest/ApplePayModifier.idl \ 242 $(WebCore)/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl \ 242 243 $(WebCore)/Modules/applepay/paymentrequest/ApplePayRequest.idl \ 243 244 $(WebCore)/Modules/applepay-ams-ui/ApplePayAMSUIRequest.idl \ … … 472 473 $(WebCore)/Modules/paymentrequest/PaymentAddress.idl \ 473 474 $(WebCore)/Modules/paymentrequest/PaymentComplete.idl \ 475 $(WebCore)/Modules/paymentrequest/PaymentCompleteDetails.idl \ 474 476 $(WebCore)/Modules/paymentrequest/PaymentCurrencyAmount.idl \ 475 477 $(WebCore)/Modules/paymentrequest/PaymentDetailsBase.idl \ -
trunk/Source/WebCore/Headers.cmake
r288640 r288698 134 134 Modules/applepay/ApplePaySessionPaymentRequest.h 135 135 Modules/applepay/Payment.h 136 Modules/applepay/PaymentAuthorizationStatus.h137 136 Modules/applepay/PaymentContact.h 138 137 Modules/applepay/PaymentCoordinator.h -
trunk/Source/WebCore/Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.cpp
r286452 r288698 162 162 } 163 163 164 void ApplePayAMSUIPaymentHandler::complete(std::optional<PaymentComplete>&&)164 ExceptionOr<void> ApplePayAMSUIPaymentHandler::complete(Document&, std::optional<PaymentComplete>&&, String&&) 165 165 { 166 166 hide(); 167 return { }; 167 168 } 168 169 -
trunk/Source/WebCore/Modules/applepay-ams-ui/ApplePayAMSUIPaymentHandler.h
r286452 r288698 76 76 ExceptionOr<void> detailsUpdated(PaymentRequest::UpdateReason, String&& error, AddressErrors&&, PayerErrorFields&&, JSC::JSObject* paymentMethodErrors) final; 77 77 ExceptionOr<void> merchantValidationCompleted(JSC::JSValue&&) final; 78 void complete(std::optional<PaymentComplete>&&) final;78 ExceptionOr<void> complete(Document&, std::optional<PaymentComplete>&&, String&& serializedData) final; 79 79 ExceptionOr<void> retry(PaymentValidationErrors&&) final; 80 80 -
trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.cpp
r288697 r288698 1 1 /* 2 * Copyright (C) 20 16Apple Inc. All rights reserved.2 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 26 #include "config.h" 27 #include "ApplePayPaymentAuthorizationResult.h" 27 28 28 29 #if ENABLE(APPLE_PAY) 29 30 30 #include <wtf/Forward.h>31 32 31 namespace WebCore { 33 32 34 enum class PaymentAuthorizationStatus { 35 Success, 36 Failure, 37 PINRequired, 38 PINIncorrect, 39 PINLockout, 40 }; 33 bool ApplePayPaymentAuthorizationResult::isFinalState() const 34 { 35 switch (status) { 36 case ApplePayPaymentAuthorizationResult::Success: 37 case ApplePayPaymentAuthorizationResult::Failure: 38 return errors.isEmpty(); 41 39 40 case ApplePayPaymentAuthorizationResult::PINRequired: 41 case ApplePayPaymentAuthorizationResult::PINIncorrect: 42 case ApplePayPaymentAuthorizationResult::PINLockout: 43 return false; 44 45 default: 46 ASSERT_NOT_REACHED(); 47 return false; 48 } 42 49 } 43 50 44 namespace WTF { 45 template<> struct EnumTraits<WebCore::PaymentAuthorizationStatus> { 46 using values = EnumValues< 47 WebCore::PaymentAuthorizationStatus, 48 WebCore::PaymentAuthorizationStatus::Success, 49 WebCore::PaymentAuthorizationStatus::Failure, 50 WebCore::PaymentAuthorizationStatus::PINRequired, 51 WebCore::PaymentAuthorizationStatus::PINIncorrect, 52 WebCore::PaymentAuthorizationStatus::PINLockout 53 >; 54 }; 55 } 51 } // namespace WebCore 56 52 57 #endif 53 #endif // ENABLE(APPLE_PAY) -
trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizationResult.h
r273143 r288698 29 29 30 30 #include "ApplePayError.h" 31 #include <optional> 31 32 #include <wtf/RefPtr.h> 32 33 #include <wtf/Vector.h> 34 35 #if USE(APPLE_INTERNAL_SDK) 36 #include <WebKitAdditions/ApplePayPaymentAuthorizationResultAdditions.h> 37 #endif 33 38 34 39 namespace WebCore { 35 40 36 41 struct ApplePayPaymentAuthorizationResult { 37 unsigned short status; 42 using Status = unsigned short; 43 static constexpr Status Success = 0; 44 static constexpr Status Failure = 1; 45 static constexpr Status InvalidBillingPostalAddress = 2; 46 static constexpr Status InvalidShippingPostalAddress = 3; 47 static constexpr Status InvalidShippingContact = 4; 48 static constexpr Status PINRequired = 5; 49 static constexpr Status PINIncorrect = 6; 50 static constexpr Status PINLockout = 7; 51 52 Status status; // required 38 53 Vector<RefPtr<ApplePayError>> errors; 54 55 #if defined(ApplePayPaymentAuthorizationResultAdditions_members) 56 ApplePayPaymentAuthorizationResultAdditions_members 57 #endif 58 59 WEBCORE_EXPORT bool isFinalState() const; 60 61 template<class Encoder> void encode(Encoder&) const; 62 template<class Decoder> static std::optional<ApplePayPaymentAuthorizationResult> decode(Decoder&); 39 63 }; 64 65 template<class Encoder> 66 void ApplePayPaymentAuthorizationResult::encode(Encoder& encoder) const 67 { 68 encoder << status; 69 encoder << errors; 70 #if defined(ApplePayPaymentAuthorizationResultAdditions_encode) 71 ApplePayPaymentAuthorizationResultAdditions_encode 72 #endif 73 } 74 75 template<class Decoder> 76 std::optional<ApplePayPaymentAuthorizationResult> ApplePayPaymentAuthorizationResult::decode(Decoder& decoder) 77 { 78 #define DECODE(name, type) \ 79 std::optional<type> name; \ 80 decoder >> name; \ 81 if (!name) \ 82 return std::nullopt; \ 83 84 DECODE(status, Status) 85 DECODE(errors, Vector<RefPtr<ApplePayError>>) 86 #if defined(ApplePayPaymentAuthorizationResultAdditions_decode_members) 87 ApplePayPaymentAuthorizationResultAdditions_decode_members 88 #endif 89 90 #undef DECODE 91 92 return { { 93 WTFMove(*status), 94 WTFMove(*errors), 95 #if defined(ApplePayPaymentAuthorizationResultAdditions_decode_return) 96 ApplePayPaymentAuthorizationResultAdditions_decode_return 97 #endif 98 } }; 99 } 40 100 41 101 } -
trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp
r287066 r288698 56 56 #include "Page.h" 57 57 #include "PageConsoleClient.h" 58 #include "PaymentAuthorizationStatus.h"59 58 #include "PaymentContact.h" 60 59 #include "PaymentCoordinator.h" … … 195 194 } 196 195 197 static ExceptionOr<PaymentAuthorizationResult> convertAndValidate(ApplePayPaymentAuthorizationResult&& result) 198 { 199 PaymentAuthorizationResult convertedResult; 200 196 static ExceptionOr<ApplePayPaymentAuthorizationResult> convertAndValidate(ApplePayPaymentAuthorizationResult&& result) 197 { 201 198 switch (result.status) { 202 case ApplePaySession::STATUS_SUCCESS: 203 convertedResult.status = PaymentAuthorizationStatus::Success; 199 case ApplePayPaymentAuthorizationResult::Success: 200 case ApplePayPaymentAuthorizationResult::Failure: 201 case ApplePayPaymentAuthorizationResult::PINRequired: 202 case ApplePayPaymentAuthorizationResult::PINIncorrect: 203 case ApplePayPaymentAuthorizationResult::PINLockout: 204 204 break; 205 205 206 case ApplePaySession::STATUS_FAILURE: 207 convertedResult.status = PaymentAuthorizationStatus::Failure; 206 case ApplePayPaymentAuthorizationResult::InvalidBillingPostalAddress: 207 result.status = ApplePayPaymentAuthorizationResult::Failure; 208 result.errors.insert(0, ApplePayError::create(ApplePayErrorCode::BillingContactInvalid, std::nullopt, nullString())); 208 209 break; 209 210 210 case ApplePay Session::STATUS_INVALID_BILLING_POSTAL_ADDRESS:211 convertedResult.status = PaymentAuthorizationStatus::Failure;212 convertedResult.errors.append(ApplePayError::create(ApplePayErrorCode::BillingContactInvalid, std::nullopt, nullString()));211 case ApplePayPaymentAuthorizationResult::InvalidShippingPostalAddress: 212 result.status = ApplePayPaymentAuthorizationResult::Failure; 213 result.errors.insert(0, ApplePayError::create(ApplePayErrorCode::ShippingContactInvalid, ApplePayErrorContactField::PostalAddress, nullString())); 213 214 break; 214 215 215 case ApplePay Session::STATUS_INVALID_SHIPPING_POSTAL_ADDRESS:216 convertedResult.status = PaymentAuthorizationStatus::Failure;217 convertedResult.errors.append(ApplePayError::create(ApplePayErrorCode::ShippingContactInvalid, ApplePayErrorContactField::PostalAddress, nullString()));216 case ApplePayPaymentAuthorizationResult::InvalidShippingContact: 217 result.status = ApplePayPaymentAuthorizationResult::Failure; 218 result.errors.insert(0, ApplePayError::create(ApplePayErrorCode::ShippingContactInvalid, std::nullopt, nullString())); 218 219 break; 219 220 220 case ApplePaySession::STATUS_INVALID_SHIPPING_CONTACT:221 convertedResult.status = PaymentAuthorizationStatus::Failure;222 convertedResult.errors.append(ApplePayError::create(ApplePayErrorCode::ShippingContactInvalid, std::nullopt, nullString()));223 break;224 225 case ApplePaySession::STATUS_PIN_REQUIRED:226 convertedResult.status = PaymentAuthorizationStatus::PINRequired;227 break;228 229 case ApplePaySession::STATUS_PIN_INCORRECT:230 convertedResult.status = PaymentAuthorizationStatus::PINIncorrect;231 break;232 233 case ApplePaySession::STATUS_PIN_LOCKOUT:234 convertedResult.status = PaymentAuthorizationStatus::PINLockout;235 break;236 237 221 default: 238 222 return Exception { InvalidAccessError }; 239 223 } 240 224 241 convertedResult.errors.appendVector(WTFMove(result.errors)); 242 243 return WTFMove(convertedResult); 225 #if defined(ApplePaySessionAdditions_convertAndValidate_ApplePayPaymentAuthorizationResult) 226 ApplePaySessionAdditions_convertAndValidate_ApplePayPaymentAuthorizationResult 227 #endif 228 229 return WTFMove(result); 244 230 } 245 231 … … 568 554 569 555 auto&& convertedResult = convertedResultOrException.releaseReturnValue(); 570 bool isFinalState = isFinalStateResult(convertedResult);556 bool isFinalState = convertedResult.isFinalState(); 571 557 572 558 paymentCoordinator().completePaymentSession(WTFMove(convertedResult)); -
trunk/Source/WebCore/Modules/applepay/ApplePaySession.h
r278640 r288698 29 29 30 30 #include "ActiveDOMObject.h" 31 #include "ApplePayPaymentAuthorizationResult.h" 31 32 #include "ApplePayPaymentRequest.h" 32 33 #include "EventTarget.h" … … 50 51 class PaymentCoordinator; 51 52 class PaymentMethod; 52 enum class PaymentAuthorizationStatus;53 53 struct ApplePayCouponCodeUpdate; 54 54 struct ApplePayLineItem; 55 55 struct ApplePayPaymentRequest; 56 56 struct ApplePayShippingMethod; 57 struct ApplePayPaymentAuthorizationResult;58 57 struct ApplePayPaymentMethodUpdate; 59 58 struct ApplePayShippingContactUpdate; … … 66 65 virtual ~ApplePaySession(); 67 66 68 static const unsigned short STATUS_SUCCESS = 0;69 static const unsigned short STATUS_FAILURE = 1;70 static const unsigned short STATUS_INVALID_BILLING_POSTAL_ADDRESS = 2;71 static const unsigned short STATUS_INVALID_SHIPPING_POSTAL_ADDRESS = 3;72 static const unsigned short STATUS_INVALID_SHIPPING_CONTACT = 4;73 static const unsigned short STATUS_PIN_REQUIRED = 5;74 static const unsigned short STATUS_PIN_INCORRECT = 6;75 static const unsigned short STATUS_PIN_LOCKOUT = 7;67 static constexpr auto STATUS_SUCCESS = ApplePayPaymentAuthorizationResult::Success; 68 static constexpr auto STATUS_FAILURE = ApplePayPaymentAuthorizationResult::Failure; 69 static constexpr auto STATUS_INVALID_BILLING_POSTAL_ADDRESS = ApplePayPaymentAuthorizationResult::InvalidBillingPostalAddress; 70 static constexpr auto STATUS_INVALID_SHIPPING_POSTAL_ADDRESS = ApplePayPaymentAuthorizationResult::InvalidShippingPostalAddress; 71 static constexpr auto STATUS_INVALID_SHIPPING_CONTACT = ApplePayPaymentAuthorizationResult::InvalidShippingContact; 72 static constexpr auto STATUS_PIN_REQUIRED = ApplePayPaymentAuthorizationResult::PINRequired; 73 static constexpr auto STATUS_PIN_INCORRECT = ApplePayPaymentAuthorizationResult::PINIncorrect; 74 static constexpr auto STATUS_PIN_LOCKOUT = ApplePayPaymentAuthorizationResult::PINLockout; 76 75 77 76 static ExceptionOr<bool> supportsVersion(Document&, unsigned version); -
trunk/Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.cpp
r278253 r288698 29 29 #if ENABLE(APPLE_PAY) 30 30 31 #include "PaymentAuthorizationStatus.h"32 31 #include <wtf/SoftLinking.h> 33 32 … … 38 37 ApplePaySessionPaymentRequest::~ApplePaySessionPaymentRequest() = default; 39 38 40 bool isFinalStateResult(const std::optional<PaymentAuthorizationResult>& result)41 {42 if (!result)43 return true;44 45 switch (result->status) {46 case PaymentAuthorizationStatus::Success:47 case PaymentAuthorizationStatus::Failure:48 return result->errors.isEmpty();49 50 case PaymentAuthorizationStatus::PINRequired:51 case PaymentAuthorizationStatus::PINIncorrect:52 case PaymentAuthorizationStatus::PINLockout:53 return false;54 }55 }56 57 39 } 58 40 -
trunk/Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h
r278630 r288698 45 45 namespace WebCore { 46 46 47 enum class PaymentAuthorizationStatus;48 49 47 class ApplePaySessionPaymentRequest { 50 48 public: … … 187 185 #endif 188 186 }; 189 190 struct PaymentAuthorizationResult {191 PaymentAuthorizationStatus status;192 Vector<RefPtr<ApplePayError>> errors;193 };194 195 WEBCORE_EXPORT bool isFinalStateResult(const std::optional<PaymentAuthorizationResult>&);196 187 197 188 } // namespace WebCore -
trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.cpp
r285376 r288698 39 39 #include "Logging.h" 40 40 #include "Page.h" 41 #include "PaymentAuthorizationStatus.h"42 41 #include "PaymentCoordinatorClient.h" 43 42 #include "PaymentSession.h" … … 165 164 #endif // ENABLE(APPLE_PAY_COUPON_CODE) 166 165 167 void PaymentCoordinator::completePaymentSession( std::optional<PaymentAuthorizationResult>&& result)168 { 169 ASSERT(m_activeSession); 170 171 bool isFinalState = isFinalStateResult(result);166 void PaymentCoordinator::completePaymentSession(ApplePayPaymentAuthorizationResult&& result) 167 { 168 ASSERT(m_activeSession); 169 170 bool isFinalState = result.isFinalState(); 172 171 PAYMENT_COORDINATOR_RELEASE_LOG("completePaymentSession() (isFinalState: %d)", isFinalState); 173 172 m_client.completePaymentSession(WTFMove(result)); -
trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.h
r284857 r288698 44 44 class PaymentSession; 45 45 class PaymentSessionError; 46 enum class PaymentAuthorizationStatus;47 46 struct ApplePayCouponCodeUpdate; 47 struct ApplePayPaymentAuthorizationResult; 48 48 struct ApplePayPaymentMethodUpdate; 49 49 struct ApplePaySetupConfiguration; … … 52 52 struct ApplePayShippingMethodUpdate; 53 53 struct ExceptionDetails; 54 struct PaymentAuthorizationResult;55 54 56 55 class PaymentCoordinator : public CanMakeWeakPtr<PaymentCoordinator> { … … 77 76 void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&); 78 77 #endif 79 void completePaymentSession( std::optional<PaymentAuthorizationResult>&&);78 void completePaymentSession(ApplePayPaymentAuthorizationResult&&); 80 79 void abortPaymentSession(); 81 80 void cancelPaymentSession(); -
trunk/Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h
r278712 r288698 39 39 class PaymentMerchantSession; 40 40 struct ApplePayCouponCodeUpdate; 41 struct ApplePayPaymentAuthorizationResult; 41 42 struct ApplePayPaymentMethodUpdate; 42 43 struct ApplePaySetupConfiguration; 43 44 struct ApplePayShippingContactUpdate; 44 45 struct ApplePayShippingMethodUpdate; 45 struct PaymentAuthorizationResult;46 46 47 47 class PaymentCoordinatorClient { … … 62 62 virtual void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&) = 0; 63 63 #endif 64 virtual void completePaymentSession( std::optional<PaymentAuthorizationResult>&&) = 0;64 virtual void completePaymentSession(ApplePayPaymentAuthorizationResult&&) = 0; 65 65 virtual void abortPaymentSession() = 0; 66 66 virtual void cancelPaymentSession() = 0; -
trunk/Source/WebCore/Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm
r285444 r288698 36 36 { 37 37 static unsigned current = [] { 38 #if ENABLE(APPLE_PAY_PAYMENT_DETAILS_DATA) || ENABLE(APPLE_PAY_AMS_UI) 38 #if ENABLE(APPLE_PAY_PAYMENT_COMPLETE_DETAILS_DATA) 39 return 14; 40 #elif ENABLE(APPLE_PAY_PAYMENT_DETAILS_DATA) || ENABLE(APPLE_PAY_AMS_UI) 39 41 return 13; 40 42 #elif ENABLE(APPLE_PAY_COUPON_CODE) || ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE) || ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM) || ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE) -
trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl
r288697 r288698 1 1 /* 2 * Copyright (C) 20 17Apple Inc. All rights reserved.2 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 27 28 #if ENABLE(APPLE_PAY) 29 30 #include "ApplePayError.h" 31 #include <wtf/RefPtr.h> 32 #include <wtf/Vector.h> 33 34 namespace WebCore { 35 36 struct ApplePayPaymentAuthorizationResult { 37 unsigned short status; 38 Vector<RefPtr<ApplePayError>> errors; 26 [ 27 Conditional=APPLE_PAY&PAYMENT_REQUEST 28 ] dictionary ApplePayPaymentCompleteDetails { 39 29 }; 40 41 }42 43 #endif -
trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp
r287731 r288698 41 41 #include "ApplePayModifier.h" 42 42 #include "ApplePayPayment.h" 43 #include "ApplePayPaymentAuthorizationResult.h" 44 #include "ApplePayPaymentCompleteDetails.h" 43 45 #include "ApplePayPaymentMethodUpdate.h" 44 46 #include "ApplePaySessionPaymentRequest.h" … … 60 62 #include "PayerErrorFields.h" 61 63 #include "Payment.h" 62 #include "Payment AuthorizationStatus.h"64 #include "PaymentComplete.h" 63 65 #include "PaymentContact.h" 64 66 #include "PaymentCoordinator.h" … … 686 688 } 687 689 688 void ApplePayPaymentHandler::complete(std::optional<PaymentComplete>&& result)689 { 690 if (!result) { 691 ASSERT(isFinalStateResult(std::nullopt)); 692 paymentCoordinator().completePaymentSession(std::nullopt); 693 return; 694 } 695 696 PaymentAuthorizationResult authorizationResult; 697 switch ( *result) {690 #if !USE(APPLE_INTERNAL_SDK) 691 static ExceptionOr<ApplePayPaymentCompleteDetails> convertAndValidate(ApplePayPaymentCompleteDetails&& details) { return WTFMove(details); } 692 static void merge(ApplePayPaymentAuthorizationResult&, ApplePayPaymentCompleteDetails&&) { } 693 #endif 694 695 ExceptionOr<void> ApplePayPaymentHandler::complete(Document& document, std::optional<PaymentComplete>&& result, String&& serializedData) 696 { 697 ApplePayPaymentAuthorizationResult authorizationResult; 698 699 switch (result.value_or(PaymentComplete::Success)) { 698 700 case PaymentComplete::Fail: 699 701 case PaymentComplete::Unknown: 700 authorizationResult.status = PaymentAuthorizationStatus::Failure;702 authorizationResult.status = ApplePayPaymentAuthorizationResult::Failure; 701 703 break; 704 702 705 case PaymentComplete::Success: 703 authorizationResult.status = PaymentAuthorizationStatus::Success;706 authorizationResult.status = ApplePayPaymentAuthorizationResult::Success; 704 707 break; 705 708 } 706 709 707 ASSERT(isFinalStateResult(authorizationResult)); 710 if (!serializedData.isEmpty()) { 711 auto throwScope = DECLARE_THROW_SCOPE(document.vm()); 712 713 auto parsedData = JSONParse(document.globalObject(), WTFMove(serializedData)); 714 if (throwScope.exception()) 715 return Exception { ExistingExceptionError }; 716 717 auto details = convertDictionary<ApplePayPaymentCompleteDetails>(*document.globalObject(), WTFMove(parsedData)); 718 if (throwScope.exception()) 719 return Exception { ExistingExceptionError }; 720 721 auto convertedDetails = convertAndValidate(WTFMove(details)); 722 if (convertedDetails.hasException()) 723 return convertedDetails.releaseException(); 724 merge(authorizationResult, convertedDetails.releaseReturnValue()); 725 } 726 727 ASSERT(authorizationResult.isFinalState()); 708 728 paymentCoordinator().completePaymentSession(WTFMove(authorizationResult)); 729 return { }; 709 730 } 710 731 … … 724 745 errors.append(ApplePayError::create(ApplePayErrorCode::Unknown, std::nullopt, nullString())); 725 746 726 PaymentAuthorizationResult authorizationResult { PaymentAuthorizationStatus::Failure, WTFMove(errors) };727 ASSERT(! isFinalStateResult(authorizationResult));747 ApplePayPaymentAuthorizationResult authorizationResult { ApplePayPaymentAuthorizationResult::Failure, WTFMove(errors) }; 748 ASSERT(!authorizationResult.isFinalState()); 728 749 paymentCoordinator().completePaymentSession(WTFMove(authorizationResult)); 729 750 return { }; -
trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.h
r286452 r288698 79 79 ExceptionOr<void> detailsUpdated(PaymentRequest::UpdateReason, String&& error, AddressErrors&&, PayerErrorFields&&, JSC::JSObject* paymentMethodErrors) final; 80 80 ExceptionOr<void> merchantValidationCompleted(JSC::JSValue&&) final; 81 void complete(std::optional<PaymentComplete>&&) final;81 ExceptionOr<void> complete(Document&, std::optional<PaymentComplete>&&, String&& serializedData) final; 82 82 ExceptionOr<void> retry(PaymentValidationErrors&&) final; 83 83 -
trunk/Source/WebCore/Modules/paymentrequest/PaymentCompleteDetails.h
r288697 r288698 1 1 /* 2 * Copyright (C) 20 17Apple Inc. All rights reserved.2 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #if ENABLE( APPLE_PAY)28 #if ENABLE(PAYMENT_REQUEST) 29 29 30 #include "ApplePayError.h" 31 #include <wtf/RefPtr.h> 32 #include <wtf/Vector.h> 30 #include <JavaScriptCore/JSObject.h> 31 #include <JavaScriptCore/Strong.h> 33 32 34 33 namespace WebCore { 35 34 36 struct ApplePayPaymentAuthorizationResult { 37 unsigned short status; 38 Vector<RefPtr<ApplePayError>> errors; 35 struct PaymentCompleteDetails { 36 JSC::Strong<JSC::JSObject> data; 39 37 }; 40 38 41 } 39 } // namespace WebCore 42 40 43 #endif 41 #endif // ENABLE(PAYMENT_REQUEST) -
trunk/Source/WebCore/Modules/paymentrequest/PaymentCompleteDetails.idl
r288697 r288698 1 1 /* 2 * Copyright (C) 20 17Apple Inc. All rights reserved.2 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 27 28 #if ENABLE(APPLE_PAY) 29 30 #include "ApplePayError.h" 31 #include <wtf/RefPtr.h> 32 #include <wtf/Vector.h> 33 34 namespace WebCore { 35 36 struct ApplePayPaymentAuthorizationResult { 37 unsigned short status; 38 Vector<RefPtr<ApplePayError>> errors; 26 [ 27 Conditional=PAYMENT_REQUEST 28 ] dictionary PaymentCompleteDetails { 29 object? data; 39 30 }; 40 41 }42 43 #endif -
trunk/Source/WebCore/Modules/paymentrequest/PaymentHandler.h
r286452 r288698 58 58 virtual ExceptionOr<void> detailsUpdated(PaymentRequest::UpdateReason, String&& error, AddressErrors&&, PayerErrorFields&&, JSC::JSObject* paymentMethodErrors) = 0; 59 59 virtual ExceptionOr<void> merchantValidationCompleted(JSC::JSValue&&) = 0; 60 virtual void complete(std::optional<PaymentComplete>&&) = 0;60 virtual ExceptionOr<void> complete(Document&, std::optional<PaymentComplete>&&, String&& serializedData) = 0; 61 61 virtual ExceptionOr<void> retry(PaymentValidationErrors&&) = 0; 62 62 }; -
trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp
r287066 r288698 773 773 } 774 774 775 ExceptionOr<void> PaymentRequest::complete( std::optional<PaymentComplete>&& result)775 ExceptionOr<void> PaymentRequest::complete(Document& document, std::optional<PaymentComplete>&& result, String&& serializedData) 776 776 { 777 777 ASSERT(m_state == State::Closed); … … 779 779 return Exception { AbortError }; 780 780 781 activePaymentHandler()->complete(WTFMove(result)); 781 auto exception = activePaymentHandler()->complete(document, WTFMove(result), WTFMove(serializedData)); 782 if (exception.hasException()) 783 return exception.releaseException(); 784 782 785 m_activePaymentHandler = std::nullopt; 783 786 return { }; -
trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.h
r285444 r288698 100 100 void accept(const String& methodName, PaymentResponse::DetailsFunction&&, Ref<PaymentAddress>&& shippingAddress, const String& payerName, const String& payerEmail, const String& payerPhone); 101 101 void reject(Exception&&); 102 ExceptionOr<void> complete( std::optional<PaymentComplete>&&);102 ExceptionOr<void> complete(Document&, std::optional<PaymentComplete>&&, String&& serializedData); 103 103 ExceptionOr<void> retry(PaymentValidationErrors&&); 104 104 void cancel(); -
trunk/Source/WebCore/Modules/paymentrequest/PaymentResponse.cpp
r287177 r288698 29 29 #if ENABLE(PAYMENT_REQUEST) 30 30 31 #include "Document.h" 31 32 #include "JSDOMPromiseDeferred.h" 32 33 #include "NotImplemented.h" 34 #include "PaymentComplete.h" 35 #include "PaymentCompleteDetails.h" 33 36 #include "PaymentRequest.h" 37 #include <JavaScriptCore/JSONObject.h> 38 #include <JavaScriptCore/ThrowScope.h> 34 39 #include <wtf/IsoMallocInlines.h> 35 40 #include <wtf/RunLoop.h> … … 64 69 } 65 70 66 void PaymentResponse::complete( std::optional<PaymentComplete>&& result, DOMPromiseDeferred<void>&& promise)71 void PaymentResponse::complete(Document& document, std::optional<PaymentComplete>&& result, std::optional<PaymentCompleteDetails>&& details, DOMPromiseDeferred<void>&& promise) 67 72 { 68 73 if (m_state == State::Stopped || !m_request) { … … 76 81 } 77 82 78 ASSERT(hasPendingActivity());79 ASSERT(m_state == State::Created);80 m_pendingActivity = nullptr;81 m_state = State::Completed;83 String serializedData; 84 if (details) { 85 if (auto data = details->data) { 86 auto throwScope = DECLARE_THROW_SCOPE(document.globalObject()->vm()); 82 87 83 promise.settle(m_request->complete(WTFMove(result))); 88 serializedData = JSONStringify(document.globalObject(), data.get(), 0); 89 if (throwScope.exception()) { 90 promise.reject(Exception { ExistingExceptionError }); 91 return; 92 } 93 } 94 } 95 96 auto exception = m_request->complete(document, WTFMove(result), WTFMove(serializedData)); 97 if (!exception.hasException()) { 98 ASSERT(hasPendingActivity()); 99 ASSERT(m_state == State::Created); 100 m_pendingActivity = nullptr; 101 m_state = State::Completed; 102 } 103 promise.settle(WTFMove(exception)); 84 104 } 85 105 -
trunk/Source/WebCore/Modules/paymentrequest/PaymentResponse.h
r278253 r288698 33 33 #include "JSValueInWrappedObject.h" 34 34 #include "PaymentAddress.h" 35 #include "PaymentComplete.h"36 35 #include <wtf/WeakPtr.h> 37 36 … … 40 39 class Document; 41 40 class PaymentRequest; 41 42 struct PaymentCompleteDetails; 42 43 struct PaymentValidationErrors; 44 45 enum class PaymentComplete; 43 46 44 47 template<typename IDLType> class DOMPromiseDeferred; … … 84 87 void setPayerPhone(const String& payerPhone) { m_payerPhone = payerPhone; } 85 88 86 void complete( std::optional<PaymentComplete>&&, DOMPromiseDeferred<void>&&);89 void complete(Document&, std::optional<PaymentComplete>&&, std::optional<PaymentCompleteDetails>&&, DOMPromiseDeferred<void>&&); 87 90 void retry(PaymentValidationErrors&&, DOMPromiseDeferred<void>&&); 88 91 void abortWithException(Exception&&); -
trunk/Source/WebCore/Modules/paymentrequest/PaymentResponse.idl
r283463 r288698 43 43 readonly attribute DOMString? payerPhone; 44 44 45 [ NewObject] Promise<undefined> complete(optional PaymentComplete result = "unknown");45 [CallWith=Document, NewObject] Promise<undefined> complete(optional PaymentComplete result = "unknown", optional PaymentCompleteDetails details); 46 46 [NewObject] Promise<undefined> retry(optional PaymentValidationErrors errorFields); 47 47 -
trunk/Source/WebCore/PlatformMac.cmake
r287310 r288698 797 797 798 798 Modules/applepay/paymentrequest/ApplePayModifier.idl 799 Modules/applepay/paymentrequest/ApplePayPaymentCompleteDetails.idl 799 800 Modules/applepay/paymentrequest/ApplePayRequest.idl 800 801 -
trunk/Source/WebCore/Sources.txt
r288661 r288698 3545 3545 JSPaymentAddress.cpp 3546 3546 JSPaymentComplete.cpp 3547 JSPaymentCompleteDetails.cpp 3547 3548 JSPaymentCurrencyAmount.cpp 3548 3549 JSPaymentDetailsBase.cpp -
trunk/Source/WebCore/SourcesCocoa.txt
r288604 r288698 45 45 JSApplePayPaymentAuthorizationResult.cpp 46 46 JSApplePayPaymentAuthorizedEvent.cpp 47 JSApplePayPaymentCompleteDetails.cpp 47 48 JSApplePayPaymentContact.cpp 48 49 JSApplePayPaymentMethod.cpp … … 75 76 Modules/applepay/ApplePayContactField.cpp 76 77 Modules/applepay/ApplePayMerchantCapability.cpp 78 Modules/applepay/ApplePayPaymentAuthorizationResult.cpp 77 79 Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp 78 80 Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r288696 r288698 600 600 1AE82F900CAAFA9D002237AE /* JSDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE82F8E0CAAFA9D002237AE /* JSDatabase.h */; }; 601 601 1AE82FED0CAB07EE002237AE /* JSSQLResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */; }; 602 1AE96A881D1A0CEB00B86768 /* PaymentAuthorizationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */; settings = {ATTRIBUTES = (Private, ); }; };603 602 1AE96A891D1A0CEB00B86768 /* PaymentMerchantSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A871D1A0CEB00B86768 /* PaymentMerchantSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; 604 603 1AE96A8B1D1A0DDD00B86768 /* JSApplePayPaymentAuthorizedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A7B1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.h */; }; … … 3097 3096 9596B93325DEEEA000ED2CFA /* ApplePayCouponCodeUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9596B93025DEEE9F00ED2CFA /* ApplePayCouponCodeUpdate.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3098 3097 9596B93825DEEF0300ED2CFA /* JSApplePayCouponCodeChangedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9596B93625DEEF0200ED2CFA /* JSApplePayCouponCodeChangedEvent.h */; }; 3098 959CED10279CB6860017A8FF /* PaymentCompleteDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 959CED0D279CB6850017A8FF /* PaymentCompleteDetails.h */; }; 3099 959CED14279CB6B60017A8FF /* JSPaymentCompleteDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 959CED12279CB6B50017A8FF /* JSPaymentCompleteDetails.h */; }; 3100 959CED1C279CB82F0017A8FF /* ApplePayPaymentCompleteDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 959CED19279CB82E0017A8FF /* ApplePayPaymentCompleteDetails.h */; }; 3101 959CED21279CB88B0017A8FF /* JSApplePayPaymentCompleteDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 959CED1F279CB88B0017A8FF /* JSApplePayPaymentCompleteDetails.h */; }; 3099 3102 95A1E2E925CC75A900268C8E /* MediaControlsContextMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 95A1E2E725CC75A800268C8E /* MediaControlsContextMenuItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3100 3103 95AA571025EEED32004E9283 /* InspectorCanvasCallTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = 95AA570E25EEED31004E9283 /* InspectorCanvasCallTracer.h */; }; … … 3304 3307 A12A1050166444FD008FA311 /* GridTrackSize.h in Headers */ = {isa = PBXBuildFile; fileRef = A12A104E166444DC008FA311 /* GridTrackSize.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3305 3308 A12C59EE2035FC9B0012236B /* ApplePayError.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADFDFD61E71D8DF008F5D34 /* ApplePayError.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3306 A12C59F02035FCAB0012236B /* ApplePayPaymentAuthorizationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADFDFD81E71D8DF008F5D34 /* ApplePayPaymentAuthorizationResult.h */; };3309 A12C59F02035FCAB0012236B /* ApplePayPaymentAuthorizationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADFDFD81E71D8DF008F5D34 /* ApplePayPaymentAuthorizationResult.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3307 3310 A12C59F12035FCBF0012236B /* ApplePayPaymentMethodUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADFDFDA1E71D8DF008F5D34 /* ApplePayPaymentMethodUpdate.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3308 3311 A12C59F22035FCD60012236B /* ApplePayShippingContactUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ADFDFDC1E71D8DF008F5D34 /* ApplePayShippingContactUpdate.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 6997 7000 1ADFDFD61E71D8DF008F5D34 /* ApplePayError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayError.h; sourceTree = "<group>"; }; 6998 7001 1ADFDFD71E71D8DF008F5D34 /* ApplePayError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayError.idl; sourceTree = "<group>"; }; 7002 1ADFDFD81E71D8DF008F5D33 /* ApplePayPaymentAuthorizationResult.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayPaymentAuthorizationResult.cpp; sourceTree = "<group>"; }; 6999 7003 1ADFDFD81E71D8DF008F5D34 /* ApplePayPaymentAuthorizationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentAuthorizationResult.h; sourceTree = "<group>"; }; 7000 7004 1ADFDFD91E71D8DF008F5D34 /* ApplePayPaymentAuthorizationResult.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentAuthorizationResult.idl; sourceTree = "<group>"; }; … … 7090 7094 1AE96A831D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingMethodSelectedEvent.h; sourceTree = "<group>"; }; 7091 7095 1AE96A841D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayValidateMerchantEvent.cpp; sourceTree = "<group>"; }; 7092 1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentAuthorizationStatus.h; sourceTree = "<group>"; };7093 7096 1AE96A871D1A0CEB00B86768 /* PaymentMerchantSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentMerchantSession.h; sourceTree = "<group>"; }; 7094 7097 1AEF4E66170E160300AB2799 /* CachedFontClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFontClient.h; sourceTree = "<group>"; }; … … 13015 13018 9596B93525DEEF0000ED2CFA /* JSApplePayCouponCodeUpdate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayCouponCodeUpdate.cpp; sourceTree = "<group>"; }; 13016 13019 9596B93625DEEF0200ED2CFA /* JSApplePayCouponCodeChangedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayCouponCodeChangedEvent.h; sourceTree = "<group>"; }; 13020 959CED0D279CB6850017A8FF /* PaymentCompleteDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentCompleteDetails.h; sourceTree = "<group>"; }; 13021 959CED0F279CB6850017A8FF /* PaymentCompleteDetails.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PaymentCompleteDetails.idl; sourceTree = "<group>"; }; 13022 959CED12279CB6B50017A8FF /* JSPaymentCompleteDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPaymentCompleteDetails.h; sourceTree = "<group>"; }; 13023 959CED13279CB6B50017A8FF /* JSPaymentCompleteDetails.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPaymentCompleteDetails.cpp; sourceTree = "<group>"; }; 13024 959CED19279CB82E0017A8FF /* ApplePayPaymentCompleteDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentCompleteDetails.h; sourceTree = "<group>"; }; 13025 959CED1B279CB82E0017A8FF /* ApplePayPaymentCompleteDetails.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentCompleteDetails.idl; sourceTree = "<group>"; }; 13026 959CED1E279CB88A0017A8FF /* JSApplePayPaymentCompleteDetails.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSApplePayPaymentCompleteDetails.cpp; path = ../../../../../../../../JSApplePayPaymentCompleteDetails.cpp; sourceTree = "<group>"; }; 13027 959CED1F279CB88B0017A8FF /* JSApplePayPaymentCompleteDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSApplePayPaymentCompleteDetails.h; path = ../../../../../../../../JSApplePayPaymentCompleteDetails.h; sourceTree = "<group>"; }; 13017 13028 95A1E2E725CC75A800268C8E /* MediaControlsContextMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlsContextMenuItem.h; sourceTree = "<group>"; }; 13018 13029 95AA570D25EEED30004E9283 /* InspectorCanvasCallTracer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCanvasCallTracer.cpp; sourceTree = "<group>"; }; … … 19594 19605 7C6522FE1E00D03400677F22 /* ApplePayPayment.h */, 19595 19606 7C6522FF1E00D03400677F22 /* ApplePayPayment.idl */, 19607 1ADFDFD81E71D8DF008F5D33 /* ApplePayPaymentAuthorizationResult.cpp */, 19596 19608 1ADFDFD81E71D8DF008F5D34 /* ApplePayPaymentAuthorizationResult.h */, 19597 19609 1ADFDFD91E71D8DF008F5D34 /* ApplePayPaymentAuthorizationResult.idl */, … … 19659 19671 1A8A64371D19FC5300D0E00F /* Payment.h */, 19660 19672 A169B042248F037B00EE8B7B /* PaymentAPIVersion.h */, 19661 1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */,19662 19673 1A8A64381D19FC5300D0E00F /* PaymentContact.h */, 19663 19674 1A58E86B1D19E42D00C0EA73 /* PaymentCoordinator.cpp */, … … 19827 19838 1AE96A7A1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.cpp */, 19828 19839 1AE96A7B1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.h */, 19840 959CED1E279CB88A0017A8FF /* JSApplePayPaymentCompleteDetails.cpp */, 19841 959CED1F279CB88B0017A8FF /* JSApplePayPaymentCompleteDetails.h */, 19829 19842 7C65230B1E00DBB400677F22 /* JSApplePayPaymentContact.cpp */, 19830 19843 7C65230C1E00DBB400677F22 /* JSApplePayPaymentContact.h */, … … 26487 26500 A1CC56601F46146200A4555B /* JSPaymentComplete.cpp */, 26488 26501 A1CC564E1F46145200A4555B /* JSPaymentComplete.h */, 26502 959CED13279CB6B50017A8FF /* JSPaymentCompleteDetails.cpp */, 26503 959CED12279CB6B50017A8FF /* JSPaymentCompleteDetails.h */, 26489 26504 A1CC565D1F46146000A4555B /* JSPaymentCurrencyAmount.cpp */, 26490 26505 A1CC56631F46146600A4555B /* JSPaymentCurrencyAmount.h */, … … 26528 26543 A1F6CFFC1FE096210018078C /* ApplePayModifier.h */, 26529 26544 A1F6CFFE1FE096210018078C /* ApplePayModifier.idl */, 26545 959CED19279CB82E0017A8FF /* ApplePayPaymentCompleteDetails.h */, 26546 959CED1B279CB82E0017A8FF /* ApplePayPaymentCompleteDetails.idl */, 26530 26547 A1DF5AA11F7EE1130058A477 /* ApplePayPaymentHandler.cpp */, 26531 26548 A1DF5AA01F7EE1130058A477 /* ApplePayPaymentHandler.h */, … … 26551 26568 A1F76B581F44D3B20014C318 /* PaymentComplete.h */, 26552 26569 A1F76B5A1F44D3B20014C318 /* PaymentComplete.idl */, 26570 959CED0D279CB6850017A8FF /* PaymentCompleteDetails.h */, 26571 959CED0F279CB6850017A8FF /* PaymentCompleteDetails.idl */, 26553 26572 A1F76B341F44C60F0014C318 /* PaymentCurrencyAmount.h */, 26554 26573 A1F76B361F44C60F0014C318 /* PaymentCurrencyAmount.idl */, … … 33391 33410 A12C59F02035FCAB0012236B /* ApplePayPaymentAuthorizationResult.h in Headers */, 33392 33411 1A8A64521D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h in Headers */, 33412 959CED1C279CB82F0017A8FF /* ApplePayPaymentCompleteDetails.h in Headers */, 33393 33413 7C6522FB1E00C90900677F22 /* ApplePayPaymentContact.h in Headers */, 33394 33414 A1DF5AA21F7EE1130058A477 /* ApplePayPaymentHandler.h in Headers */, … … 35091 35111 A12C59FB20360B000012236B /* JSApplePayPaymentAuthorizationResult.h in Headers */, 35092 35112 1AE96A8B1D1A0DDD00B86768 /* JSApplePayPaymentAuthorizedEvent.h in Headers */, 35113 959CED21279CB88B0017A8FF /* JSApplePayPaymentCompleteDetails.h in Headers */, 35093 35114 7C6523161E00DBB500677F22 /* JSApplePayPaymentContact.h in Headers */, 35094 35115 7C6523181E00DBB500677F22 /* JSApplePayPaymentMethod.h in Headers */, … … 35557 35578 A1CC56671F46147A00A4555B /* JSPaymentAddress.h in Headers */, 35558 35579 A1CC56691F46148000A4555B /* JSPaymentComplete.h in Headers */, 35580 959CED14279CB6B60017A8FF /* JSPaymentCompleteDetails.h in Headers */, 35559 35581 A1CC566B1F46148500A4555B /* JSPaymentCurrencyAmount.h in Headers */, 35560 35582 A1CC566D1F46148A00A4555B /* JSPaymentDetailsBase.h in Headers */, … … 36449 36471 A1F76B431F44CF7F0014C318 /* PaymentAddress.h in Headers */, 36450 36472 A169B043248F037B00EE8B7B /* PaymentAPIVersion.h in Headers */, 36451 1AE96A881D1A0CEB00B86768 /* PaymentAuthorizationStatus.h in Headers */,36452 36473 A1F76B5B1F44D3B20014C318 /* PaymentComplete.h in Headers */, 36474 959CED10279CB6860017A8FF /* PaymentCompleteDetails.h in Headers */, 36453 36475 1A8A643B1D19FC5300D0E00F /* PaymentContact.h in Headers */, 36454 36476 1A58E86E1D19E42D00C0EA73 /* PaymentCoordinator.h in Headers */, -
trunk/Source/WebCore/loader/EmptyClients.cpp
r287684 r288698 427 427 void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&) final { } 428 428 #endif 429 void completePaymentSession( std::optional<PaymentAuthorizationResult>&&) final { }429 void completePaymentSession(ApplePayPaymentAuthorizationResult&&) final { } 430 430 void cancelPaymentSession() final { } 431 431 void abortPaymentSession() final { } -
trunk/Source/WebCore/testing/MockPaymentCoordinator.cpp
r282464 r288698 30 30 31 31 #include "ApplePayCouponCodeUpdate.h" 32 #include "ApplePayPaymentAuthorizationResult.h" 32 33 #include "ApplePayPaymentMethodUpdate.h" 33 34 #include "ApplePaySessionPaymentRequest.h" … … 249 250 } 250 251 251 void MockPaymentCoordinator::completePaymentSession( std::optional<PaymentAuthorizationResult>&& result)252 { 253 auto isFinalState = isFinalStateResult(result);254 m_errors = convert(WTFMove(result ->errors));252 void MockPaymentCoordinator::completePaymentSession(ApplePayPaymentAuthorizationResult&& result) 253 { 254 auto isFinalState = result.isFinalState(); 255 m_errors = convert(WTFMove(result.errors)); 255 256 256 257 if (!isFinalState) -
trunk/Source/WebCore/testing/MockPaymentCoordinator.h
r282464 r288698 108 108 void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&) final; 109 109 #endif 110 void completePaymentSession( std::optional<PaymentAuthorizationResult>&&) final;110 void completePaymentSession(ApplePayPaymentAuthorizationResult&&) final; 111 111 void abortPaymentSession() final; 112 112 void cancelPaymentSession() final; -
trunk/Source/WebKit/ChangeLog
r288696 r288698 1 2022-01-27 Devin Rousso <drousso@apple.com> 2 3 [Payment Request] allow additional payment method specific data to be passed to `complete()` 4 https://bugs.webkit.org/show_bug.cgi?id=235415 5 <rdar://problem/82970451> 6 7 Reviewed by Darin Adler. 8 9 This allows for developers/merchants to give additional details to Apple Pay on completion. 10 11 Issue: <https://github.com/w3c/payment-request/issues/981> 12 Spec PR: <https://github.com/w3c/payment-request/pull/982> 13 14 * WebProcess/ApplePay/WebPaymentCoordinator.h: 15 * WebProcess/ApplePay/WebPaymentCoordinator.cpp: 16 (WebKit::WebPaymentCoordinator::completePaymentSession): 17 * Scripts/webkit/messages.py: 18 (headers_for_type): 19 * Shared/WebCoreArgumentCoders.h: 20 * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: 21 (IPC::ArgumentCoder<WebCore::PaymentAuthorizationResult>::encode): Deleted. 22 (IPC::ArgumentCoder<WebCore::PaymentAuthorizationResult>::decode): Deleted. 23 * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: 24 * Shared/ApplePay/WebPaymentCoordinatorProxy.h: 25 * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: 26 (WebKit::WebPaymentCoordinatorProxy::completePaymentSession): 27 * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: 28 (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession): 29 * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: 30 * Platform/cocoa/PaymentAuthorizationPresenter.h: 31 * Platform/cocoa/PaymentAuthorizationPresenter.mm: 32 (WebKit::toPKPaymentAuthorizationStatus): 33 (WebKit::PaymentAuthorizationPresenter::completePaymentSession): 34 Replace `PaymentAuthorizationResult` with `ApplePayPaymentAuthorizationResult` so that data 35 doesn't need to be moved between identically shaped structs for sending to the UIProcess. 36 37 * Platform/cocoa/WKPaymentAuthorizationDelegate.h: 38 * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: 39 Add some WKA hooks. 40 1 41 2022-01-27 Elliott Williams <emw@apple.com> 2 42 -
trunk/Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h
r283320 r288698 44 44 class PaymentSessionError; 45 45 struct ApplePayCouponCodeUpdate; 46 struct ApplePayPaymentAuthorizationResult; 46 47 struct ApplePayPaymentMethodUpdate; 47 48 struct ApplePayShippingContactUpdate; … … 76 77 void completeMerchantValidation(const WebCore::PaymentMerchantSession&); 77 78 void completePaymentMethodSelection(std::optional<WebCore::ApplePayPaymentMethodUpdate>&&); 78 void completePaymentSession( const std::optional<WebCore::PaymentAuthorizationResult>&);79 void completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&&); 79 80 void completeShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate>&&); 80 81 void completeShippingMethodSelection(std::optional<WebCore::ApplePayShippingMethodUpdate>&&); -
trunk/Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.mm
r287660 r288698 36 36 #import <WebCore/ApplePayErrorCode.h> 37 37 #import <WebCore/ApplePayErrorContactField.h> 38 #import <WebCore/ApplePayPaymentAuthorizationResult.h> 38 39 #import <WebCore/ApplePayPaymentMethodUpdate.h> 39 40 #import <WebCore/ApplePayShippingContactUpdate.h> 40 41 #import <WebCore/ApplePayShippingMethodUpdate.h> 41 #import <WebCore/PaymentAuthorizationStatus.h>42 42 #import <WebCore/PaymentMerchantSession.h> 43 43 #import <WebCore/PaymentSummaryItems.h> … … 67 67 // how to convert themselves to and from their platform representations. 68 68 69 static PKPaymentAuthorizationStatus toPKPaymentAuthorizationStatus(WebCore:: PaymentAuthorizationStatus status)69 static PKPaymentAuthorizationStatus toPKPaymentAuthorizationStatus(WebCore::ApplePayPaymentAuthorizationResult::Status status) 70 70 { 71 71 switch (status) { 72 case WebCore:: PaymentAuthorizationStatus::Success:72 case WebCore::ApplePayPaymentAuthorizationResult::Success: 73 73 return PKPaymentAuthorizationStatusSuccess; 74 case WebCore::PaymentAuthorizationStatus::Failure: 74 75 case WebCore::ApplePayPaymentAuthorizationResult::Failure: 75 76 return PKPaymentAuthorizationStatusFailure; 76 case WebCore::PaymentAuthorizationStatus::PINRequired: 77 78 case WebCore::ApplePayPaymentAuthorizationResult::PINRequired: 77 79 return PKPaymentAuthorizationStatusPINRequired; 78 case WebCore::PaymentAuthorizationStatus::PINIncorrect: 80 81 case WebCore::ApplePayPaymentAuthorizationResult::PINIncorrect: 79 82 return PKPaymentAuthorizationStatusPINIncorrect; 80 case WebCore::PaymentAuthorizationStatus::PINLockout: 83 84 case WebCore::ApplePayPaymentAuthorizationResult::PINLockout: 81 85 return PKPaymentAuthorizationStatusPINLockout; 86 87 default: 88 ASSERT_NOT_REACHED(); 89 return PKPaymentAuthorizationStatusFailure; 82 90 } 83 91 } … … 232 240 } 233 241 234 void PaymentAuthorizationPresenter::completePaymentSession(const std::optional<WebCore::PaymentAuthorizationResult>& result) 235 { 236 ASSERT(platformDelegate()); 237 auto status = result ? toPKPaymentAuthorizationStatus(result->status) : PKPaymentAuthorizationStatusSuccess; 238 RetainPtr<NSArray> errors = result ? toNSErrors(result->errors) : @[ ]; 242 void PaymentAuthorizationPresenter::completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&& result) 243 { 244 ASSERT(platformDelegate()); 245 ASSERT(result.isFinalState()); 246 247 auto status = toPKPaymentAuthorizationStatus(result.status); 248 auto errors = toNSErrors(result.errors); 249 250 #if defined(PaymentAuthorizationPresenterAdditions_completePaymentSession) 251 PaymentAuthorizationPresenterAdditions_completePaymentSession 252 #endif 253 239 254 [platformDelegate() completePaymentSession:status errors:errors.get()]; 240 255 } -
trunk/Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.h
r283320 r288698 67 67 - (void)invalidate; 68 68 69 #if USE(APPLE_INTERNAL_SDK) 70 #include <WebKitAdditions/WKPaymentAuthorizationDelegateAdditionsAfter.h> 71 #endif 72 69 73 @end 70 74 -
trunk/Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.mm
r285521 r288698 160 160 } 161 161 162 #if USE(APPLE_INTERNAL_SDK) 163 #include <WebKitAdditions/WKPaymentAuthorizationDelegateAdditionsAfter.mm> 164 #endif 165 162 166 @end 163 167 -
trunk/Source/WebKit/Scripts/webkit/messages.py
r288416 r288698 809 809 'WebCore::PasteboardURL': ['<WebCore/Pasteboard.h>'], 810 810 'WebCore::PasteboardWebContent': ['<WebCore/Pasteboard.h>'], 811 'WebCore::PaymentAuthorizationResult': ['<WebCore/ApplePaySessionPaymentRequest.h>'],812 811 'WebCore::PixelFormat': ['<WebCore/ImageBufferBackend.h>'], 813 812 'WebCore::PlatformTextTrackData': ['<WebCore/PlatformTextTrack.h>'], -
trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.cpp
r284142 r288698 35 35 #include "WebProcessProxy.h" 36 36 #include <WebCore/ApplePayCouponCodeUpdate.h> 37 #include <WebCore/ApplePayPaymentAuthorizationResult.h> 37 38 #include <WebCore/ApplePayPaymentMethodUpdate.h> 38 39 #include <WebCore/ApplePayShippingContactUpdate.h> 39 40 #include <WebCore/ApplePayShippingMethodUpdate.h> 40 #include <WebCore/PaymentAuthorizationStatus.h>41 41 42 42 #define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, messageSenderConnection()) … … 185 185 #endif // ENABLE(APPLE_PAY_COUPON_CODE) 186 186 187 void WebPaymentCoordinatorProxy::completePaymentSession( const std::optional<WebCore::PaymentAuthorizationResult>& result)187 void WebPaymentCoordinatorProxy::completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&& result) 188 188 { 189 189 // It's possible that the payment has been canceled already. … … 191 191 return; 192 192 193 bool isFinalState Result = WebCore::isFinalStateResult(result);194 195 platformCompletePaymentSession( result);196 197 if (!isFinalState Result) {193 bool isFinalState = result.isFinalState(); 194 195 platformCompletePaymentSession(WTFMove(result)); 196 197 if (!isFinalState) { 198 198 m_state = State::Active; 199 199 return; -
trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h
r283320 r288698 48 48 49 49 namespace WebCore { 50 enum class PaymentAuthorizationStatus;51 50 class Payment; 52 51 class PaymentContact; … … 140 139 void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&); 141 140 #endif 142 void completePaymentSession( const std::optional<WebCore::PaymentAuthorizationResult>&);141 void completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&&); 143 142 void abortPaymentSession(); 144 143 void cancelPaymentSession(); … … 168 167 void platformCompleteCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&); 169 168 #endif 170 void platformCompletePaymentSession( const std::optional<WebCore::PaymentAuthorizationResult>&);169 void platformCompletePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&&); 171 170 void platformHidePaymentUI(); 172 171 #if PLATFORM(COCOA) -
trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in
r283320 r288698 39 39 CompleteCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate> update) 40 40 #endif 41 CompletePaymentSession(st d::optional<WebCore::PaymentAuthorizationResult>result)41 CompletePaymentSession(struct WebCore::ApplePayPaymentAuthorizationResult result) 42 42 AbortPaymentSession() 43 43 CancelPaymentSession() -
trunk/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm
r285521 r288698 42 42 #import <WebCore/ApplePayShippingMethod.h> 43 43 #import <WebCore/ApplePayShippingMethodUpdate.h> 44 #import <WebCore/PaymentAuthorizationStatus.h>45 44 #import <WebCore/PaymentHeaders.h> 46 45 #import <wtf/BlockPtr.h> … … 349 348 } 350 349 351 void WebPaymentCoordinatorProxy::platformCompletePaymentSession( const std::optional<WebCore::PaymentAuthorizationResult>& result)352 { 353 m_authorizationPresenter->completePaymentSession( result);350 void WebPaymentCoordinatorProxy::platformCompletePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&& result) 351 { 352 m_authorizationPresenter->completePaymentSession(WTFMove(result)); 354 353 } 355 354 -
trunk/Source/WebKit/Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm
r284009 r288698 33 33 #import "WebPageProxy.h" 34 34 #import <UIKit/UIViewController.h> 35 #import <WebCore/PaymentAuthorizationStatus.h>36 35 #import <pal/cocoa/PassKitSoftLink.h> 37 36 -
trunk/Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm
r288543 r288698 59 59 #if ENABLE(APPLE_PAY) 60 60 #import "DataReference.h" 61 #import <WebCore/PaymentAuthorizationStatus.h>62 61 #import <pal/cocoa/PassKitSoftLink.h> 63 62 #endif … … 125 124 126 125 return WebCore::Payment { WTFMove(*payment) }; 127 }128 129 void ArgumentCoder<WebCore::PaymentAuthorizationResult>::encode(Encoder& encoder, const WebCore::PaymentAuthorizationResult& result)130 {131 encoder << result.status;132 encoder << result.errors;133 }134 135 std::optional<WebCore::PaymentAuthorizationResult> ArgumentCoder<WebCore::PaymentAuthorizationResult>::decode(Decoder& decoder)136 {137 std::optional<WebCore::PaymentAuthorizationStatus> status;138 decoder >> status;139 if (!status)140 return std::nullopt;141 142 std::optional<Vector<RefPtr<WebCore::ApplePayError>>> errors;143 decoder >> errors;144 if (!errors)145 return std::nullopt;146 147 return {{ WTFMove(*status), WTFMove(*errors) }};148 126 } 149 127 -
trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h
r287496 r288698 646 646 }; 647 647 648 template<> struct ArgumentCoder<WebCore::PaymentAuthorizationResult> {649 static void encode(Encoder&, const WebCore::PaymentAuthorizationResult&);650 static std::optional<WebCore::PaymentAuthorizationResult> decode(Decoder&);651 };652 653 648 template<> struct ArgumentCoder<WebCore::PaymentContact> { 654 649 static void encode(Encoder&, const WebCore::PaymentContact&); -
trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.cpp
r283320 r288698 38 38 #include "WebProcess.h" 39 39 #include <WebCore/ApplePayCouponCodeUpdate.h> 40 #include <WebCore/ApplePayPaymentAuthorizationResult.h> 40 41 #include <WebCore/ApplePayPaymentMethodUpdate.h> 41 42 #include <WebCore/ApplePayShippingContactUpdate.h> … … 138 139 #endif // ENABLE(APPLE_PAY_COUPON_CODE) 139 140 140 void WebPaymentCoordinator::completePaymentSession( std::optional<WebCore::PaymentAuthorizationResult>&& result)141 { 142 send(Messages::WebPaymentCoordinatorProxy::CompletePaymentSession( result));141 void WebPaymentCoordinator::completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&& result) 142 { 143 send(Messages::WebPaymentCoordinatorProxy::CompletePaymentSession(WTFMove(result))); 143 144 } 144 145 -
trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.h
r278712 r288698 72 72 void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&) override; 73 73 #endif 74 void completePaymentSession( std::optional<WebCore::PaymentAuthorizationResult>&&) override;74 void completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&&) override; 75 75 76 76 void abortPaymentSession() override; -
trunk/Source/WebKitLegacy/mac/ChangeLog
r288692 r288698 1 2022-01-27 Devin Rousso <drousso@apple.com> 2 3 [Payment Request] allow additional payment method specific data to be passed to `complete()` 4 https://bugs.webkit.org/show_bug.cgi?id=235415 5 <rdar://problem/82970451> 6 7 Reviewed by Darin Adler. 8 9 * WebCoreSupport/WebPaymentCoordinatorClient.h: 10 * WebCoreSupport/WebPaymentCoordinatorClient.mm: 11 (WebPaymentCoordinatorClient::completePaymentSession): 12 1 13 2022-01-27 Elliott Williams <emw@apple.com> 2 14 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.h
r278630 r288698 49 49 void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&) override; 50 50 #endif 51 void completePaymentSession( std::optional<WebCore::PaymentAuthorizationResult>&&) override;51 void completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&&) override; 52 52 void abortPaymentSession() override; 53 53 void cancelPaymentSession() override; -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm
r278630 r288698 93 93 #endif // ENABLE(APPLE_PAY_COUPON_CODE) 94 94 95 void WebPaymentCoordinatorClient::completePaymentSession( std::optional<WebCore::PaymentAuthorizationResult>&&)95 void WebPaymentCoordinatorClient::completePaymentSession(WebCore::ApplePayPaymentAuthorizationResult&&) 96 96 { 97 97 }
Note: See TracChangeset
for help on using the changeset viewer.