haikuwebkit/Source/WebCore/Modules/applepay/ApplePayCouponCodeChangedEv...

53 lines
2.0 KiB
C++
Raw Permalink Normal View History

/*
* Copyright (C) 2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
[Payment Request] upstream new features https://bugs.webkit.org/show_bug.cgi?id=226740 <rdar://problem/78963132> Reviewed by Andy Estes. Source/WebCore: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) Tests: http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html http/tests/paymentrequest/ApplePayModifier-total.https.html http/tests/paymentrequest/paymentmethodchange-couponCode.https.html http/tests/paymentrequest/paymentrequest-couponCode.https.html http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html * Modules/applepay/ApplePayCouponCodeUpdate.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. * Modules/applepay/ApplePayCouponCodeUpdate.h: Renamed from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.h. (WebCore::ApplePayCouponCodeUpdate::encode const): (WebCore::ApplePayCouponCodeUpdate::decode): Object used to update the payment request via `ApplePaySession.prototype.completeCouponCodeChange` when responding to the user modifying the coupon code. * Modules/applepay/ApplePayErrorCode.idl: * Modules/applepay/ApplePayErrorCode.h: Add `"couponCodeInvalid"` and `"couponCodeExpired"`. * Modules/applepay/ApplePayLineItem.idl: * Modules/applepay/ApplePayLineItem.h: (WebCore::ApplePayLineItem::encode const): (WebCore::ApplePayLineItem::decode): * Modules/applepay/ApplePayPaymentTiming.idl: Added. * Modules/applepay/ApplePayPaymentTiming.h: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.idl: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.h: Added. Add members that indicate whether this line item is immediate, recurring, or deferred. Depending on that timing, additional members are added for further configuration (e.g. the start and/or end date of a recurring payment, it's frequency, etc.). * Modules/applepay/ApplePayShippingMethod.idl: * Modules/applepay/ApplePayShippingMethod.h: (WebCore::ApplePayShippingMethod::encode const): (WebCore::ApplePayShippingMethod::decode): * Modules/applepay/ApplePayDateComponentsRange.idl: Added. * Modules/applepay/ApplePayDateComponentsRange.h: Added. (WebCore::ApplePayDateComponentsRange::encode const): (WebCore::ApplePayDateComponentsRange::decode): * Modules/applepay/ApplePayDateComponents.idl: Added. * Modules/applepay/ApplePayDateComponents.h: Added. (WebCore::ApplePayDateComponents::encode const): (WebCore::ApplePayDateComponents::decode): Add members that can be used to indicate the estimated shipping dates for this shipping method. * Modules/applepay/ApplePayRequestBase.idl: * Modules/applepay/ApplePayRequestBase.h: * Modules/applepay/ApplePayRequestBase.cpp: (WebCore::convertAndValidate): * Modules/applepay/ApplePaySessionPaymentRequest.h: (WebCore::ApplePaySessionPaymentRequest::supportsCouponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setSupportsCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::couponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::shippingContactEditingMode const): Added. (WebCore::ApplePaySessionPaymentRequest::setShippingContactEditingMode): Added. * Modules/applepay/ApplePayShippingContactEditingMode.idl: Added. * Modules/applepay/ApplePayShippingContactEditingMode.h: Added. Add members that indicate: - whether this payment request supports a coupon code at all - the initial coupon code (assuming the above) - whether this payment request allows editing the shipping contact (i.e. in-store pickup does not) * dom/EventNames.h: * dom/EventNames.in: * Modules/applepay/ApplePayCouponCodeChangedEvent.idl: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.h: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.cpp: Added. (WebCore::ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent): (WebCore::ApplePayCouponCodeChangedEvent::eventInterface const): Add a `"couponcodechange"` event that is dispatched whenever the user modifies the coupon code for an `ApplePaySession`. * Modules/applepay/ApplePayCouponCodeDetails.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeDetails.idl. * Modules/applepay/ApplePayCouponCodeDetails.h: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. Used as the `object methodData` when a `PaymentMethodChangeEvent` is dispatched for a `PaymentRequest`. * Modules/applepay/ApplePaySession.idl: * Modules/applepay/ApplePaySession.h: * Modules/applepay/ApplePaySession.cpp: (WebCore::convertAndValidate): (WebCore::ApplePaySession::completeCouponCodeChange): Added. (WebCore::ApplePaySession::didChangeCouponCode): Renamed from `WebCore::ApplePaySession::didChangePaymentMethodMode`. (WebCore::ApplePaySession::canSuspendWithoutCanceling const): (WebCore::ApplePaySession::canBegin const): (WebCore::ApplePaySession::canAbort const): (WebCore::ApplePaySession::canCancel const): (WebCore::ApplePaySession::canCompleteShippingMethodSelection const): (WebCore::ApplePaySession::canCompleteShippingContactSelection const): (WebCore::ApplePaySession::canCompletePaymentMethodSelection const): (WebCore::ApplePaySession::canCompleteCouponCodeChange const): Renamed from `WebCore::ApplePaySession::canCompletePaymentMethodModeChange const`. (WebCore::ApplePaySession::canCompletePayment const): (WebCore::ApplePaySession::isFinalState const): * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: (WebCore::ApplePayPaymentHandler::paymentMethodUpdated): (WebCore::ApplePayPaymentHandler::didChangeCouponCode): Renamed from `WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode`. Add methods for JS to call and state logic to handle coupon code changes. * Modules/applepay/PaymentCoordinator.h: * Modules/applepay/PaymentCoordinator.cpp: (WebCore::PaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::PaymentCoordinator::completePaymentMethodModeChange`. (WebCore::PaymentCoordinator::didChangeCouponCode): Renamed from `WebCore::PaymentCoordinator::didChangePaymentMethodMode`. * Modules/applepay/PaymentCoordinatorClient.h: * loader/EmptyClients.cpp: (WebCore::EmptyPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebCore::EmptyPaymentCoordinatorClient::completePaymentMethodModeChange`. Plumbing up to WebKit. * Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm: (WebCore::toDate): Added. (WebCore::toCalendarUnit): Added. (WebCore::toPKPaymentSummaryItem): Convert WebCore objects to PassKit objects. * testing/MockPaymentCoordinator.idl: * testing/MockPaymentCoordinator.h: * testing/MockPaymentCoordinator.cpp: (WebCore::MockPaymentCoordinator::showPaymentUI): (WebCore::MockPaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::MockPaymentCoordinator::completePaymentMethodModeChange`. (WebCore::MockPaymentCoordinator::changeCouponCode): Added. * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm: (WebCore::PaymentAPIVersion::current): * Modules/applepay/PaymentHeaders.h: * Modules/applepay/PaymentSession.h: * Modules/applepay/ApplePayLineItemData.idl: Removed. * Modules/applepay/ApplePayLineItemData.h: Removed. * Modules/applepay/ApplePayShippingMethodData.idl: Removed. * Modules/applepay/ApplePayShippingMethodData.h: Removed. Remove unnecessary base types after r275169. * PlatformMac.cmake: * SourcesCocoa.txt: * WebCore.xcodeproj/project.pbxproj: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: Source/WebCore/PAL: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * pal/cocoa/PassKitSoftLink.h: * pal/cocoa/PassKitSoftLink.mm: * pal/spi/cocoa/PassKitSPI.h: Source/WebKit: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * Platform/cocoa/PaymentAuthorizationViewController.mm: (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didChangeCouponCode:handler:]): Added. * Platform/ios/PaymentAuthorizationController.mm: (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didChangeCouponCode:handler:]): Added. * Platform/cocoa/PaymentAuthorizationPresenter.h: * Platform/cocoa/PaymentAuthorizationPresenter.mm: (WebKit::toPKPaymentErrorCode): (WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange): Renamed from `WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange`. * Platform/cocoa/WKPaymentAuthorizationDelegate.h: * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: (-[WKPaymentAuthorizationDelegate completeCouponCodeChange:]): Added. (toDateComponents): Added. (toDateComponentsRange): Added. (toShippingMethod): (-[WKPaymentAuthorizationDelegate _didChangeCouponCode:completion:]): Added. Add plumbing from/to PassKit for coupon code changes. * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: * Shared/ApplePay/WebPaymentCoordinatorProxy.h: * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinatorProxy::presenterDidChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode`. (WebKit::WebPaymentCoordinatorProxy::canBegin const): (WebKit::WebPaymentCoordinatorProxy::canCancel const): (WebKit::WebPaymentCoordinatorProxy::canCompletePayment const): (WebKit::WebPaymentCoordinatorProxy::canAbort const): * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toNSDateComponents): Added. (WebKit::toPKDateComponentsRange): Added. (WebKit::toPKShippingMethod): (WebKit::toPKShippingContactEditingMode): Added. (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): (WebKit::WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange`. Convert PassKit objects to/from WebCore objects. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode): (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode): * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: * WebProcess/ApplePay/WebPaymentCoordinator.h: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinator::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinator::didChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinator::didChangePaymentMethodMode`. Plumbing into/from WebCore. Source/WebKitLegacy/mac: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * WebCoreSupport/WebPaymentCoordinatorClient.h: * WebCoreSupport/WebPaymentCoordinatorClient.mm: (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`. Source/WTF: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * wtf/PlatformHave.h: * wtf/PlatformEnableCocoa.h: LayoutTests: * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-total.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-total.https-expected.txt: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https.html: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https-expected.txt: Added. * http/tests/ssl/applepay/ApplePayError-expected.txt: * platform/ios-wk2/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/238613@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-08 22:15:18 +00:00
#include "config.h"
#include "ApplePayCouponCodeChangedEvent.h"
[Payment Request] upstream new features https://bugs.webkit.org/show_bug.cgi?id=226740 <rdar://problem/78963132> Reviewed by Andy Estes. Source/WebCore: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) Tests: http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html http/tests/paymentrequest/ApplePayModifier-total.https.html http/tests/paymentrequest/paymentmethodchange-couponCode.https.html http/tests/paymentrequest/paymentrequest-couponCode.https.html http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html * Modules/applepay/ApplePayCouponCodeUpdate.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. * Modules/applepay/ApplePayCouponCodeUpdate.h: Renamed from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.h. (WebCore::ApplePayCouponCodeUpdate::encode const): (WebCore::ApplePayCouponCodeUpdate::decode): Object used to update the payment request via `ApplePaySession.prototype.completeCouponCodeChange` when responding to the user modifying the coupon code. * Modules/applepay/ApplePayErrorCode.idl: * Modules/applepay/ApplePayErrorCode.h: Add `"couponCodeInvalid"` and `"couponCodeExpired"`. * Modules/applepay/ApplePayLineItem.idl: * Modules/applepay/ApplePayLineItem.h: (WebCore::ApplePayLineItem::encode const): (WebCore::ApplePayLineItem::decode): * Modules/applepay/ApplePayPaymentTiming.idl: Added. * Modules/applepay/ApplePayPaymentTiming.h: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.idl: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.h: Added. Add members that indicate whether this line item is immediate, recurring, or deferred. Depending on that timing, additional members are added for further configuration (e.g. the start and/or end date of a recurring payment, it's frequency, etc.). * Modules/applepay/ApplePayShippingMethod.idl: * Modules/applepay/ApplePayShippingMethod.h: (WebCore::ApplePayShippingMethod::encode const): (WebCore::ApplePayShippingMethod::decode): * Modules/applepay/ApplePayDateComponentsRange.idl: Added. * Modules/applepay/ApplePayDateComponentsRange.h: Added. (WebCore::ApplePayDateComponentsRange::encode const): (WebCore::ApplePayDateComponentsRange::decode): * Modules/applepay/ApplePayDateComponents.idl: Added. * Modules/applepay/ApplePayDateComponents.h: Added. (WebCore::ApplePayDateComponents::encode const): (WebCore::ApplePayDateComponents::decode): Add members that can be used to indicate the estimated shipping dates for this shipping method. * Modules/applepay/ApplePayRequestBase.idl: * Modules/applepay/ApplePayRequestBase.h: * Modules/applepay/ApplePayRequestBase.cpp: (WebCore::convertAndValidate): * Modules/applepay/ApplePaySessionPaymentRequest.h: (WebCore::ApplePaySessionPaymentRequest::supportsCouponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setSupportsCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::couponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::shippingContactEditingMode const): Added. (WebCore::ApplePaySessionPaymentRequest::setShippingContactEditingMode): Added. * Modules/applepay/ApplePayShippingContactEditingMode.idl: Added. * Modules/applepay/ApplePayShippingContactEditingMode.h: Added. Add members that indicate: - whether this payment request supports a coupon code at all - the initial coupon code (assuming the above) - whether this payment request allows editing the shipping contact (i.e. in-store pickup does not) * dom/EventNames.h: * dom/EventNames.in: * Modules/applepay/ApplePayCouponCodeChangedEvent.idl: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.h: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.cpp: Added. (WebCore::ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent): (WebCore::ApplePayCouponCodeChangedEvent::eventInterface const): Add a `"couponcodechange"` event that is dispatched whenever the user modifies the coupon code for an `ApplePaySession`. * Modules/applepay/ApplePayCouponCodeDetails.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeDetails.idl. * Modules/applepay/ApplePayCouponCodeDetails.h: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. Used as the `object methodData` when a `PaymentMethodChangeEvent` is dispatched for a `PaymentRequest`. * Modules/applepay/ApplePaySession.idl: * Modules/applepay/ApplePaySession.h: * Modules/applepay/ApplePaySession.cpp: (WebCore::convertAndValidate): (WebCore::ApplePaySession::completeCouponCodeChange): Added. (WebCore::ApplePaySession::didChangeCouponCode): Renamed from `WebCore::ApplePaySession::didChangePaymentMethodMode`. (WebCore::ApplePaySession::canSuspendWithoutCanceling const): (WebCore::ApplePaySession::canBegin const): (WebCore::ApplePaySession::canAbort const): (WebCore::ApplePaySession::canCancel const): (WebCore::ApplePaySession::canCompleteShippingMethodSelection const): (WebCore::ApplePaySession::canCompleteShippingContactSelection const): (WebCore::ApplePaySession::canCompletePaymentMethodSelection const): (WebCore::ApplePaySession::canCompleteCouponCodeChange const): Renamed from `WebCore::ApplePaySession::canCompletePaymentMethodModeChange const`. (WebCore::ApplePaySession::canCompletePayment const): (WebCore::ApplePaySession::isFinalState const): * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: (WebCore::ApplePayPaymentHandler::paymentMethodUpdated): (WebCore::ApplePayPaymentHandler::didChangeCouponCode): Renamed from `WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode`. Add methods for JS to call and state logic to handle coupon code changes. * Modules/applepay/PaymentCoordinator.h: * Modules/applepay/PaymentCoordinator.cpp: (WebCore::PaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::PaymentCoordinator::completePaymentMethodModeChange`. (WebCore::PaymentCoordinator::didChangeCouponCode): Renamed from `WebCore::PaymentCoordinator::didChangePaymentMethodMode`. * Modules/applepay/PaymentCoordinatorClient.h: * loader/EmptyClients.cpp: (WebCore::EmptyPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebCore::EmptyPaymentCoordinatorClient::completePaymentMethodModeChange`. Plumbing up to WebKit. * Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm: (WebCore::toDate): Added. (WebCore::toCalendarUnit): Added. (WebCore::toPKPaymentSummaryItem): Convert WebCore objects to PassKit objects. * testing/MockPaymentCoordinator.idl: * testing/MockPaymentCoordinator.h: * testing/MockPaymentCoordinator.cpp: (WebCore::MockPaymentCoordinator::showPaymentUI): (WebCore::MockPaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::MockPaymentCoordinator::completePaymentMethodModeChange`. (WebCore::MockPaymentCoordinator::changeCouponCode): Added. * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm: (WebCore::PaymentAPIVersion::current): * Modules/applepay/PaymentHeaders.h: * Modules/applepay/PaymentSession.h: * Modules/applepay/ApplePayLineItemData.idl: Removed. * Modules/applepay/ApplePayLineItemData.h: Removed. * Modules/applepay/ApplePayShippingMethodData.idl: Removed. * Modules/applepay/ApplePayShippingMethodData.h: Removed. Remove unnecessary base types after r275169. * PlatformMac.cmake: * SourcesCocoa.txt: * WebCore.xcodeproj/project.pbxproj: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: Source/WebCore/PAL: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * pal/cocoa/PassKitSoftLink.h: * pal/cocoa/PassKitSoftLink.mm: * pal/spi/cocoa/PassKitSPI.h: Source/WebKit: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * Platform/cocoa/PaymentAuthorizationViewController.mm: (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didChangeCouponCode:handler:]): Added. * Platform/ios/PaymentAuthorizationController.mm: (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didChangeCouponCode:handler:]): Added. * Platform/cocoa/PaymentAuthorizationPresenter.h: * Platform/cocoa/PaymentAuthorizationPresenter.mm: (WebKit::toPKPaymentErrorCode): (WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange): Renamed from `WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange`. * Platform/cocoa/WKPaymentAuthorizationDelegate.h: * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: (-[WKPaymentAuthorizationDelegate completeCouponCodeChange:]): Added. (toDateComponents): Added. (toDateComponentsRange): Added. (toShippingMethod): (-[WKPaymentAuthorizationDelegate _didChangeCouponCode:completion:]): Added. Add plumbing from/to PassKit for coupon code changes. * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: * Shared/ApplePay/WebPaymentCoordinatorProxy.h: * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinatorProxy::presenterDidChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode`. (WebKit::WebPaymentCoordinatorProxy::canBegin const): (WebKit::WebPaymentCoordinatorProxy::canCancel const): (WebKit::WebPaymentCoordinatorProxy::canCompletePayment const): (WebKit::WebPaymentCoordinatorProxy::canAbort const): * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toNSDateComponents): Added. (WebKit::toPKDateComponentsRange): Added. (WebKit::toPKShippingMethod): (WebKit::toPKShippingContactEditingMode): Added. (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): (WebKit::WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange`. Convert PassKit objects to/from WebCore objects. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode): (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode): * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: * WebProcess/ApplePay/WebPaymentCoordinator.h: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinator::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinator::didChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinator::didChangePaymentMethodMode`. Plumbing into/from WebCore. Source/WebKitLegacy/mac: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * WebCoreSupport/WebPaymentCoordinatorClient.h: * WebCoreSupport/WebPaymentCoordinatorClient.mm: (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`. Source/WTF: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * wtf/PlatformHave.h: * wtf/PlatformEnableCocoa.h: LayoutTests: * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-total.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-total.https-expected.txt: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https.html: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https-expected.txt: Added. * http/tests/ssl/applepay/ApplePayError-expected.txt: * platform/ios-wk2/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/238613@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-08 22:15:18 +00:00
#if ENABLE(APPLE_PAY_COUPON_CODE)
[Payment Request] upstream new features https://bugs.webkit.org/show_bug.cgi?id=226740 <rdar://problem/78963132> Reviewed by Andy Estes. Source/WebCore: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) Tests: http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html http/tests/paymentrequest/ApplePayModifier-total.https.html http/tests/paymentrequest/paymentmethodchange-couponCode.https.html http/tests/paymentrequest/paymentrequest-couponCode.https.html http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html * Modules/applepay/ApplePayCouponCodeUpdate.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. * Modules/applepay/ApplePayCouponCodeUpdate.h: Renamed from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.h. (WebCore::ApplePayCouponCodeUpdate::encode const): (WebCore::ApplePayCouponCodeUpdate::decode): Object used to update the payment request via `ApplePaySession.prototype.completeCouponCodeChange` when responding to the user modifying the coupon code. * Modules/applepay/ApplePayErrorCode.idl: * Modules/applepay/ApplePayErrorCode.h: Add `"couponCodeInvalid"` and `"couponCodeExpired"`. * Modules/applepay/ApplePayLineItem.idl: * Modules/applepay/ApplePayLineItem.h: (WebCore::ApplePayLineItem::encode const): (WebCore::ApplePayLineItem::decode): * Modules/applepay/ApplePayPaymentTiming.idl: Added. * Modules/applepay/ApplePayPaymentTiming.h: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.idl: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.h: Added. Add members that indicate whether this line item is immediate, recurring, or deferred. Depending on that timing, additional members are added for further configuration (e.g. the start and/or end date of a recurring payment, it's frequency, etc.). * Modules/applepay/ApplePayShippingMethod.idl: * Modules/applepay/ApplePayShippingMethod.h: (WebCore::ApplePayShippingMethod::encode const): (WebCore::ApplePayShippingMethod::decode): * Modules/applepay/ApplePayDateComponentsRange.idl: Added. * Modules/applepay/ApplePayDateComponentsRange.h: Added. (WebCore::ApplePayDateComponentsRange::encode const): (WebCore::ApplePayDateComponentsRange::decode): * Modules/applepay/ApplePayDateComponents.idl: Added. * Modules/applepay/ApplePayDateComponents.h: Added. (WebCore::ApplePayDateComponents::encode const): (WebCore::ApplePayDateComponents::decode): Add members that can be used to indicate the estimated shipping dates for this shipping method. * Modules/applepay/ApplePayRequestBase.idl: * Modules/applepay/ApplePayRequestBase.h: * Modules/applepay/ApplePayRequestBase.cpp: (WebCore::convertAndValidate): * Modules/applepay/ApplePaySessionPaymentRequest.h: (WebCore::ApplePaySessionPaymentRequest::supportsCouponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setSupportsCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::couponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::shippingContactEditingMode const): Added. (WebCore::ApplePaySessionPaymentRequest::setShippingContactEditingMode): Added. * Modules/applepay/ApplePayShippingContactEditingMode.idl: Added. * Modules/applepay/ApplePayShippingContactEditingMode.h: Added. Add members that indicate: - whether this payment request supports a coupon code at all - the initial coupon code (assuming the above) - whether this payment request allows editing the shipping contact (i.e. in-store pickup does not) * dom/EventNames.h: * dom/EventNames.in: * Modules/applepay/ApplePayCouponCodeChangedEvent.idl: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.h: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.cpp: Added. (WebCore::ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent): (WebCore::ApplePayCouponCodeChangedEvent::eventInterface const): Add a `"couponcodechange"` event that is dispatched whenever the user modifies the coupon code for an `ApplePaySession`. * Modules/applepay/ApplePayCouponCodeDetails.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeDetails.idl. * Modules/applepay/ApplePayCouponCodeDetails.h: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. Used as the `object methodData` when a `PaymentMethodChangeEvent` is dispatched for a `PaymentRequest`. * Modules/applepay/ApplePaySession.idl: * Modules/applepay/ApplePaySession.h: * Modules/applepay/ApplePaySession.cpp: (WebCore::convertAndValidate): (WebCore::ApplePaySession::completeCouponCodeChange): Added. (WebCore::ApplePaySession::didChangeCouponCode): Renamed from `WebCore::ApplePaySession::didChangePaymentMethodMode`. (WebCore::ApplePaySession::canSuspendWithoutCanceling const): (WebCore::ApplePaySession::canBegin const): (WebCore::ApplePaySession::canAbort const): (WebCore::ApplePaySession::canCancel const): (WebCore::ApplePaySession::canCompleteShippingMethodSelection const): (WebCore::ApplePaySession::canCompleteShippingContactSelection const): (WebCore::ApplePaySession::canCompletePaymentMethodSelection const): (WebCore::ApplePaySession::canCompleteCouponCodeChange const): Renamed from `WebCore::ApplePaySession::canCompletePaymentMethodModeChange const`. (WebCore::ApplePaySession::canCompletePayment const): (WebCore::ApplePaySession::isFinalState const): * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: (WebCore::ApplePayPaymentHandler::paymentMethodUpdated): (WebCore::ApplePayPaymentHandler::didChangeCouponCode): Renamed from `WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode`. Add methods for JS to call and state logic to handle coupon code changes. * Modules/applepay/PaymentCoordinator.h: * Modules/applepay/PaymentCoordinator.cpp: (WebCore::PaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::PaymentCoordinator::completePaymentMethodModeChange`. (WebCore::PaymentCoordinator::didChangeCouponCode): Renamed from `WebCore::PaymentCoordinator::didChangePaymentMethodMode`. * Modules/applepay/PaymentCoordinatorClient.h: * loader/EmptyClients.cpp: (WebCore::EmptyPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebCore::EmptyPaymentCoordinatorClient::completePaymentMethodModeChange`. Plumbing up to WebKit. * Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm: (WebCore::toDate): Added. (WebCore::toCalendarUnit): Added. (WebCore::toPKPaymentSummaryItem): Convert WebCore objects to PassKit objects. * testing/MockPaymentCoordinator.idl: * testing/MockPaymentCoordinator.h: * testing/MockPaymentCoordinator.cpp: (WebCore::MockPaymentCoordinator::showPaymentUI): (WebCore::MockPaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::MockPaymentCoordinator::completePaymentMethodModeChange`. (WebCore::MockPaymentCoordinator::changeCouponCode): Added. * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm: (WebCore::PaymentAPIVersion::current): * Modules/applepay/PaymentHeaders.h: * Modules/applepay/PaymentSession.h: * Modules/applepay/ApplePayLineItemData.idl: Removed. * Modules/applepay/ApplePayLineItemData.h: Removed. * Modules/applepay/ApplePayShippingMethodData.idl: Removed. * Modules/applepay/ApplePayShippingMethodData.h: Removed. Remove unnecessary base types after r275169. * PlatformMac.cmake: * SourcesCocoa.txt: * WebCore.xcodeproj/project.pbxproj: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: Source/WebCore/PAL: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * pal/cocoa/PassKitSoftLink.h: * pal/cocoa/PassKitSoftLink.mm: * pal/spi/cocoa/PassKitSPI.h: Source/WebKit: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * Platform/cocoa/PaymentAuthorizationViewController.mm: (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didChangeCouponCode:handler:]): Added. * Platform/ios/PaymentAuthorizationController.mm: (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didChangeCouponCode:handler:]): Added. * Platform/cocoa/PaymentAuthorizationPresenter.h: * Platform/cocoa/PaymentAuthorizationPresenter.mm: (WebKit::toPKPaymentErrorCode): (WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange): Renamed from `WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange`. * Platform/cocoa/WKPaymentAuthorizationDelegate.h: * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: (-[WKPaymentAuthorizationDelegate completeCouponCodeChange:]): Added. (toDateComponents): Added. (toDateComponentsRange): Added. (toShippingMethod): (-[WKPaymentAuthorizationDelegate _didChangeCouponCode:completion:]): Added. Add plumbing from/to PassKit for coupon code changes. * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: * Shared/ApplePay/WebPaymentCoordinatorProxy.h: * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinatorProxy::presenterDidChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode`. (WebKit::WebPaymentCoordinatorProxy::canBegin const): (WebKit::WebPaymentCoordinatorProxy::canCancel const): (WebKit::WebPaymentCoordinatorProxy::canCompletePayment const): (WebKit::WebPaymentCoordinatorProxy::canAbort const): * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toNSDateComponents): Added. (WebKit::toPKDateComponentsRange): Added. (WebKit::toPKShippingMethod): (WebKit::toPKShippingContactEditingMode): Added. (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): (WebKit::WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange`. Convert PassKit objects to/from WebCore objects. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode): (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode): * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: * WebProcess/ApplePay/WebPaymentCoordinator.h: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinator::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinator::didChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinator::didChangePaymentMethodMode`. Plumbing into/from WebCore. Source/WebKitLegacy/mac: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * WebCoreSupport/WebPaymentCoordinatorClient.h: * WebCoreSupport/WebPaymentCoordinatorClient.mm: (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`. Source/WTF: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * wtf/PlatformHave.h: * wtf/PlatformEnableCocoa.h: LayoutTests: * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-total.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-total.https-expected.txt: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https.html: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https-expected.txt: Added. * http/tests/ssl/applepay/ApplePayError-expected.txt: * platform/ios-wk2/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/238613@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-08 22:15:18 +00:00
#include <wtf/IsoMallocInlines.h>
namespace WebCore {
[Payment Request] upstream new features https://bugs.webkit.org/show_bug.cgi?id=226740 <rdar://problem/78963132> Reviewed by Andy Estes. Source/WebCore: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) Tests: http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html http/tests/paymentrequest/ApplePayModifier-total.https.html http/tests/paymentrequest/paymentmethodchange-couponCode.https.html http/tests/paymentrequest/paymentrequest-couponCode.https.html http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html * Modules/applepay/ApplePayCouponCodeUpdate.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. * Modules/applepay/ApplePayCouponCodeUpdate.h: Renamed from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.h. (WebCore::ApplePayCouponCodeUpdate::encode const): (WebCore::ApplePayCouponCodeUpdate::decode): Object used to update the payment request via `ApplePaySession.prototype.completeCouponCodeChange` when responding to the user modifying the coupon code. * Modules/applepay/ApplePayErrorCode.idl: * Modules/applepay/ApplePayErrorCode.h: Add `"couponCodeInvalid"` and `"couponCodeExpired"`. * Modules/applepay/ApplePayLineItem.idl: * Modules/applepay/ApplePayLineItem.h: (WebCore::ApplePayLineItem::encode const): (WebCore::ApplePayLineItem::decode): * Modules/applepay/ApplePayPaymentTiming.idl: Added. * Modules/applepay/ApplePayPaymentTiming.h: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.idl: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.h: Added. Add members that indicate whether this line item is immediate, recurring, or deferred. Depending on that timing, additional members are added for further configuration (e.g. the start and/or end date of a recurring payment, it's frequency, etc.). * Modules/applepay/ApplePayShippingMethod.idl: * Modules/applepay/ApplePayShippingMethod.h: (WebCore::ApplePayShippingMethod::encode const): (WebCore::ApplePayShippingMethod::decode): * Modules/applepay/ApplePayDateComponentsRange.idl: Added. * Modules/applepay/ApplePayDateComponentsRange.h: Added. (WebCore::ApplePayDateComponentsRange::encode const): (WebCore::ApplePayDateComponentsRange::decode): * Modules/applepay/ApplePayDateComponents.idl: Added. * Modules/applepay/ApplePayDateComponents.h: Added. (WebCore::ApplePayDateComponents::encode const): (WebCore::ApplePayDateComponents::decode): Add members that can be used to indicate the estimated shipping dates for this shipping method. * Modules/applepay/ApplePayRequestBase.idl: * Modules/applepay/ApplePayRequestBase.h: * Modules/applepay/ApplePayRequestBase.cpp: (WebCore::convertAndValidate): * Modules/applepay/ApplePaySessionPaymentRequest.h: (WebCore::ApplePaySessionPaymentRequest::supportsCouponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setSupportsCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::couponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::shippingContactEditingMode const): Added. (WebCore::ApplePaySessionPaymentRequest::setShippingContactEditingMode): Added. * Modules/applepay/ApplePayShippingContactEditingMode.idl: Added. * Modules/applepay/ApplePayShippingContactEditingMode.h: Added. Add members that indicate: - whether this payment request supports a coupon code at all - the initial coupon code (assuming the above) - whether this payment request allows editing the shipping contact (i.e. in-store pickup does not) * dom/EventNames.h: * dom/EventNames.in: * Modules/applepay/ApplePayCouponCodeChangedEvent.idl: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.h: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.cpp: Added. (WebCore::ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent): (WebCore::ApplePayCouponCodeChangedEvent::eventInterface const): Add a `"couponcodechange"` event that is dispatched whenever the user modifies the coupon code for an `ApplePaySession`. * Modules/applepay/ApplePayCouponCodeDetails.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeDetails.idl. * Modules/applepay/ApplePayCouponCodeDetails.h: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. Used as the `object methodData` when a `PaymentMethodChangeEvent` is dispatched for a `PaymentRequest`. * Modules/applepay/ApplePaySession.idl: * Modules/applepay/ApplePaySession.h: * Modules/applepay/ApplePaySession.cpp: (WebCore::convertAndValidate): (WebCore::ApplePaySession::completeCouponCodeChange): Added. (WebCore::ApplePaySession::didChangeCouponCode): Renamed from `WebCore::ApplePaySession::didChangePaymentMethodMode`. (WebCore::ApplePaySession::canSuspendWithoutCanceling const): (WebCore::ApplePaySession::canBegin const): (WebCore::ApplePaySession::canAbort const): (WebCore::ApplePaySession::canCancel const): (WebCore::ApplePaySession::canCompleteShippingMethodSelection const): (WebCore::ApplePaySession::canCompleteShippingContactSelection const): (WebCore::ApplePaySession::canCompletePaymentMethodSelection const): (WebCore::ApplePaySession::canCompleteCouponCodeChange const): Renamed from `WebCore::ApplePaySession::canCompletePaymentMethodModeChange const`. (WebCore::ApplePaySession::canCompletePayment const): (WebCore::ApplePaySession::isFinalState const): * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: (WebCore::ApplePayPaymentHandler::paymentMethodUpdated): (WebCore::ApplePayPaymentHandler::didChangeCouponCode): Renamed from `WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode`. Add methods for JS to call and state logic to handle coupon code changes. * Modules/applepay/PaymentCoordinator.h: * Modules/applepay/PaymentCoordinator.cpp: (WebCore::PaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::PaymentCoordinator::completePaymentMethodModeChange`. (WebCore::PaymentCoordinator::didChangeCouponCode): Renamed from `WebCore::PaymentCoordinator::didChangePaymentMethodMode`. * Modules/applepay/PaymentCoordinatorClient.h: * loader/EmptyClients.cpp: (WebCore::EmptyPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebCore::EmptyPaymentCoordinatorClient::completePaymentMethodModeChange`. Plumbing up to WebKit. * Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm: (WebCore::toDate): Added. (WebCore::toCalendarUnit): Added. (WebCore::toPKPaymentSummaryItem): Convert WebCore objects to PassKit objects. * testing/MockPaymentCoordinator.idl: * testing/MockPaymentCoordinator.h: * testing/MockPaymentCoordinator.cpp: (WebCore::MockPaymentCoordinator::showPaymentUI): (WebCore::MockPaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::MockPaymentCoordinator::completePaymentMethodModeChange`. (WebCore::MockPaymentCoordinator::changeCouponCode): Added. * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm: (WebCore::PaymentAPIVersion::current): * Modules/applepay/PaymentHeaders.h: * Modules/applepay/PaymentSession.h: * Modules/applepay/ApplePayLineItemData.idl: Removed. * Modules/applepay/ApplePayLineItemData.h: Removed. * Modules/applepay/ApplePayShippingMethodData.idl: Removed. * Modules/applepay/ApplePayShippingMethodData.h: Removed. Remove unnecessary base types after r275169. * PlatformMac.cmake: * SourcesCocoa.txt: * WebCore.xcodeproj/project.pbxproj: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: Source/WebCore/PAL: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * pal/cocoa/PassKitSoftLink.h: * pal/cocoa/PassKitSoftLink.mm: * pal/spi/cocoa/PassKitSPI.h: Source/WebKit: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * Platform/cocoa/PaymentAuthorizationViewController.mm: (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didChangeCouponCode:handler:]): Added. * Platform/ios/PaymentAuthorizationController.mm: (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didChangeCouponCode:handler:]): Added. * Platform/cocoa/PaymentAuthorizationPresenter.h: * Platform/cocoa/PaymentAuthorizationPresenter.mm: (WebKit::toPKPaymentErrorCode): (WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange): Renamed from `WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange`. * Platform/cocoa/WKPaymentAuthorizationDelegate.h: * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: (-[WKPaymentAuthorizationDelegate completeCouponCodeChange:]): Added. (toDateComponents): Added. (toDateComponentsRange): Added. (toShippingMethod): (-[WKPaymentAuthorizationDelegate _didChangeCouponCode:completion:]): Added. Add plumbing from/to PassKit for coupon code changes. * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: * Shared/ApplePay/WebPaymentCoordinatorProxy.h: * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinatorProxy::presenterDidChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode`. (WebKit::WebPaymentCoordinatorProxy::canBegin const): (WebKit::WebPaymentCoordinatorProxy::canCancel const): (WebKit::WebPaymentCoordinatorProxy::canCompletePayment const): (WebKit::WebPaymentCoordinatorProxy::canAbort const): * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toNSDateComponents): Added. (WebKit::toPKDateComponentsRange): Added. (WebKit::toPKShippingMethod): (WebKit::toPKShippingContactEditingMode): Added. (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): (WebKit::WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange`. Convert PassKit objects to/from WebCore objects. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode): (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode): * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: * WebProcess/ApplePay/WebPaymentCoordinator.h: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinator::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinator::didChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinator::didChangePaymentMethodMode`. Plumbing into/from WebCore. Source/WebKitLegacy/mac: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * WebCoreSupport/WebPaymentCoordinatorClient.h: * WebCoreSupport/WebPaymentCoordinatorClient.mm: (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`. Source/WTF: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * wtf/PlatformHave.h: * wtf/PlatformEnableCocoa.h: LayoutTests: * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-total.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-total.https-expected.txt: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https.html: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https-expected.txt: Added. * http/tests/ssl/applepay/ApplePayError-expected.txt: * platform/ios-wk2/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/238613@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-08 22:15:18 +00:00
WTF_MAKE_ISO_ALLOCATED_IMPL(ApplePayCouponCodeChangedEvent);
ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent(const AtomString& type, String&& couponCode)
: Event(type, CanBubble::No, IsCancelable::No)
, m_couponCode(WTFMove(couponCode))
{
}
ApplePayCouponCodeChangedEvent::~ApplePayCouponCodeChangedEvent() = default;
EventInterface ApplePayCouponCodeChangedEvent::eventInterface() const
{
return ApplePayCouponCodeChangedEventInterfaceType;
}
} // namespace WebCore
[Payment Request] upstream new features https://bugs.webkit.org/show_bug.cgi?id=226740 <rdar://problem/78963132> Reviewed by Andy Estes. Source/WebCore: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) Tests: http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html http/tests/paymentrequest/ApplePayModifier-total.https.html http/tests/paymentrequest/paymentmethodchange-couponCode.https.html http/tests/paymentrequest/paymentrequest-couponCode.https.html http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html * Modules/applepay/ApplePayCouponCodeUpdate.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. * Modules/applepay/ApplePayCouponCodeUpdate.h: Renamed from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.h. (WebCore::ApplePayCouponCodeUpdate::encode const): (WebCore::ApplePayCouponCodeUpdate::decode): Object used to update the payment request via `ApplePaySession.prototype.completeCouponCodeChange` when responding to the user modifying the coupon code. * Modules/applepay/ApplePayErrorCode.idl: * Modules/applepay/ApplePayErrorCode.h: Add `"couponCodeInvalid"` and `"couponCodeExpired"`. * Modules/applepay/ApplePayLineItem.idl: * Modules/applepay/ApplePayLineItem.h: (WebCore::ApplePayLineItem::encode const): (WebCore::ApplePayLineItem::decode): * Modules/applepay/ApplePayPaymentTiming.idl: Added. * Modules/applepay/ApplePayPaymentTiming.h: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.idl: Added. * Modules/applepay/ApplePayRecurringPaymentDateUnit.h: Added. Add members that indicate whether this line item is immediate, recurring, or deferred. Depending on that timing, additional members are added for further configuration (e.g. the start and/or end date of a recurring payment, it's frequency, etc.). * Modules/applepay/ApplePayShippingMethod.idl: * Modules/applepay/ApplePayShippingMethod.h: (WebCore::ApplePayShippingMethod::encode const): (WebCore::ApplePayShippingMethod::decode): * Modules/applepay/ApplePayDateComponentsRange.idl: Added. * Modules/applepay/ApplePayDateComponentsRange.h: Added. (WebCore::ApplePayDateComponentsRange::encode const): (WebCore::ApplePayDateComponentsRange::decode): * Modules/applepay/ApplePayDateComponents.idl: Added. * Modules/applepay/ApplePayDateComponents.h: Added. (WebCore::ApplePayDateComponents::encode const): (WebCore::ApplePayDateComponents::decode): Add members that can be used to indicate the estimated shipping dates for this shipping method. * Modules/applepay/ApplePayRequestBase.idl: * Modules/applepay/ApplePayRequestBase.h: * Modules/applepay/ApplePayRequestBase.cpp: (WebCore::convertAndValidate): * Modules/applepay/ApplePaySessionPaymentRequest.h: (WebCore::ApplePaySessionPaymentRequest::supportsCouponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setSupportsCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::couponCode const): Added. (WebCore::ApplePaySessionPaymentRequest::setCouponCode): Added. (WebCore::ApplePaySessionPaymentRequest::shippingContactEditingMode const): Added. (WebCore::ApplePaySessionPaymentRequest::setShippingContactEditingMode): Added. * Modules/applepay/ApplePayShippingContactEditingMode.idl: Added. * Modules/applepay/ApplePayShippingContactEditingMode.h: Added. Add members that indicate: - whether this payment request supports a coupon code at all - the initial coupon code (assuming the above) - whether this payment request allows editing the shipping contact (i.e. in-store pickup does not) * dom/EventNames.h: * dom/EventNames.in: * Modules/applepay/ApplePayCouponCodeChangedEvent.idl: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.h: Added. * Modules/applepay/ApplePayCouponCodeChangedEvent.cpp: Added. (WebCore::ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent): (WebCore::ApplePayCouponCodeChangedEvent::eventInterface const): Add a `"couponcodechange"` event that is dispatched whenever the user modifies the coupon code for an `ApplePaySession`. * Modules/applepay/ApplePayCouponCodeDetails.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeDetails.idl. * Modules/applepay/ApplePayCouponCodeDetails.h: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl. Used as the `object methodData` when a `PaymentMethodChangeEvent` is dispatched for a `PaymentRequest`. * Modules/applepay/ApplePaySession.idl: * Modules/applepay/ApplePaySession.h: * Modules/applepay/ApplePaySession.cpp: (WebCore::convertAndValidate): (WebCore::ApplePaySession::completeCouponCodeChange): Added. (WebCore::ApplePaySession::didChangeCouponCode): Renamed from `WebCore::ApplePaySession::didChangePaymentMethodMode`. (WebCore::ApplePaySession::canSuspendWithoutCanceling const): (WebCore::ApplePaySession::canBegin const): (WebCore::ApplePaySession::canAbort const): (WebCore::ApplePaySession::canCancel const): (WebCore::ApplePaySession::canCompleteShippingMethodSelection const): (WebCore::ApplePaySession::canCompleteShippingContactSelection const): (WebCore::ApplePaySession::canCompletePaymentMethodSelection const): (WebCore::ApplePaySession::canCompleteCouponCodeChange const): Renamed from `WebCore::ApplePaySession::canCompletePaymentMethodModeChange const`. (WebCore::ApplePaySession::canCompletePayment const): (WebCore::ApplePaySession::isFinalState const): * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: (WebCore::ApplePayPaymentHandler::paymentMethodUpdated): (WebCore::ApplePayPaymentHandler::didChangeCouponCode): Renamed from `WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode`. Add methods for JS to call and state logic to handle coupon code changes. * Modules/applepay/PaymentCoordinator.h: * Modules/applepay/PaymentCoordinator.cpp: (WebCore::PaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::PaymentCoordinator::completePaymentMethodModeChange`. (WebCore::PaymentCoordinator::didChangeCouponCode): Renamed from `WebCore::PaymentCoordinator::didChangePaymentMethodMode`. * Modules/applepay/PaymentCoordinatorClient.h: * loader/EmptyClients.cpp: (WebCore::EmptyPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebCore::EmptyPaymentCoordinatorClient::completePaymentMethodModeChange`. Plumbing up to WebKit. * Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm: (WebCore::toDate): Added. (WebCore::toCalendarUnit): Added. (WebCore::toPKPaymentSummaryItem): Convert WebCore objects to PassKit objects. * testing/MockPaymentCoordinator.idl: * testing/MockPaymentCoordinator.h: * testing/MockPaymentCoordinator.cpp: (WebCore::MockPaymentCoordinator::showPaymentUI): (WebCore::MockPaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::MockPaymentCoordinator::completePaymentMethodModeChange`. (WebCore::MockPaymentCoordinator::changeCouponCode): Added. * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm: (WebCore::PaymentAPIVersion::current): * Modules/applepay/PaymentHeaders.h: * Modules/applepay/PaymentSession.h: * Modules/applepay/ApplePayLineItemData.idl: Removed. * Modules/applepay/ApplePayLineItemData.h: Removed. * Modules/applepay/ApplePayShippingMethodData.idl: Removed. * Modules/applepay/ApplePayShippingMethodData.h: Removed. Remove unnecessary base types after r275169. * PlatformMac.cmake: * SourcesCocoa.txt: * WebCore.xcodeproj/project.pbxproj: * DerivedSources-input.xcfilelist: * DerivedSources-output.xcfilelist: * DerivedSources.make: Source/WebCore/PAL: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * pal/cocoa/PassKitSoftLink.h: * pal/cocoa/PassKitSoftLink.mm: * pal/spi/cocoa/PassKitSPI.h: Source/WebKit: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * Platform/cocoa/PaymentAuthorizationViewController.mm: (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didChangeCouponCode:handler:]): Added. * Platform/ios/PaymentAuthorizationController.mm: (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didChangeCouponCode:handler:]): Added. * Platform/cocoa/PaymentAuthorizationPresenter.h: * Platform/cocoa/PaymentAuthorizationPresenter.mm: (WebKit::toPKPaymentErrorCode): (WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange): Renamed from `WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange`. * Platform/cocoa/WKPaymentAuthorizationDelegate.h: * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: (-[WKPaymentAuthorizationDelegate completeCouponCodeChange:]): Added. (toDateComponents): Added. (toDateComponentsRange): Added. (toShippingMethod): (-[WKPaymentAuthorizationDelegate _didChangeCouponCode:completion:]): Added. Add plumbing from/to PassKit for coupon code changes. * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: * Shared/ApplePay/WebPaymentCoordinatorProxy.h: * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinatorProxy::presenterDidChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode`. (WebKit::WebPaymentCoordinatorProxy::canBegin const): (WebKit::WebPaymentCoordinatorProxy::canCancel const): (WebKit::WebPaymentCoordinatorProxy::canCompletePayment const): (WebKit::WebPaymentCoordinatorProxy::canAbort const): * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toNSDateComponents): Added. (WebKit::toPKDateComponentsRange): Added. (WebKit::toPKShippingMethod): (WebKit::toPKShippingContactEditingMode): Added. (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): (WebKit::WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange`. Convert PassKit objects to/from WebCore objects. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode): (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode): * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: * WebProcess/ApplePay/WebPaymentCoordinator.h: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinator::completePaymentMethodModeChange`. (WebKit::WebPaymentCoordinator::didChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinator::didChangePaymentMethodMode`. Plumbing into/from WebCore. Source/WebKitLegacy/mac: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * WebCoreSupport/WebPaymentCoordinatorClient.h: * WebCoreSupport/WebPaymentCoordinatorClient.mm: (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`. Source/WTF: - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`) - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`) - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`) - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`) - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`) * wtf/PlatformHave.h: * wtf/PlatformEnableCocoa.h: LayoutTests: * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https-expected.txt: Added. * http/tests/paymentrequest/ApplePayModifier-total.https.html: Added. * http/tests/paymentrequest/ApplePayModifier-total.https-expected.txt: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https.html: Added. * http/tests/paymentrequest/paymentmethodchange-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-couponCode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html: Added. * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https-expected.txt: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html: Added. * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https-expected.txt: Added. * http/tests/ssl/applepay/ApplePayError-expected.txt: * platform/ios-wk2/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/238613@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278630 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-08 22:15:18 +00:00
#endif // ENABLE(APPLE_PAY_COUPON_CODE)