⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 278630 in webkit


Ignore:
Timestamp:
Jun 8, 2021, 3:15:18 PM (5 years ago)
Author:
Devin Rousso
Message:

[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:
Location:
trunk
Files:
14 added
64 edited
9 copied
8 moved

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r278629 r278630  
     12021-06-08  Devin Rousso  <drousso@apple.com>
     2
     3        [Payment Request] upstream new features
     4        https://bugs.webkit.org/show_bug.cgi?id=226740
     5        <rdar://problem/78963132>
     6
     7        Reviewed by Andy Estes.
     8
     9        * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html: Added.
     10        * http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https-expected.txt: Added.
     11        * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html: Added.
     12        * http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https-expected.txt: Added.
     13        * http/tests/paymentrequest/ApplePayModifier-total.https.html: Added.
     14        * http/tests/paymentrequest/ApplePayModifier-total.https-expected.txt: Added.
     15        * http/tests/paymentrequest/paymentmethodchange-couponCode.https.html: Added.
     16        * http/tests/paymentrequest/paymentmethodchange-couponCode.https-expected.txt: Added.
     17        * http/tests/paymentrequest/paymentrequest-couponCode.https.html: Added.
     18        * http/tests/paymentrequest/paymentrequest-couponCode.https-expected.txt: Added.
     19        * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html: Added.
     20        * http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https-expected.txt: Added.
     21        * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html: Added.
     22        * http/tests/paymentrequest/paymentrequest-supportsCouponCode.https-expected.txt: Added.
     23        * http/tests/ssl/applepay/ApplePayError-expected.txt:
     24
     25        * platform/ios-wk2/TestExpectations:
     26        * platform/mac-wk2/TestExpectations:
     27
    1282021-06-08  Truitt Savell  <tsavell@apple.com>
    229
  • trunk/LayoutTests/http/tests/ssl/applepay/ApplePayError-expected.txt

    r267644 r278630  
    1010
    1111SETUP:
    12 PASS new ApplePayError([]) threw exception TypeError: Argument 1 ('errorCode') to the ApplePayError constructor must be one of: "unknown", "shippingContactInvalid", "billingContactInvalid", "addressUnserviceable".
     12PASS new ApplePayError([]) threw exception TypeError: Argument 1 ('errorCode') to the ApplePayError constructor must be one of: "unknown", "shippingContactInvalid", "billingContactInvalid", "addressUnserviceable", "couponCodeInvalid", "couponCodeExpired".
    1313
    1414SETUP:
    15 PASS new ApplePayError('') threw exception TypeError: Argument 1 ('errorCode') to the ApplePayError constructor must be one of: "unknown", "shippingContactInvalid", "billingContactInvalid", "addressUnserviceable".
     15PASS new ApplePayError('') threw exception TypeError: Argument 1 ('errorCode') to the ApplePayError constructor must be one of: "unknown", "shippingContactInvalid", "billingContactInvalid", "addressUnserviceable", "couponCodeInvalid", "couponCodeExpired".
    1616
    1717SETUP:
  • trunk/LayoutTests/platform/ios-wk2/TestExpectations

    r277865 r278630  
    6161
    6262http/tests/paymentrequest [ Pass ]
     63http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html [ Skip ]
     64http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html [ Skip ]
     65http/tests/paymentrequest/ApplePayModifier-total.https.html [ Skip ]
     66http/tests/paymentrequest/paymentmethodchange-couponCode.https.html [ Skip ]
     67http/tests/paymentrequest/paymentrequest-couponCode.https.html [ Skip ]
     68http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html [ Skip ]
     69http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html [ Skip ]
    6370imported/w3c/web-platform-tests/payment-request [ Pass ]
    6471webkit.org/b/175611 imported/w3c/web-platform-tests/payment-request/allowpaymentrequest/allowpaymentrequest-attribute-cross-origin-bc-containers.https.html [ Skip ]
  • trunk/LayoutTests/platform/mac-wk2/TestExpectations

    r278629 r278630  
    5555
    5656http/tests/paymentrequest [ Pass ]
     57http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html [ Skip ]
     58http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html [ Skip ]
     59http/tests/paymentrequest/ApplePayModifier-total.https.html [ Skip ]
     60http/tests/paymentrequest/paymentmethodchange-couponCode.https.html [ Skip ]
     61http/tests/paymentrequest/paymentrequest-couponCode.https.html [ Skip ]
     62http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html [ Skip ]
     63http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html [ Skip ]
    5764http/tests/inspector/paymentrequest [ Pass ]
    5865imported/w3c/web-platform-tests/payment-request [ Pass ]
  • trunk/Source/WTF/ChangeLog

    r278619 r278630  
     12021-06-08  Devin Rousso  <drousso@apple.com>
     2
     3        [Payment Request] upstream new features
     4        https://bugs.webkit.org/show_bug.cgi?id=226740
     5        <rdar://problem/78963132>
     6
     7        Reviewed by Andy Estes.
     8
     9         - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`)
     10         - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`)
     11         - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`)
     12         - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`)
     13         - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`)
     14
     15        * wtf/PlatformHave.h:
     16        * wtf/PlatformEnableCocoa.h:
     17
    1182021-06-08  Chris Dumez  <cdumez@apple.com>
    219
  • trunk/Source/WTF/wtf/PlatformEnableCocoa.h

    r278618 r278630  
    6060#endif
    6161
     62#if !defined(ENABLE_APPLE_PAY_COUPON_CODE) && HAVE(PASSKIT_COUPON_CODE)
     63#define ENABLE_APPLE_PAY_COUPON_CODE 1
     64#endif
     65
     66#if !defined(ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM) && HAVE(PASSKIT_DEFERRED_SUMMARY_ITEM)
     67#define ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM 1
     68#endif
     69
    6270#if !defined(ENABLE_APPLE_PAY_INSTALLMENTS) && HAVE(PASSKIT_INSTALLMENTS)
    6371#define ENABLE_APPLE_PAY_INSTALLMENTS 1
     
    6876#endif
    6977
     78#if !defined(ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE) && HAVE(PASSKIT_SHIPPING_CONTACT_EDITING_MODE)
     79#define ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE 1
     80#endif
     81
     82#if !defined(ENABLE_APPLE_PAY_RECURRING_LINE_ITEM) && HAVE(PASSKIT_RECURRING_SUMMARY_ITEM)
     83#define ENABLE_APPLE_PAY_RECURRING_LINE_ITEM 1
     84#endif
     85
    7086#if !defined(ENABLE_APPLE_PAY_REMOTE_UI) && !PLATFORM(MAC) && !PLATFORM(MACCATALYST) && !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
    7187#define ENABLE_APPLE_PAY_REMOTE_UI 1
     88#endif
     89
     90#if !defined(ENABLE_APPLE_PAY_SESSION_V11) && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 110300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 140500))
     91#define ENABLE_APPLE_PAY_SESSION_V11 1
     92#endif
     93
     94#if !defined(ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE) && HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     95#define ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE 1
    7296#endif
    7397
  • trunk/Source/WTF/wtf/PlatformHave.h

    r278590 r278630  
    709709#endif
    710710
     711#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 120000) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 150000)
     712#define HAVE_PASSKIT_RECURRING_SUMMARY_ITEM 1
     713#define HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM 1
     714#define HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE 1
     715#define HAVE_PASSKIT_COUPON_CODE 1
     716#define HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE 1
     717#endif
     718
    711719#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) || PLATFORM(IOS) || PLATFORM(MACCATALYST)
    712720#define HAVE_QUICKLOOK_THUMBNAILING 1
  • trunk/Source/WebCore/ChangeLog

    r278627 r278630  
     12021-06-08  Devin Rousso  <drousso@apple.com>
     2
     3        [Payment Request] upstream new features
     4        https://bugs.webkit.org/show_bug.cgi?id=226740
     5        <rdar://problem/78963132>
     6
     7        Reviewed by Andy Estes.
     8
     9         - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`)
     10         - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`)
     11         - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`)
     12         - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`)
     13         - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`)
     14
     15        Tests: http/tests/paymentrequest/ApplePayModifier-additionalLineItems.https.html
     16               http/tests/paymentrequest/ApplePayModifier-additionalShippingMethods.https.html
     17               http/tests/paymentrequest/ApplePayModifier-total.https.html
     18               http/tests/paymentrequest/paymentmethodchange-couponCode.https.html
     19               http/tests/paymentrequest/paymentrequest-couponCode.https.html
     20               http/tests/paymentrequest/paymentrequest-shippingContactEditingMode.https.html
     21               http/tests/paymentrequest/paymentrequest-supportsCouponCode.https.html
     22
     23        * Modules/applepay/ApplePayCouponCodeUpdate.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl.
     24        * Modules/applepay/ApplePayCouponCodeUpdate.h: Renamed from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.h.
     25        (WebCore::ApplePayCouponCodeUpdate::encode const):
     26        (WebCore::ApplePayCouponCodeUpdate::decode):
     27        Object used to update the payment request via `ApplePaySession.prototype.completeCouponCodeChange`
     28        when responding to the user modifying the coupon code.
     29
     30        * Modules/applepay/ApplePayErrorCode.idl:
     31        * Modules/applepay/ApplePayErrorCode.h:
     32        Add `"couponCodeInvalid"` and `"couponCodeExpired"`.
     33
     34        * Modules/applepay/ApplePayLineItem.idl:
     35        * Modules/applepay/ApplePayLineItem.h:
     36        (WebCore::ApplePayLineItem::encode const):
     37        (WebCore::ApplePayLineItem::decode):
     38        * Modules/applepay/ApplePayPaymentTiming.idl: Added.
     39        * Modules/applepay/ApplePayPaymentTiming.h: Added.
     40        * Modules/applepay/ApplePayRecurringPaymentDateUnit.idl: Added.
     41        * Modules/applepay/ApplePayRecurringPaymentDateUnit.h: Added.
     42        Add members that indicate whether this line item is immediate, recurring, or deferred.
     43        Depending on that timing, additional members are added for further configuration (e.g. the
     44        start and/or end date of a recurring payment, it's frequency, etc.).
     45
     46        * Modules/applepay/ApplePayShippingMethod.idl:
     47        * Modules/applepay/ApplePayShippingMethod.h:
     48        (WebCore::ApplePayShippingMethod::encode const):
     49        (WebCore::ApplePayShippingMethod::decode):
     50        * Modules/applepay/ApplePayDateComponentsRange.idl: Added.
     51        * Modules/applepay/ApplePayDateComponentsRange.h: Added.
     52        (WebCore::ApplePayDateComponentsRange::encode const):
     53        (WebCore::ApplePayDateComponentsRange::decode):
     54        * Modules/applepay/ApplePayDateComponents.idl: Added.
     55        * Modules/applepay/ApplePayDateComponents.h: Added.
     56        (WebCore::ApplePayDateComponents::encode const):
     57        (WebCore::ApplePayDateComponents::decode):
     58        Add members that can be used to indicate the estimated shipping dates for this shipping method.
     59
     60        * Modules/applepay/ApplePayRequestBase.idl:
     61        * Modules/applepay/ApplePayRequestBase.h:
     62        * Modules/applepay/ApplePayRequestBase.cpp:
     63        (WebCore::convertAndValidate):
     64        * Modules/applepay/ApplePaySessionPaymentRequest.h:
     65        (WebCore::ApplePaySessionPaymentRequest::supportsCouponCode const): Added.
     66        (WebCore::ApplePaySessionPaymentRequest::setSupportsCouponCode): Added.
     67        (WebCore::ApplePaySessionPaymentRequest::couponCode const): Added.
     68        (WebCore::ApplePaySessionPaymentRequest::setCouponCode): Added.
     69        (WebCore::ApplePaySessionPaymentRequest::shippingContactEditingMode const): Added.
     70        (WebCore::ApplePaySessionPaymentRequest::setShippingContactEditingMode): Added.
     71        * Modules/applepay/ApplePayShippingContactEditingMode.idl: Added.
     72        * Modules/applepay/ApplePayShippingContactEditingMode.h: Added.
     73        Add members that indicate:
     74         - whether this payment request supports a coupon code at all
     75         - the initial coupon code (assuming the above)
     76         - whether this payment request allows editing the shipping contact (i.e. in-store pickup does not)
     77
     78         * dom/EventNames.h:
     79         * dom/EventNames.in:
     80        * Modules/applepay/ApplePayCouponCodeChangedEvent.idl: Added.
     81        * Modules/applepay/ApplePayCouponCodeChangedEvent.h: Added.
     82        * Modules/applepay/ApplePayCouponCodeChangedEvent.cpp: Added.
     83        (WebCore::ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent):
     84        (WebCore::ApplePayCouponCodeChangedEvent::eventInterface const):
     85        Add a `"couponcodechange"` event that is dispatched whenever the user modifies the coupon code for an `ApplePaySession`.
     86
     87        * Modules/applepay/ApplePayCouponCodeDetails.idl: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeDetails.idl.
     88        * Modules/applepay/ApplePayCouponCodeDetails.h: Copied from Source/WebCore/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl.
     89        Used as the `object methodData` when a `PaymentMethodChangeEvent` is dispatched for a `PaymentRequest`.
     90
     91        * Modules/applepay/ApplePaySession.idl:
     92        * Modules/applepay/ApplePaySession.h:
     93        * Modules/applepay/ApplePaySession.cpp:
     94        (WebCore::convertAndValidate):
     95        (WebCore::ApplePaySession::completeCouponCodeChange): Added.
     96        (WebCore::ApplePaySession::didChangeCouponCode): Renamed from `WebCore::ApplePaySession::didChangePaymentMethodMode`.
     97        (WebCore::ApplePaySession::canSuspendWithoutCanceling const):
     98        (WebCore::ApplePaySession::canBegin const):
     99        (WebCore::ApplePaySession::canAbort const):
     100        (WebCore::ApplePaySession::canCancel const):
     101        (WebCore::ApplePaySession::canCompleteShippingMethodSelection const):
     102        (WebCore::ApplePaySession::canCompleteShippingContactSelection const):
     103        (WebCore::ApplePaySession::canCompletePaymentMethodSelection const):
     104        (WebCore::ApplePaySession::canCompleteCouponCodeChange const): Renamed from `WebCore::ApplePaySession::canCompletePaymentMethodModeChange const`.
     105        (WebCore::ApplePaySession::canCompletePayment const):
     106        (WebCore::ApplePaySession::isFinalState const):
     107        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
     108        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
     109        (WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
     110        (WebCore::ApplePayPaymentHandler::didChangeCouponCode): Renamed from `WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode`.
     111        Add methods for JS to call and state logic to handle coupon code changes.
     112
     113        * Modules/applepay/PaymentCoordinator.h:
     114        * Modules/applepay/PaymentCoordinator.cpp:
     115        (WebCore::PaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::PaymentCoordinator::completePaymentMethodModeChange`.
     116        (WebCore::PaymentCoordinator::didChangeCouponCode): Renamed from `WebCore::PaymentCoordinator::didChangePaymentMethodMode`.
     117        * Modules/applepay/PaymentCoordinatorClient.h:
     118        * loader/EmptyClients.cpp:
     119        (WebCore::EmptyPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebCore::EmptyPaymentCoordinatorClient::completePaymentMethodModeChange`.
     120        Plumbing up to WebKit.
     121
     122        * Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm:
     123        (WebCore::toDate): Added.
     124        (WebCore::toCalendarUnit): Added.
     125        (WebCore::toPKPaymentSummaryItem):
     126        Convert WebCore objects to PassKit objects.
     127
     128        * testing/MockPaymentCoordinator.idl:
     129        * testing/MockPaymentCoordinator.h:
     130        * testing/MockPaymentCoordinator.cpp:
     131        (WebCore::MockPaymentCoordinator::showPaymentUI):
     132        (WebCore::MockPaymentCoordinator::completeCouponCodeChange): Renamed from `WebCore::MockPaymentCoordinator::completePaymentMethodModeChange`.
     133        (WebCore::MockPaymentCoordinator::changeCouponCode): Added.
     134
     135        * Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm:
     136        (WebCore::PaymentAPIVersion::current):
     137
     138        * Modules/applepay/PaymentHeaders.h:
     139        * Modules/applepay/PaymentSession.h:
     140
     141        * Modules/applepay/ApplePayLineItemData.idl: Removed.
     142        * Modules/applepay/ApplePayLineItemData.h: Removed.
     143        * Modules/applepay/ApplePayShippingMethodData.idl: Removed.
     144        * Modules/applepay/ApplePayShippingMethodData.h: Removed.
     145        Remove unnecessary base types after r275169.
     146
     147        * PlatformMac.cmake:
     148        * SourcesCocoa.txt:
     149        * WebCore.xcodeproj/project.pbxproj:
     150        * DerivedSources-input.xcfilelist:
     151        * DerivedSources-output.xcfilelist:
     152        * DerivedSources.make:
     153
    11542021-06-08  Michael Catanzaro  <mcatanzaro@gnome.org>
    2155
  • trunk/Source/WebCore/DerivedSources-input.xcfilelist

    r278163 r278630  
    2525$(PROJECT_DIR)/Modules/applepay/ApplePayCancelEvent.idl
    2626$(PROJECT_DIR)/Modules/applepay/ApplePayContactField.idl
     27$(PROJECT_DIR)/Modules/applepay/ApplePayCouponCodeChangedEvent.idl
     28$(PROJECT_DIR)/Modules/applepay/ApplePayCouponCodeDetails.idl
     29$(PROJECT_DIR)/Modules/applepay/ApplePayCouponCodeUpdate.idl
     30$(PROJECT_DIR)/Modules/applepay/ApplePayDateComponents.idl
     31$(PROJECT_DIR)/Modules/applepay/ApplePayDateComponentsRange.idl
    2732$(PROJECT_DIR)/Modules/applepay/ApplePayDetailsUpdateBase.idl
    2833$(PROJECT_DIR)/Modules/applepay/ApplePayDetailsUpdateData.idl
     
    3540$(PROJECT_DIR)/Modules/applepay/ApplePayInstallmentRetailChannel.idl
    3641$(PROJECT_DIR)/Modules/applepay/ApplePayLineItem.idl
    37 $(PROJECT_DIR)/Modules/applepay/ApplePayLineItemData.idl
    3842$(PROJECT_DIR)/Modules/applepay/ApplePayMerchantCapability.idl
    3943$(PROJECT_DIR)/Modules/applepay/ApplePayPayment.idl
     
    4246$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentContact.idl
    4347$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentMethod.idl
    44 $(PROJECT_DIR)/Modules/applepay/ApplePayPaymentMethodModeDetails.idl
    45 $(PROJECT_DIR)/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl
    4648$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl
    4749$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentMethodType.idl
     
    4951$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentPass.idl
    5052$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentRequest.idl
     53$(PROJECT_DIR)/Modules/applepay/ApplePayPaymentTiming.idl
     54$(PROJECT_DIR)/Modules/applepay/ApplePayRecurringPaymentDateUnit.idl
    5155$(PROJECT_DIR)/Modules/applepay/ApplePayRequestBase.idl
    5256$(PROJECT_DIR)/Modules/applepay/ApplePaySession.idl
     
    5761$(PROJECT_DIR)/Modules/applepay/ApplePaySetupFeatureState.idl
    5862$(PROJECT_DIR)/Modules/applepay/ApplePaySetupFeatureType.idl
     63$(PROJECT_DIR)/Modules/applepay/ApplePayShippingContactEditingMode.idl
    5964$(PROJECT_DIR)/Modules/applepay/ApplePayShippingContactSelectedEvent.idl
    6065$(PROJECT_DIR)/Modules/applepay/ApplePayShippingContactUpdate.idl
    6166$(PROJECT_DIR)/Modules/applepay/ApplePayShippingMethod.idl
    62 $(PROJECT_DIR)/Modules/applepay/ApplePayShippingMethodData.idl
    6367$(PROJECT_DIR)/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl
    6468$(PROJECT_DIR)/Modules/applepay/ApplePayShippingMethodUpdate.idl
  • trunk/Source/WebCore/DerivedSources-output.xcfilelist

    r278163 r278630  
    8888$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayContactField.cpp
    8989$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayContactField.h
     90$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayCouponCodeChangedEvent.cpp
     91$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayCouponCodeChangedEvent.h
     92$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayCouponCodeDetails.cpp
     93$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayCouponCodeDetails.h
     94$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayCouponCodeUpdate.cpp
     95$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayCouponCodeUpdate.h
     96$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayDateComponents.cpp
     97$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayDateComponents.h
     98$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayDateComponentsRange.cpp
     99$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayDateComponentsRange.h
    90100$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayDetailsUpdateBase.cpp
    91101$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayDetailsUpdateBase.h
     
    108118$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayLineItem.cpp
    109119$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayLineItem.h
    110 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayLineItemData.cpp
    111 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayLineItemData.h
    112120$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayMerchantCapability.cpp
    113121$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayMerchantCapability.h
     
    124132$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethod.cpp
    125133$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethod.h
    126 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethodModeDetails.cpp
    127 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethodModeDetails.h
    128 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethodModeUpdate.cpp
    129 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethodModeUpdate.h
    130134$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethodSelectedEvent.cpp
    131135$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentMethodSelectedEvent.h
     
    138142$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentRequest.cpp
    139143$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentRequest.h
     144$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentTiming.cpp
     145$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayPaymentTiming.h
     146$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayRecurringPaymentDateUnit.cpp
     147$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayRecurringPaymentDateUnit.h
    140148$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayRequest.cpp
    141149$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayRequest.h
     
    156164$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePaySetupFeatureType.cpp
    157165$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePaySetupFeatureType.h
     166$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingContactEditingMode.cpp
     167$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingContactEditingMode.h
    158168$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingContactSelectedEvent.cpp
    159169$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingContactSelectedEvent.h
     
    162172$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingMethod.cpp
    163173$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingMethod.h
    164 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingMethodData.cpp
    165 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingMethodData.h
    166174$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingMethodSelectedEvent.cpp
    167175$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSApplePayShippingMethodSelectedEvent.h
  • trunk/Source/WebCore/DerivedSources.make

    r278163 r278630  
    5454    $(WebCore)/Modules/applepay/ApplePayCancelEvent.idl \
    5555    $(WebCore)/Modules/applepay/ApplePayContactField.idl \
     56    $(WebCore)/Modules/applepay/ApplePayCouponCodeChangedEvent.idl \
     57    $(WebCore)/Modules/applepay/ApplePayCouponCodeDetails.idl \
     58    $(WebCore)/Modules/applepay/ApplePayCouponCodeUpdate.idl \
     59    $(WebCore)/Modules/applepay/ApplePayDateComponents.idl \
     60    $(WebCore)/Modules/applepay/ApplePayDateComponentsRange.idl \
    5661    $(WebCore)/Modules/applepay/ApplePayDetailsUpdateBase.idl \
    5762    $(WebCore)/Modules/applepay/ApplePayDetailsUpdateData.idl \
     
    6469    $(WebCore)/Modules/applepay/ApplePayInstallmentRetailChannel.idl \
    6570    $(WebCore)/Modules/applepay/ApplePayLineItem.idl \
    66     $(WebCore)/Modules/applepay/ApplePayLineItemData.idl \
    6771    $(WebCore)/Modules/applepay/ApplePayMerchantCapability.idl \
    6872    $(WebCore)/Modules/applepay/ApplePayPayment.idl \
     
    7175    $(WebCore)/Modules/applepay/ApplePayPaymentContact.idl \
    7276    $(WebCore)/Modules/applepay/ApplePayPaymentMethod.idl \
    73     $(WebCore)/Modules/applepay/ApplePayPaymentMethodModeDetails.idl \
    74     $(WebCore)/Modules/applepay/ApplePayPaymentMethodModeUpdate.idl \
    7577    $(WebCore)/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl \
    7678    $(WebCore)/Modules/applepay/ApplePayPaymentMethodType.idl \
     
    7880    $(WebCore)/Modules/applepay/ApplePayPaymentPass.idl \
    7981    $(WebCore)/Modules/applepay/ApplePayPaymentRequest.idl \
     82    $(WebCore)/Modules/applepay/ApplePayPaymentTiming.idl \
     83    $(WebCore)/Modules/applepay/ApplePayRecurringPaymentDateUnit.idl \
    8084    $(WebCore)/Modules/applepay/ApplePayRequestBase.idl \
    8185    $(WebCore)/Modules/applepay/ApplePaySession.idl \
     
    8690    $(WebCore)/Modules/applepay/ApplePaySetupFeatureState.idl \
    8791    $(WebCore)/Modules/applepay/ApplePaySetupFeatureType.idl \
     92    $(WebCore)/Modules/applepay/ApplePayShippingContactEditingMode.idl \
    8893    $(WebCore)/Modules/applepay/ApplePayShippingContactSelectedEvent.idl \
    8994    $(WebCore)/Modules/applepay/ApplePayShippingContactUpdate.idl \
    9095    $(WebCore)/Modules/applepay/ApplePayShippingMethod.idl \
    91     $(WebCore)/Modules/applepay/ApplePayShippingMethodData.idl \
    9296    $(WebCore)/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl \
    9397    $(WebCore)/Modules/applepay/ApplePayShippingMethodUpdate.idl \
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeChangedEvent.cpp

    r278629 r278630  
    2424 */
    2525
    26 #pragma once
     26#include "config.h"
     27#include "ApplePayCouponCodeChangedEvent.h"
    2728
    28 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     29#if ENABLE(APPLE_PAY_COUPON_CODE)
    2930
    30 #if USE(APPLE_INTERNAL_SDK)
    31 #include <WebKitAdditions/ApplePayPaymentMethodModeDetailsAdditions.h>
    32 #endif
     31#include <wtf/IsoMallocInlines.h>
    3332
    3433namespace WebCore {
    3534
    36 struct ApplePayPaymentMethodModeDetails {
    37 #if defined(ApplePayPaymentMethodModeDetailsAdditions_members)
    38     ApplePayPaymentMethodModeDetailsAdditions_members
    39 #endif
    40 };
     35WTF_MAKE_ISO_ALLOCATED_IMPL(ApplePayCouponCodeChangedEvent);
     36
     37ApplePayCouponCodeChangedEvent::ApplePayCouponCodeChangedEvent(const AtomString& type, String&& couponCode)
     38    : Event(type, CanBubble::No, IsCancelable::No)
     39    , m_couponCode(WTFMove(couponCode))
     40{
     41}
     42
     43ApplePayCouponCodeChangedEvent::~ApplePayCouponCodeChangedEvent() = default;
     44
     45EventInterface ApplePayCouponCodeChangedEvent::eventInterface() const
     46{
     47    return ApplePayCouponCodeChangedEventInterfaceType;
     48}
    4149
    4250} // namespace WebCore
    4351
    44 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     52#endif // ENABLE(APPLE_PAY_COUPON_CODE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeChangedEvent.h

    r278629 r278630  
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     28#if ENABLE(APPLE_PAY_COUPON_CODE)
    2929
    30 #if USE(APPLE_INTERNAL_SDK)
    31 #include <WebKitAdditions/ApplePayPaymentMethodModeDetailsAdditions.h>
    32 #endif
     30#include "Event.h"
     31#include <wtf/text/WTFString.h>
    3332
    3433namespace WebCore {
    3534
    36 struct ApplePayPaymentMethodModeDetails {
    37 #if defined(ApplePayPaymentMethodModeDetailsAdditions_members)
    38     ApplePayPaymentMethodModeDetailsAdditions_members
    39 #endif
     35class ApplePayCouponCodeChangedEvent final : public Event {
     36    WTF_MAKE_ISO_ALLOCATED(ApplePayCouponCodeChangedEvent);
     37public:
     38    static Ref<ApplePayCouponCodeChangedEvent> create(const AtomString& type, String&& couponCode)
     39    {
     40        return adoptRef(*new ApplePayCouponCodeChangedEvent(type, WTFMove(couponCode)));
     41    }
     42
     43    virtual ~ApplePayCouponCodeChangedEvent();
     44
     45    const String& couponCode() const { return m_couponCode; }
     46
     47private:
     48    ApplePayCouponCodeChangedEvent(const AtomString& type, String&&);
     49
     50    // Event
     51    EventInterface eventInterface() const override;
     52
     53    const String m_couponCode;
    4054};
    4155
    4256} // namespace WebCore
    4357
    44 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     58#endif // ENABLE(APPLE_PAY_COUPON_CODE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeChangedEvent.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
    28     ExportMacro=WEBCORE_EXPORT,
    29     JSGenerateToJSObject,
    30 ] dictionary ApplePayPaymentMethodModeDetails {
     27    Conditional=APPLE_PAY_COUPON_CODE,
     28    LegacyNoInterfaceObject,
     29] interface ApplePayCouponCodeChangedEvent : Event {
     30    readonly attribute DOMString couponCode;
    3131};
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeDetails.h

    r278629 r278630  
    2424 */
    2525
    26 [
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
    28 ] dictionary ApplePayPaymentMethodModeUpdate : ApplePayDetailsUpdateBase {
    29     sequence<ApplePayError> errors;
     26#pragma once
    3027
    31     sequence<ApplePayShippingMethod> newShippingMethods;
     28#if ENABLE(APPLE_PAY_COUPON_CODE)
     29
     30#include <wtf/text/WTFString.h>
     31
     32namespace WebCore {
     33
     34struct ApplePayCouponCodeDetails {
     35    String couponCode;
    3236};
     37
     38} // namespace WebCore
     39
     40#endif // ENABLE(APPLE_PAY_COUPON_CODE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeDetails.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
     27    Conditional=APPLE_PAY_COUPON_CODE,
    2828    ExportMacro=WEBCORE_EXPORT,
    2929    JSGenerateToJSObject,
    30 ] dictionary ApplePayPaymentMethodModeDetails {
     30] dictionary ApplePayCouponCodeDetails {
     31    DOMString couponCode;
    3132};
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeUpdate.h

    r278629 r278630  
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     28#if ENABLE(APPLE_PAY_COUPON_CODE)
    2929
    3030#include "ApplePayDetailsUpdateBase.h"
     
    3636namespace WebCore {
    3737
    38 struct ApplePayPaymentMethodModeUpdate final : public ApplePayDetailsUpdateBase {
     38struct ApplePayCouponCodeUpdate final : public ApplePayDetailsUpdateBase {
    3939    Vector<RefPtr<ApplePayError>> errors;
    4040
     
    4242
    4343    template<class Encoder> void encode(Encoder&) const;
    44     template<class Decoder> static std::optional<ApplePayPaymentMethodModeUpdate> decode(Decoder&);
     44    template<class Decoder> static std::optional<ApplePayCouponCodeUpdate> decode(Decoder&);
    4545};
    4646
    4747template<class Encoder>
    48 void ApplePayPaymentMethodModeUpdate::encode(Encoder& encoder) const
     48void ApplePayCouponCodeUpdate::encode(Encoder& encoder) const
    4949{
    5050    ApplePayDetailsUpdateBase::encode(encoder);
     
    5454
    5555template<class Decoder>
    56 std::optional<ApplePayPaymentMethodModeUpdate> ApplePayPaymentMethodModeUpdate::decode(Decoder& decoder)
     56std::optional<ApplePayCouponCodeUpdate> ApplePayCouponCodeUpdate::decode(Decoder& decoder)
    5757{
    58     ApplePayPaymentMethodModeUpdate result;
     58    ApplePayCouponCodeUpdate result;
    5959
    6060    if (!result.decodeBase(decoder))
     
    7878} // namespace WebCore
    7979
    80 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     80#endif // ENABLE(APPLE_PAY_COUPON_CODE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayCouponCodeUpdate.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
    28 ] dictionary ApplePayPaymentMethodModeUpdate : ApplePayDetailsUpdateBase {
     27    Conditional=APPLE_PAY_COUPON_CODE,
     28] dictionary ApplePayCouponCodeUpdate : ApplePayDetailsUpdateBase {
    2929    sequence<ApplePayError> errors;
    3030
  • trunk/Source/WebCore/Modules/applepay/ApplePayDateComponents.h

    r278629 r278630  
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY)
    29 
    30 #if USE(APPLE_INTERNAL_SDK)
    31 #include <WebKitAdditions/ApplePayShippingMethodDataAdditions.h>
    32 #endif
     28#if ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
    3329
    3430namespace WebCore {
    3531
    36 struct ApplePayShippingMethodData {
    37 #if defined(ApplePayShippingMethodDataAdditions_members)
    38     ApplePayShippingMethodDataAdditions_members
    39 #endif
     32struct ApplePayDateComponents {
     33    std::optional<unsigned> years;
     34    std::optional<unsigned> months;
     35    std::optional<unsigned> days;
     36    std::optional<unsigned> hours;
    4037
    4138    template<class Encoder> void encode(Encoder&) const;
    42     template<class Decoder> static std::optional<ApplePayShippingMethodData> decode(Decoder&);
    43 
    44     template<class Decoder> WARN_UNUSED_RETURN bool decodeData(Decoder&);
     39    template<class Decoder> static std::optional<ApplePayDateComponents> decode(Decoder&);
    4540};
    4641
    4742template<class Encoder>
    48 void ApplePayShippingMethodData::encode(Encoder& encoder) const
     43void ApplePayDateComponents::encode(Encoder& encoder) const
    4944{
    50 #if defined(ApplePayShippingMethodDataAdditions_encode)
    51     ApplePayShippingMethodDataAdditions_encode
    52 #else
    53     UNUSED_PARAM(encoder);
    54 #endif
     45    encoder << years;
     46    encoder << months;
     47    encoder << days;
     48    encoder << hours;
    5549}
    5650
    5751template<class Decoder>
    58 std::optional<ApplePayShippingMethodData> ApplePayShippingMethodData::decode(Decoder& decoder)
     52std::optional<ApplePayDateComponents> ApplePayDateComponents::decode(Decoder& decoder)
    5953{
    60     ApplePayShippingMethodData result;
    61     if (!result.decodeData(decoder))
    62         return std::nullopt;
    63     return result;
    64 }
     54#define DECODE(name, type) \
     55    std::optional<type> name; \
     56    decoder >> name; \
     57    if (!name) \
     58        return std::nullopt; \
    6559
    66 template<class Decoder>
    67 bool ApplePayShippingMethodData::decodeData(Decoder& decoder)
    68 {
    69 #if defined(ApplePayShippingMethodDataAdditions_decodeData)
    70     ApplePayShippingMethodDataAdditions_decodeData
    71 #else
    72     UNUSED_PARAM(decoder);
    73 #endif
     60    DECODE(years, std::optional<unsigned>)
     61    DECODE(months, std::optional<unsigned>)
     62    DECODE(days, std::optional<unsigned>)
     63    DECODE(hours, std::optional<unsigned>)
    7464
    75     return true;
     65#undef DECODE
     66
     67    return {{ WTFMove(*years), WTFMove(*months), WTFMove(*days), WTFMove(*hours) }};
    7668}
    7769
    7870} // namespace WebCore
    7971
    80 #endif // ENABLE(APPLE_PAY)
     72#endif // ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayDateComponents.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
     27    Conditional=APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE,
    2828    ExportMacro=WEBCORE_EXPORT,
    2929    JSGenerateToJSObject,
    30 ] dictionary ApplePayPaymentMethodModeDetails {
     30] dictionary ApplePayDateComponents {
     31    unsigned long years;
     32    unsigned long months;
     33    unsigned long days;
     34    unsigned long hours;
    3135};
  • trunk/Source/WebCore/Modules/applepay/ApplePayDateComponentsRange.h

    r278629 r278630  
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY)
     28#if ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
    2929
    30 #if USE(APPLE_INTERNAL_SDK)
    31 #include <WebKitAdditions/ApplePayLineItemDataAdditions.h>
    32 #endif
     30#include "ApplePayDateComponents.h"
    3331
    3432namespace WebCore {
    3533
    36 struct ApplePayLineItemData {
    37 #if defined(ApplePayLineItemDataAdditions_members)
    38     ApplePayLineItemDataAdditions_members
    39 #endif
     34struct ApplePayDateComponentsRange {
     35    ApplePayDateComponents startDateComponents;
     36    ApplePayDateComponents endDateComponents;
    4037
    4138    template<class Encoder> void encode(Encoder&) const;
    42     template<class Decoder> static std::optional<ApplePayLineItemData> decode(Decoder&);
    43 
    44     template<class Decoder> WARN_UNUSED_RETURN bool decodeData(Decoder&);
     39    template<class Decoder> static std::optional<ApplePayDateComponentsRange> decode(Decoder&);
    4540};
    4641
    4742template<class Encoder>
    48 void ApplePayLineItemData::encode(Encoder& encoder) const
     43void ApplePayDateComponentsRange::encode(Encoder& encoder) const
    4944{
    50 #if defined(ApplePayLineItemDataAdditions_encode)
    51     ApplePayLineItemDataAdditions_encode
    52 #else
    53     UNUSED_PARAM(encoder);
    54 #endif
     45    encoder << startDateComponents;
     46    encoder << endDateComponents;
    5547}
    5648
    5749template<class Decoder>
    58 std::optional<ApplePayLineItemData> ApplePayLineItemData::decode(Decoder& decoder)
     50std::optional<ApplePayDateComponentsRange> ApplePayDateComponentsRange::decode(Decoder& decoder)
    5951{
    60     ApplePayLineItemData result;
    61     if (!result.decodeData(decoder))
    62         return std::nullopt;
    63     return result;
    64 }
     52#define DECODE(name, type) \
     53    std::optional<type> name; \
     54    decoder >> name; \
     55    if (!name) \
     56        return std::nullopt; \
    6557
    66 template<class Decoder>
    67 bool ApplePayLineItemData::decodeData(Decoder& decoder)
    68 {
    69 #if defined(ApplePayLineItemDataAdditions_decodeData)
    70     ApplePayLineItemDataAdditions_decodeData
    71 #else
    72     UNUSED_PARAM(decoder);
    73 #endif
     58    DECODE(startDateComponents, ApplePayDateComponents)
     59    DECODE(endDateComponents, ApplePayDateComponents)
    7460
    75     return true;
     61#undef DECODE
     62
     63    return {{ WTFMove(*startDateComponents), WTFMove(*endDateComponents) }};
    7664}
    7765
    7866} // namespace WebCore
    7967
    80 #endif // ENABLE(APPLE_PAY)
     68#endif // ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayDateComponentsRange.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
     27    Conditional=APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE,
    2828    ExportMacro=WEBCORE_EXPORT,
    2929    JSGenerateToJSObject,
    30 ] dictionary ApplePayPaymentMethodModeDetails {
     30] dictionary ApplePayDateComponentsRange {
     31    required ApplePayDateComponents startDateComponents;
     32    required ApplePayDateComponents endDateComponents;
    3133};
  • trunk/Source/WebCore/Modules/applepay/ApplePayErrorCode.h

    r273159 r278630  
    3030#include <wtf/Forward.h>
    3131
    32 #if USE(APPLE_INTERNAL_SDK)
    33 #include <WebKitAdditions/ApplePayErrorCodeAdditions.h>
    34 #endif
    35 
    3632namespace WebCore {
    3733
     
    4137    BillingContactInvalid,
    4238    AddressUnserviceable,
    43 #if defined(ApplePayErrorCodeAdditions_values)
    44     ApplePayErrorCodeAdditions_values
    45 #endif
     39    CouponCodeInvalid,
     40    CouponCodeExpired,
    4641};
    4742
     
    5651        WebCore::ApplePayErrorCode::ShippingContactInvalid,
    5752        WebCore::ApplePayErrorCode::BillingContactInvalid,
    58         WebCore::ApplePayErrorCode::AddressUnserviceable
    59 #if defined(ApplePayErrorCodeAdditions_EnumTraits)
    60         ApplePayErrorCodeAdditions_EnumTraits
    61 #endif
     53        WebCore::ApplePayErrorCode::AddressUnserviceable,
     54        WebCore::ApplePayErrorCode::CouponCodeInvalid,
     55        WebCore::ApplePayErrorCode::CouponCodeExpired
    6256    >;
    6357};
  • trunk/Source/WebCore/Modules/applepay/ApplePayErrorCode.idl

    r236552 r278630  
    3131    "shippingContactInvalid",
    3232    "billingContactInvalid",
    33     "addressUnserviceable"
     33    "addressUnserviceable",
     34    "couponCodeInvalid",
     35    "couponCodeExpired"
    3436};
  • trunk/Source/WebCore/Modules/applepay/ApplePayLineItem.h

    r278340 r278630  
    2828#if ENABLE(APPLE_PAY)
    2929
    30 #include "ApplePayLineItemData.h"
    31 #include <wtf/Forward.h>
     30#include "ApplePayPaymentTiming.h"
     31#include "ApplePayRecurringPaymentDateUnit.h"
     32#include <limits>
     33#include <optional>
    3234#include <wtf/text/WTFString.h>
    3335
    3436namespace WebCore {
    3537
    36 struct ApplePayLineItem final : public ApplePayLineItemData {
     38struct ApplePayLineItem final {
    3739    enum class Type : bool {
    3840        Pending,
     
    4446    String amount;
    4547
     48#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     49    ApplePayPaymentTiming paymentTiming { ApplePayPaymentTiming::Immediate };
     50#endif
     51
     52#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM)
     53    double recurringPaymentStartDate { std::numeric_limits<double>::quiet_NaN() };
     54    ApplePayRecurringPaymentDateUnit recurringPaymentIntervalUnit { ApplePayRecurringPaymentDateUnit::Month };
     55    unsigned recurringPaymentIntervalCount = 1;
     56    double recurringPaymentEndDate { std::numeric_limits<double>::quiet_NaN() };
     57#endif
     58
     59#if ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     60    double deferredPaymentDate { std::numeric_limits<double>::quiet_NaN() };
     61#endif
     62
    4663    template<class Encoder> void encode(Encoder&) const;
    4764    template<class Decoder> static std::optional<ApplePayLineItem> decode(Decoder&);
     
    5168void ApplePayLineItem::encode(Encoder& encoder) const
    5269{
    53     ApplePayLineItemData::encode(encoder);
    5470    encoder << type;
    5571    encoder << label;
    5672    encoder << amount;
     73#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     74    encoder << paymentTiming;
     75#endif
     76#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM)
     77    encoder << recurringPaymentStartDate;
     78    encoder << recurringPaymentIntervalUnit;
     79    encoder << recurringPaymentIntervalCount;
     80    encoder << recurringPaymentEndDate;
     81#endif
     82#if ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     83    encoder << deferredPaymentDate;
     84#endif
    5785}
    5886
     
    6088std::optional<ApplePayLineItem> ApplePayLineItem::decode(Decoder& decoder)
    6189{
    62     ApplePayLineItem result;
     90#define DECODE(name, type) \
     91    std::optional<type> name; \
     92    decoder >> name; \
     93    if (!name) \
     94        return std::nullopt; \
    6395
    64     if (!result.decodeData(decoder))
    65         return std::nullopt;
     96    DECODE(type, Type)
     97    DECODE(label, String)
     98    DECODE(amount, String)
     99#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     100    DECODE(paymentTiming, ApplePayPaymentTiming)
     101#endif
     102#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM)
     103    DECODE(recurringPaymentStartDate, double)
     104    DECODE(recurringPaymentIntervalUnit, ApplePayRecurringPaymentDateUnit)
     105    DECODE(recurringPaymentIntervalCount, unsigned)
     106    DECODE(recurringPaymentEndDate, double)
     107#endif
     108#if ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     109    DECODE(deferredPaymentDate, double)
     110#endif
    66111
    67     std::optional<Type> type;
    68     decoder >> type;
    69     if (!type)
    70         return std::nullopt;
    71     result.type = WTFMove(*type);
     112#undef DECODE
    72113
    73     std::optional<String> label;
    74     decoder >> label;
    75     if (!label)
    76         return std::nullopt;
    77     result.label = WTFMove(*label);
    78 
    79     std::optional<String> amount;
    80     decoder >> amount;
    81     if (!amount)
    82         return std::nullopt;
    83     result.amount = WTFMove(*amount);
    84 
    85     return result;
     114    return { {
     115        WTFMove(*type),
     116        WTFMove(*label),
     117        WTFMove(*amount),
     118#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     119        WTFMove(*paymentTiming),
     120#endif
     121#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM)
     122        WTFMove(*recurringPaymentStartDate),
     123        WTFMove(*recurringPaymentIntervalUnit),
     124        WTFMove(*recurringPaymentIntervalCount),
     125        WTFMove(*recurringPaymentEndDate),
     126#endif
     127#if ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
     128        WTFMove(*deferredPaymentDate),
     129#endif
     130    } };
    86131}
    87132
  • trunk/Source/WebCore/Modules/applepay/ApplePayLineItem.idl

    r273113 r278630  
    3535    ExportMacro=WEBCORE_EXPORT,
    3636    JSGenerateToJSObject,
    37 ] dictionary ApplePayLineItem : ApplePayLineItemData {
     37] dictionary ApplePayLineItem {
    3838    ApplePayLineItemType type = "final";
    3939    DOMString label;
    4040    DOMString amount;
     41
     42    [Conditional=APPLE_PAY_RECURRING_LINE_ITEM|APPLE_PAY_DEFERRED_LINE_ITEM] ApplePayPaymentTiming paymentTiming = "immediate";
     43
     44    [Conditional=APPLE_PAY_RECURRING_LINE_ITEM] Date recurringPaymentStartDate;
     45    [Conditional=APPLE_PAY_RECURRING_LINE_ITEM] ApplePayRecurringPaymentDateUnit recurringPaymentIntervalUnit = "month";
     46    [Conditional=APPLE_PAY_RECURRING_LINE_ITEM] unsigned long recurringPaymentIntervalCount = 1;
     47    [Conditional=APPLE_PAY_RECURRING_LINE_ITEM] Date recurringPaymentEndDate;
     48
     49    [Conditional=APPLE_PAY_DEFERRED_LINE_ITEM] Date deferredPaymentDate;
    4150};
  • trunk/Source/WebCore/Modules/applepay/ApplePayPaymentTiming.h

    r278629 r278630  
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     28#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
    2929
    30 #if USE(APPLE_INTERNAL_SDK)
    31 #include <WebKitAdditions/ApplePayPaymentMethodModeDetailsAdditions.h>
    32 #endif
     30#include <wtf/Forward.h>
    3331
    3432namespace WebCore {
    3533
    36 struct ApplePayPaymentMethodModeDetails {
    37 #if defined(ApplePayPaymentMethodModeDetailsAdditions_members)
    38     ApplePayPaymentMethodModeDetailsAdditions_members
    39 #endif
     34enum class ApplePayPaymentTiming : uint8_t {
     35    Immediate,
     36    Recurring,
     37    Deferred,
    4038};
    4139
    4240} // namespace WebCore
    4341
    44 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     42namespace WTF {
     43
     44template<> struct EnumTraits<WebCore::ApplePayPaymentTiming> {
     45    using values = EnumValues<
     46        WebCore::ApplePayPaymentTiming,
     47        WebCore::ApplePayPaymentTiming::Immediate,
     48        WebCore::ApplePayPaymentTiming::Recurring,
     49        WebCore::ApplePayPaymentTiming::Deferred
     50    >;
     51};
     52
     53} // namespace WTF
     54
     55#endif // ENABLE(APPLE_PAY_RECURRING_LINE_ITEM) || ENABLE(APPLE_PAY_DEFERRED_LINE_ITEM)
  • trunk/Source/WebCore/Modules/applepay/ApplePayPaymentTiming.idl

    r278629 r278630  
    11/*
    2  * Copyright (C) 2016 Apple Inc. All rights reserved.
     2 * Copyright (C) 2021 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626[
    27     Conditional=APPLE_PAY,
    28 ] dictionary ApplePayShippingMethodData {
     27    Conditional=APPLE_PAY_RECURRING_LINE_ITEM|APPLE_PAY_DEFERRED_LINE_ITEM,
     28] enum ApplePayPaymentTiming {
     29    "immediate",
     30    "recurring",
     31    "deferred"
    2932};
  • trunk/Source/WebCore/Modules/applepay/ApplePayRecurringPaymentDateUnit.h

    r278629 r278630  
    2626#pragma once
    2727
    28 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     28#if ENABLE(APPLE_PAY_RECURRING_LINE_ITEM)
    2929
    30 #if USE(APPLE_INTERNAL_SDK)
    31 #include <WebKitAdditions/ApplePayPaymentMethodModeDetailsAdditions.h>
    32 #endif
     30#include <wtf/Forward.h>
    3331
    3432namespace WebCore {
    3533
    36 struct ApplePayPaymentMethodModeDetails {
    37 #if defined(ApplePayPaymentMethodModeDetailsAdditions_members)
    38     ApplePayPaymentMethodModeDetailsAdditions_members
    39 #endif
     34enum class ApplePayRecurringPaymentDateUnit {
     35    Year,
     36    Month,
     37    Day,
     38    Hour,
     39    Minute,
    4040};
    4141
    4242} // namespace WebCore
    4343
    44 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     44namespace WTF {
     45
     46template<> struct EnumTraits<WebCore::ApplePayRecurringPaymentDateUnit> {
     47    using values = EnumValues<
     48        WebCore::ApplePayRecurringPaymentDateUnit,
     49        WebCore::ApplePayRecurringPaymentDateUnit::Year,
     50        WebCore::ApplePayRecurringPaymentDateUnit::Month,
     51        WebCore::ApplePayRecurringPaymentDateUnit::Day,
     52        WebCore::ApplePayRecurringPaymentDateUnit::Hour,
     53        WebCore::ApplePayRecurringPaymentDateUnit::Minute
     54    >;
     55};
     56
     57} // namespace WTF
     58
     59#endif // ENABLE(APPLE_PAY_RECURRING_LINE_ITEM)
  • trunk/Source/WebCore/Modules/applepay/ApplePayRecurringPaymentDateUnit.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY,
    28 ] dictionary ApplePayLineItemData {
     27    Conditional=APPLE_PAY_RECURRING_LINE_ITEM,
     28] enum ApplePayRecurringPaymentDateUnit {
     29    "year",
     30    "month",
     31    "day",
     32    "hour",
     33    "minute"
    2934};
  • trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp

    r273143 r278630  
    119119#endif
    120120
     121#if ENABLE(APPLE_PAY_COUPON_CODE)
     122    result.setSupportsCouponCode(request.supportsCouponCode);
     123    result.setCouponCode(request.couponCode);
     124#endif
     125
     126#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     127    result.setShippingContactEditingMode(request.shippingContactEditingMode);
     128#endif
     129
    121130#if defined(ApplePayRequestBaseAdditions_convertAndValidate_request)
    122131    ApplePayRequestBaseAdditions_convertAndValidate_request
  • trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.h

    r278253 r278630  
    3232#include "ApplePayMerchantCapability.h"
    3333#include "ApplePayPaymentContact.h"
     34#include "ApplePayShippingContactEditingMode.h"
    3435
    3536#if USE(APPLE_INTERNAL_SDK)
     
    6061#endif
    6162
     63#if ENABLE(APPLE_PAY_COUPON_CODE)
     64    std::optional<bool> supportsCouponCode;
     65    String couponCode;
     66#endif
     67
     68#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     69    std::optional<ApplePayShippingContactEditingMode> shippingContactEditingMode;
     70#endif
     71
    6272#if defined(ApplePayRequestBaseAdditions_members)
    6373    ApplePayRequestBaseAdditions_members
  • trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl

    r262620 r278630  
    4141
    4242    [Conditional=APPLE_PAY_INSTALLMENTS] ApplePayInstallmentConfiguration installmentConfiguration;
     43
     44    [Conditional=APPLE_PAY_COUPON_CODE] boolean supportsCouponCode;
     45    [Conditional=APPLE_PAY_COUPON_CODE] DOMString couponCode;
     46
     47    [Conditional=APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE] ApplePayShippingContactEditingMode shippingContactEditingMode;
    4348};
  • trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp

    r278372 r278630  
    3030
    3131#include "ApplePayCancelEvent.h"
     32#include "ApplePayCouponCodeChangedEvent.h"
     33#include "ApplePayCouponCodeUpdate.h"
    3234#include "ApplePayErrorCode.h"
    3335#include "ApplePayErrorContactField.h"
     
    3537#include "ApplePayPaymentAuthorizationResult.h"
    3638#include "ApplePayPaymentAuthorizedEvent.h"
    37 #include "ApplePayPaymentMethodModeUpdate.h"
    3839#include "ApplePayPaymentMethodSelectedEvent.h"
    3940#include "ApplePayPaymentMethodUpdate.h"
     
    282283}
    283284
    284 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    285 
    286 static ExceptionOr<ApplePayPaymentMethodModeUpdate> convertAndValidate(ApplePayPaymentMethodModeUpdate&& update)
     285#if ENABLE(APPLE_PAY_COUPON_CODE)
     286
     287static ExceptionOr<ApplePayCouponCodeUpdate> convertAndValidate(ApplePayCouponCodeUpdate&& update)
    287288{
    288289    auto convertedNewShippingMethods = convertAndValidate(WTFMove(update.newShippingMethods));
     
    304305}
    305306
    306 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     307#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    307308
    308309ExceptionOr<Ref<ApplePaySession>> ApplePaySession::create(Document& document, unsigned version, ApplePayPaymentRequest&& paymentRequest)
     
    525526    return { };
    526527}
     528
     529#if ENABLE(APPLE_PAY_COUPON_CODE)
     530
     531ExceptionOr<void> ApplePaySession::completeCouponCodeChange(ApplePayCouponCodeUpdate&& update)
     532{
     533    if (!canCompleteCouponCodeChange())
     534        return Exception { InvalidAccessError };
     535
     536    auto convertedUpdate = convertAndValidate(WTFMove(update));
     537    if (convertedUpdate.hasException())
     538        return convertedUpdate.releaseException();
     539
     540    m_state = State::Active;
     541    paymentCoordinator().completeCouponCodeChange(convertedUpdate.releaseReturnValue());
     542
     543    return { };
     544}
     545
     546#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    527547
    528548ExceptionOr<void> ApplePaySession::completePayment(ApplePayPaymentAuthorizationResult&& result)
     
    722742}
    723743
    724 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    725 
    726 void ApplePaySession::didChangePaymentMethodMode(String&& paymentMethodMode)
     744#if ENABLE(APPLE_PAY_COUPON_CODE)
     745
     746void ApplePaySession::didChangeCouponCode(String&& couponCode)
    727747{
    728748    ASSERT(m_state == State::Active);
    729749
    730 #if defined(ApplePaySessionAdditions_didChangePaymentMethodMode)
    731     ApplePaySessionAdditions_didChangePaymentMethodMode
    732 #endif
    733 }
    734 
    735 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     750    if (!hasEventListeners(eventNames().couponcodechangedEvent)) {
     751        paymentCoordinator().completeCouponCodeChange({ });
     752        return;
     753    }
     754
     755    m_state = State::CouponCodeChanged;
     756    auto event = ApplePayCouponCodeChangedEvent::create(eventNames().couponcodechangedEvent, WTFMove(couponCode));
     757    dispatchEvent(event.get());
     758}
     759
     760#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    736761
    737762void ApplePaySession::didCancelPaymentSession(PaymentSessionError&& error)
     
    764789    case State::ShippingContactSelected:
    765790    case State::PaymentMethodSelected:
    766 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    767     case State::PaymentMethodModeChanged:
    768 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     791#if ENABLE(APPLE_PAY_COUPON_CODE)
     792    case State::CouponCodeChanged:
     793#endif
    769794    case State::CancelRequested:
    770795        return false;
     
    814839    case State::ShippingContactSelected:
    815840    case State::PaymentMethodSelected:
    816 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    817     case State::PaymentMethodModeChanged:
    818 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     841#if ENABLE(APPLE_PAY_COUPON_CODE)
     842    case State::CouponCodeChanged:
     843#endif
    819844    case State::CancelRequested:
    820845        return false;
     
    836861    case State::ShippingContactSelected:
    837862    case State::PaymentMethodSelected:
    838 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    839     case State::PaymentMethodModeChanged:
    840 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     863#if ENABLE(APPLE_PAY_COUPON_CODE)
     864    case State::CouponCodeChanged:
     865#endif
    841866    case State::CancelRequested:
    842867        return true;
     
    858883    case State::ShippingContactSelected:
    859884    case State::PaymentMethodSelected:
    860 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    861     case State::PaymentMethodModeChanged:
    862 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     885#if ENABLE(APPLE_PAY_COUPON_CODE)
     886    case State::CouponCodeChanged:
     887#endif
    863888    case State::CancelRequested:
    864889        return true;
     
    888913    case State::PaymentMethodSelected:
    889914    case State::ShippingContactSelected:
    890 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    891     case State::PaymentMethodModeChanged:
    892 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     915#if ENABLE(APPLE_PAY_COUPON_CODE)
     916    case State::CouponCodeChanged:
     917#endif
    893918    case State::CancelRequested:
    894919        return false;
     
    910935    case State::PaymentMethodSelected:
    911936    case State::ShippingMethodSelected:
    912 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    913     case State::PaymentMethodModeChanged:
    914 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     937#if ENABLE(APPLE_PAY_COUPON_CODE)
     938    case State::CouponCodeChanged:
     939#endif
    915940    case State::CancelRequested:
    916941        return false;
     
    932957    case State::ShippingMethodSelected:
    933958    case State::ShippingContactSelected:
    934 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    935     case State::PaymentMethodModeChanged:
    936 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     959#if ENABLE(APPLE_PAY_COUPON_CODE)
     960    case State::CouponCodeChanged:
     961#endif
    937962    case State::CancelRequested:
    938963        return false;
     
    943968}
    944969
    945 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    946 
    947 bool ApplePaySession::canCompletePaymentMethodModeChange() const
     970#if ENABLE(APPLE_PAY_COUPON_CODE)
     971
     972bool ApplePaySession::canCompleteCouponCodeChange() const
    948973{
    949974    switch (m_state) {
     
    960985        return false;
    961986
    962     case State::PaymentMethodModeChanged:
     987    case State::CouponCodeChanged:
    963988        return true;
    964989    }
    965990}
    966991
    967 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     992#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    968993
    969994bool ApplePaySession::canCompletePayment() const
     
    9781003    case State::ShippingContactSelected:
    9791004    case State::PaymentMethodSelected:
    980 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    981     case State::PaymentMethodModeChanged:
    982 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     1005#if ENABLE(APPLE_PAY_COUPON_CODE)
     1006    case State::CouponCodeChanged:
     1007#endif
    9831008    case State::CancelRequested:
    9841009        return false;
     
    9971022    case State::ShippingContactSelected:
    9981023    case State::PaymentMethodSelected:
    999 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    1000     case State::PaymentMethodModeChanged:
    1001 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     1024#if ENABLE(APPLE_PAY_COUPON_CODE)
     1025    case State::CouponCodeChanged:
     1026#endif
    10021027    case State::Authorized:
    10031028    case State::CancelRequested:
     
    10161041}
    10171042
    1018 #if defined(ApplePaySessionAdditions_definitions)
    1019 ApplePaySessionAdditions_definitions
    1020 #endif
    1021 
    1022 }
    1023 
    1024 #endif
     1043} // namespace WebCore
     1044
     1045#endif // ENABLE(APPLE_PAY)
  • trunk/Source/WebCore/Modules/applepay/ApplePaySession.h

    r278372 r278630  
    5555class PaymentMethod;
    5656enum class PaymentAuthorizationStatus;
     57struct ApplePayCouponCodeUpdate;
    5758struct ApplePayLineItem;
    5859struct ApplePayPaymentRequest;
    5960struct ApplePayShippingMethod;
    6061struct ApplePayPaymentAuthorizationResult;
    61 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    62 struct ApplePayPaymentMethodModeUpdate;
    63 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    6462struct ApplePayPaymentMethodUpdate;
    6563struct ApplePayShippingContactUpdate;
     
    9290    ExceptionOr<void> completeShippingContactSelection(ApplePayShippingContactUpdate&&);
    9391    ExceptionOr<void> completePaymentMethodSelection(ApplePayPaymentMethodUpdate&&);
     92#if ENABLE(APPLE_PAY_COUPON_CODE)
     93    ExceptionOr<void> completeCouponCodeChange(ApplePayCouponCodeUpdate&&);
     94#endif
    9495    ExceptionOr<void> completePayment(ApplePayPaymentAuthorizationResult&&);
    9596
     
    127128    void didSelectShippingContact(const PaymentContact&) override;
    128129    void didSelectPaymentMethod(const PaymentMethod&) override;
    129 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    130     void didChangePaymentMethodMode(String&& paymentMethodMode) override;
    131 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     130#if ENABLE(APPLE_PAY_COUPON_CODE)
     131    void didChangeCouponCode(String&& couponCode) override;
     132#endif
    132133    void didCancelPaymentSession(PaymentSessionError&&) override;
    133134
     
    141142    bool canCompleteShippingContactSelection() const;
    142143    bool canCompletePaymentMethodSelection() const;
    143 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    144     bool canCompletePaymentMethodModeChange() const;
    145 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     144#if ENABLE(APPLE_PAY_COUPON_CODE)
     145    bool canCompleteCouponCodeChange() const;
     146#endif
    146147    bool canCompletePayment() const;
    147148    bool canSuspendWithoutCanceling() const;
     
    156157        ShippingContactSelected,
    157158        PaymentMethodSelected,
    158 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    159         PaymentMethodModeChanged,
    160 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     159#if ENABLE(APPLE_PAY_COUPON_CODE)
     160        CouponCodeChanged,
     161#endif
    161162        CancelRequested,
    162163        Authorized,
  • trunk/Source/WebCore/Modules/applepay/ApplePaySession.idl

    r274832 r278630  
    5353    undefined completeShippingContactSelection(ApplePayShippingContactUpdate update);
    5454    undefined completePaymentMethodSelection(ApplePayPaymentMethodUpdate update);
     55    [Conditional=APPLE_PAY_COUPON_CODE] undefined completeCouponCodeChange(ApplePayCouponCodeUpdate update);
    5556    undefined completePayment(ApplePayPaymentAuthorizationResult result);
    5657
     
    6566    attribute EventHandler onshippingmethodselected;
    6667    attribute EventHandler onshippingcontactselected;
     68    [Conditional=APPLE_PAY_COUPON_CODE] attribute EventHandler oncouponcodechanged;
    6769    attribute EventHandler oncancel;
    6870};
  • trunk/Source/WebCore/Modules/applepay/ApplePaySessionPaymentRequest.h

    r278340 r278630  
    3030#include "ApplePayError.h"
    3131#include "ApplePayLineItem.h"
     32#include "ApplePayShippingContactEditingMode.h"
    3233#include "ApplePayShippingMethod.h"
    3334#include "PaymentContact.h"
     
    130131#endif
    131132
     133#if ENABLE(APPLE_PAY_COUPON_CODE)
     134    std::optional<bool> supportsCouponCode() const { return m_supportsCouponCode; }
     135    void setSupportsCouponCode(std::optional<bool> supportsCouponCode) { m_supportsCouponCode = supportsCouponCode; }
     136
     137    const String& couponCode() const { return m_couponCode; }
     138    void setCouponCode(const String& couponCode) { m_couponCode = couponCode; }
     139#endif
     140
     141#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     142    const std::optional<ApplePayShippingContactEditingMode>& shippingContactEditingMode() const { return m_shippingContactEditingMode; }
     143    void setShippingContactEditingMode(const std::optional<ApplePayShippingContactEditingMode>& shippingContactEditingMode) { m_shippingContactEditingMode = shippingContactEditingMode; }
     144#endif
     145
    132146private:
    133147    unsigned m_version { 0 };
     
    158172#if HAVE(PASSKIT_INSTALLMENTS)
    159173    PaymentInstallmentConfiguration m_installmentConfiguration;
     174#endif
     175
     176#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     177    std::optional<ApplePayShippingContactEditingMode> m_shippingContactEditingMode;
     178#endif
     179
     180#if ENABLE(APPLE_PAY_COUPON_CODE)
     181    std::optional<bool> m_supportsCouponCode;
     182    String m_couponCode;
    160183#endif
    161184
  • trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactEditingMode.h

    r278629 r278630  
    2424 */
    2525
    26 [
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
    28 ] dictionary ApplePayPaymentMethodModeUpdate : ApplePayDetailsUpdateBase {
    29     sequence<ApplePayError> errors;
     26#pragma once
    3027
    31     sequence<ApplePayShippingMethod> newShippingMethods;
     28#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     29
     30namespace WebCore {
     31
     32enum class ApplePayShippingContactEditingMode : bool {
     33    Enabled,
     34    StorePickup,
    3235};
     36
     37} // namespace WebCore
     38
     39#endif // ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
  • trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactEditingMode.idl

    r278629 r278630  
    2525
    2626[
    27     Conditional=APPLE_PAY_PAYMENT_METHOD_MODE,
     27    Conditional=APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE,
    2828    ExportMacro=WEBCORE_EXPORT,
    29     JSGenerateToJSObject,
    30 ] dictionary ApplePayPaymentMethodModeDetails {
     29] enum ApplePayShippingContactEditingMode {
     30    "enabled",
     31    "storePickup"
    3132};
  • trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethod.h

    r278253 r278630  
    2828#if ENABLE(APPLE_PAY)
    2929
    30 #include "ApplePayShippingMethodData.h"
     30#include "ApplePayDateComponentsRange.h"
     31#include <optional>
    3132#include <wtf/text/WTFString.h>
    3233
    3334namespace WebCore {
    3435
    35 struct ApplePayShippingMethod final : public ApplePayShippingMethodData {
     36struct ApplePayShippingMethod final {
    3637    String label;
    3738    String detail;
    3839    String amount;
    3940    String identifier;
     41
     42#if ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     43    std::optional<ApplePayDateComponentsRange> dateComponentsRange;
     44#endif
    4045
    4146    template<class Encoder> void encode(Encoder&) const;
     
    4651void ApplePayShippingMethod::encode(Encoder& encoder) const
    4752{
    48     ApplePayShippingMethodData::encode(encoder);
    4953    encoder << label;
    5054    encoder << detail;
    5155    encoder << amount;
    5256    encoder << identifier;
     57#if ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     58    encoder << dateComponentsRange;
     59#endif
    5360}
    5461
     
    5663std::optional<ApplePayShippingMethod> ApplePayShippingMethod::decode(Decoder& decoder)
    5764{
    58     ApplePayShippingMethod result;
    59 
    60     if (!result.decodeData(decoder))
    61         return std::nullopt;
    62 
    6365#define DECODE(name, type) \
    6466    std::optional<type> name; \
     
    6668    if (!name) \
    6769        return std::nullopt; \
    68     result.name = WTFMove(*name); \
    6970
    7071    DECODE(label, String)
     
    7273    DECODE(amount, String)
    7374    DECODE(identifier, String)
     75#if ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     76    DECODE(dateComponentsRange, std::optional<ApplePayDateComponentsRange>)
     77#endif
    7478
    7579#undef DECODE
    7680
    77     return result;
     81    return { {
     82        WTFMove(*label),
     83        WTFMove(*detail),
     84        WTFMove(*amount),
     85        WTFMove(*identifier),
     86#if ENABLE(APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     87        WTFMove(*dateComponentsRange),
     88#endif
     89    } };
    7890}
    7991
  • trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethod.idl

    r273192 r278630  
    2828    ExportMacro=WEBCORE_EXPORT,
    2929    JSGenerateToJSObject,
    30 ] dictionary ApplePayShippingMethod : ApplePayShippingMethodData {
     30] dictionary ApplePayShippingMethod {
    3131    required DOMString label;
    3232    required DOMString detail;
    3333    required DOMString amount;
    3434    required DOMString identifier;
     35
     36    [Conditional=APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE] ApplePayDateComponentsRange dateComponentsRange;
    3537};
  • trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.cpp

    r278253 r278630  
    2929#if ENABLE(APPLE_PAY)
    3030
    31 #include "ApplePayPaymentMethodModeUpdate.h"
     31#include "ApplePayCouponCodeUpdate.h"
    3232#include "ApplePayPaymentMethodUpdate.h"
    3333#include "ApplePayShippingContactUpdate.h"
     
    155155}
    156156
    157 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    158 
    159 void PaymentCoordinator::completePaymentMethodModeChange(std::optional<ApplePayPaymentMethodModeUpdate>&& update)
    160 {
    161     ASSERT(m_activeSession);
    162     RELEASE_LOG_IF_ALLOWED("completePaymentMethodModeChange()");
    163     m_client.completePaymentMethodModeChange(WTFMove(update));
    164 }
    165 
    166 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     157#if ENABLE(APPLE_PAY_COUPON_CODE)
     158
     159void PaymentCoordinator::completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&& update)
     160{
     161    ASSERT(m_activeSession);
     162    RELEASE_LOG_IF_ALLOWED("completeCouponCodeChange()");
     163    m_client.completeCouponCodeChange(WTFMove(update));
     164}
     165
     166#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    167167
    168168void PaymentCoordinator::completePaymentSession(std::optional<PaymentAuthorizationResult>&& result)
     
    250250}
    251251
    252 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    253 
    254 void PaymentCoordinator::didChangePaymentMethodMode(String&& paymentMethodMode)
    255 {
    256     if (!m_activeSession) {
    257         // It's possible that the payment has been aborted already.
    258         return;
    259     }
    260 
    261     RELEASE_LOG_IF_ALLOWED("didChangePaymentMethodMode()");
    262     m_activeSession->didChangePaymentMethodMode(WTFMove(paymentMethodMode));
    263 }
    264 
    265 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     252#if ENABLE(APPLE_PAY_COUPON_CODE)
     253
     254void PaymentCoordinator::didChangeCouponCode(String&& couponCode)
     255{
     256    if (!m_activeSession) {
     257        // It's possible that the payment has been aborted already.
     258        return;
     259    }
     260
     261    RELEASE_LOG_IF_ALLOWED("didChangeCouponCode()");
     262    m_activeSession->didChangeCouponCode(WTFMove(couponCode));
     263}
     264
     265#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    266266
    267267void PaymentCoordinator::didCancelPaymentSession(PaymentSessionError&& error)
  • trunk/Source/WebCore/Modules/applepay/PaymentCoordinator.h

    r278340 r278630  
    4545class PaymentSessionError;
    4646enum class PaymentAuthorizationStatus;
    47 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    48 struct ApplePayPaymentMethodModeUpdate;
    49 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     47struct ApplePayCouponCodeUpdate;
    5048struct ApplePayPaymentMethodUpdate;
    5149struct ApplePaySetupConfiguration;
     
    7674    void completeShippingContactSelection(std::optional<ApplePayShippingContactUpdate>&&);
    7775    void completePaymentMethodSelection(std::optional<ApplePayPaymentMethodUpdate>&&);
    78 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    79     void completePaymentMethodModeChange(std::optional<ApplePayPaymentMethodModeUpdate>&&);
    80 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     76#if ENABLE(APPLE_PAY_COUPON_CODE)
     77    void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&);
     78#endif
    8179    void completePaymentSession(std::optional<PaymentAuthorizationResult>&&);
    8280    void abortPaymentSession();
     
    8886    WEBCORE_EXPORT void didSelectShippingMethod(const ApplePayShippingMethod&);
    8987    WEBCORE_EXPORT void didSelectShippingContact(const PaymentContact&);
    90 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    91     WEBCORE_EXPORT void didChangePaymentMethodMode(String&& paymentMethodMode);
    92 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     88#if ENABLE(APPLE_PAY_COUPON_CODE)
     89    WEBCORE_EXPORT void didChangeCouponCode(String&& couponCode);
     90#endif
    9391    WEBCORE_EXPORT void didCancelPaymentSession(PaymentSessionError&&);
    9492
  • trunk/Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h

    r278340 r278630  
    3838class Document;
    3939class PaymentMerchantSession;
    40 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    41 struct ApplePayPaymentMethodModeUpdate;
    42 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     40struct ApplePayCouponCodeUpdate;
    4341struct ApplePayPaymentMethodUpdate;
    4442struct ApplePaySetupConfiguration;
     
    6159    virtual void completeShippingContactSelection(std::optional<ApplePayShippingContactUpdate>&&) = 0;
    6260    virtual void completePaymentMethodSelection(std::optional<ApplePayPaymentMethodUpdate>&&) = 0;
    63 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    64     virtual void completePaymentMethodModeChange(std::optional<ApplePayPaymentMethodModeUpdate>&&) = 0;
    65 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     61#if ENABLE(APPLE_PAY_COUPON_CODE)
     62    virtual void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&) = 0;
     63#endif
    6664    virtual void completePaymentSession(std::optional<PaymentAuthorizationResult>&&) = 0;
    6765    virtual void abortPaymentSession() = 0;
  • trunk/Source/WebCore/Modules/applepay/PaymentHeaders.h

    r273159 r278630  
    2626#pragma once
    2727
    28 #include "ApplePayPaymentMethodModeUpdate.h"
     28#include "ApplePayCouponCodeUpdate.h"
    2929#include "ApplePayPaymentMethodUpdate.h"
    3030#include "ApplePaySessionPaymentRequest.h"
  • trunk/Source/WebCore/Modules/applepay/PaymentSession.h

    r273159 r278630  
    5252    virtual void didSelectShippingContact(const PaymentContact&) = 0;
    5353    virtual void didSelectPaymentMethod(const PaymentMethod&) = 0;
    54 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    55     virtual void didChangePaymentMethodMode(String&& paymentMethodMode) = 0;
    56 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     54#if ENABLE(APPLE_PAY_COUPON_CODE)
     55    virtual void didChangeCouponCode(String&& couponCode) = 0;
     56#endif
    5757    virtual void didCancelPaymentSession(PaymentSessionError&&) = 0;
    5858};
  • trunk/Source/WebCore/Modules/applepay/cocoa/PaymentAPIVersionCocoa.mm

    r273922 r278630  
    3636{
    3737    static unsigned current = [] {
    38 #if ENABLE(APPLE_PAY_SESSION_V12)
     38#if 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)
    3939        return 12;
    4040#elif ENABLE(APPLE_PAY_SESSION_V11)
  • trunk/Source/WebCore/Modules/applepay/cocoa/PaymentSummaryItemsCocoa.mm

    r273143 r278630  
    5151}
    5252
    53 #if USE(APPLE_INTERNAL_SDK)
    54 #import <WebKitAdditions/PaymentSummaryItemsCocoaAdditions.mm>
     53#if HAVE(PASSKIT_RECURRING_LINE_ITEM) || HAVE(PASSKIT_DEFERRED_LINE_ITEM)
     54
     55static NSDate *toDate(double date)
     56{
     57    return [NSDate dateWithTimeIntervalSince1970:date];
     58}
     59
     60#endif // HAVE(PASSKIT_RECURRING_LINE_ITEM) || HAVE(PASSKIT_DEFERRED_LINE_ITEM)
     61
     62#if HAVE(PASSKIT_RECURRING_LINE_ITEM)
     63
     64static NSCalendarUnit toCalendarUnit(ApplePayRecurringPaymentDateUnit unit)
     65{
     66    switch (unit) {
     67    case ApplePayRecurringPaymentDateUnit::Year:
     68        return NSCalendarUnitYear;
     69
     70    case ApplePayRecurringPaymentDateUnit::Month:
     71        return NSCalendarUnitMonth;
     72
     73    case ApplePayRecurringPaymentDateUnit::Day:
     74        return NSCalendarUnitDay;
     75
     76    case ApplePayRecurringPaymentDateUnit::Hour:
     77        return NSCalendarUnitHour;
     78
     79    case ApplePayRecurringPaymentDateUnit::Minute:
     80        return NSCalendarUnitMinute;
     81    }
     82}
     83
     84#endif // HAVE(PASSKIT_RECURRING_LINE_ITEM)
     85
     86static PKPaymentSummaryItem *toPKPaymentSummaryItem(const ApplePayLineItem& lineItem)
     87{
     88#if HAVE(PASSKIT_RECURRING_LINE_ITEM) || HAVE(PASSKIT_DEFERRED_LINE_ITEM)
     89    switch (lineItem.paymentTiming) {
     90    case ApplePayPaymentTiming::Immediate:
     91        break;
     92
     93    case ApplePayPaymentTiming::Recurring:
     94#if HAVE(PASSKIT_RECURRING_LINE_ITEM)
     95    {
     96        PKRecurringPaymentSummaryItem *summaryItem = [PAL::getPKRecurringPaymentSummaryItemClass() summaryItemWithLabel:lineItem.label amount:toDecimalNumber(lineItem.amount) type:toPKPaymentSummaryItemType(lineItem.type)];
     97        if (!std::isnan(lineItem.recurringPaymentStartDate))
     98            summaryItem.startDate = toDate(lineItem.recurringPaymentStartDate);
     99        summaryItem.intervalUnit = toCalendarUnit(lineItem.recurringPaymentIntervalUnit);
     100        summaryItem.intervalCount = lineItem.recurringPaymentIntervalCount;
     101        if (!std::isnan(lineItem.recurringPaymentEndDate))
     102            summaryItem.endDate = toDate(lineItem.recurringPaymentEndDate);
     103        return summaryItem;
     104    }
     105#else
     106        break;
    55107#endif
    56108
    57 #if !ENABLE(APPLE_PAY_LINE_ITEM_DATA)
    58 static PKPaymentSummaryItem *toPKPaymentSummaryItem(const ApplePayLineItem& lineItem)
    59 {
     109    case ApplePayPaymentTiming::Deferred:
     110#if HAVE(PASSKIT_DEFERRED_LINE_ITEM)
     111    {
     112        PKDeferredPaymentSummaryItem *summaryItem = [PAL::getPKDeferredPaymentSummaryItemClass() summaryItemWithLabel:lineItem.label amount:toDecimalNumber(lineItem.amount) type:toPKPaymentSummaryItemType(lineItem.type)];
     113        if (!std::isnan(lineItem.deferredPaymentDate))
     114            summaryItem.deferredDate = toDate(lineItem.deferredPaymentDate);
     115        return summaryItem;
     116    }
     117#else
     118        break;
     119#endif
     120    }
     121#endif
     122
    60123    return [PAL::getPKPaymentSummaryItemClass() summaryItemWithLabel:lineItem.label amount:toDecimalNumber(lineItem.amount) type:toPKPaymentSummaryItemType(lineItem.type)];
    61124}
    62 #endif
    63125
    64126NSArray *platformSummaryItems(const ApplePayLineItem& total, const Vector<ApplePayLineItem>& lineItems)
  • trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp

    r278437 r278630  
    3131#include "AddressErrors.h"
    3232#include "ApplePayContactField.h"
     33#include "ApplePayCouponCodeDetails.h"
     34#include "ApplePayCouponCodeUpdate.h"
    3335#include "ApplePayDetailsUpdateData.h"
    3436#include "ApplePayError.h"
     
    3941#include "ApplePayModifier.h"
    4042#include "ApplePayPayment.h"
    41 #include "ApplePayPaymentMethodModeDetails.h"
    42 #include "ApplePayPaymentMethodModeUpdate.h"
    4343#include "ApplePayPaymentMethodUpdate.h"
    4444#include "ApplePaySessionPaymentRequest.h"
     
    4949#include "EventNames.h"
    5050#include "Frame.h"
     51#include "JSApplePayCouponCodeDetails.h"
    5152#include "JSApplePayError.h"
    52 #include "JSApplePayLineItemData.h"
    5353#include "JSApplePayPayment.h"
    5454#include "JSApplePayPaymentMethod.h"
    55 #include "JSApplePayPaymentMethodModeDetails.h"
    5655#include "JSApplePayRequest.h"
    5756#include "JSDOMConvert.h"
     
    593592ExceptionOr<void> ApplePayPaymentHandler::paymentMethodUpdated(Vector<RefPtr<ApplePayError>>&& errors)
    594593{
    595 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    596     if (m_updateState == UpdateState::PaymentMethodMode) {
     594#if ENABLE(APPLE_PAY_COUPON_CODE)
     595    if (m_updateState == UpdateState::CouponCode) {
    597596        m_updateState = UpdateState::None;
    598597
    599         ApplePayPaymentMethodModeUpdate update;
     598        ApplePayCouponCodeUpdate update;
    600599        update.errors = WTFMove(errors);
    601600
     
    616615            merge(update, WTFMove(std::get<1>(*modifierData)));
    617616
    618         paymentCoordinator().completePaymentMethodModeChange(WTFMove(update));
     617        paymentCoordinator().completeCouponCodeChange(WTFMove(update));
    619618        return { };
    620619    }
    621620#else
    622621    UNUSED_PARAM(errors);
    623 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     622#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    624623
    625624    ASSERT(m_updateState == UpdateState::PaymentMethod);
     
    751750}
    752751
    753 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    754 
    755 void ApplePayPaymentHandler::didChangePaymentMethodMode(String&& paymentMethodMode)
     752#if ENABLE(APPLE_PAY_COUPON_CODE)
     753
     754void ApplePayPaymentHandler::didChangeCouponCode(String&& couponCode)
    756755{
    757756    ASSERT(m_updateState == UpdateState::None);
    758     m_updateState = UpdateState::PaymentMethodMode;
    759 
    760     ApplePayPaymentMethodModeDetails applePayPaymentMethodModeDetails { WTFMove(paymentMethodMode) };
    761     m_paymentRequest->paymentMethodChanged(WTF::get<URL>(m_identifier).string(), [applePayPaymentMethodModeDetails = WTFMove(applePayPaymentMethodModeDetails)] (JSC::JSGlobalObject& lexicalGlobalObject) {
    762         return toJSDictionary(lexicalGlobalObject, applePayPaymentMethodModeDetails);
     757    m_updateState = UpdateState::CouponCode;
     758
     759    ApplePayCouponCodeDetails applePayCouponCodeDetails { WTFMove(couponCode) };
     760    m_paymentRequest->paymentMethodChanged(WTF::get<URL>(m_identifier).string(), [applePayCouponCodeDetails = WTFMove(applePayCouponCodeDetails)] (JSC::JSGlobalObject& lexicalGlobalObject) {
     761        return toJSDictionary(lexicalGlobalObject, applePayCouponCodeDetails);
    763762    });
    764763}
    765764
    766 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     765#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    767766
    768767void ApplePayPaymentHandler::didCancelPaymentSession(PaymentSessionError&&)
  • trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.h

    r278340 r278630  
    8888    void didSelectShippingContact(const PaymentContact&) final;
    8989    void didSelectPaymentMethod(const PaymentMethod&) final;
    90 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    91     void didChangePaymentMethodMode(String&& paymentMethodMode) final;
    92 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     90#if ENABLE(APPLE_PAY_COUPON_CODE)
     91    void didChangeCouponCode(String&& couponCode) final;
     92#endif
    9393    void didCancelPaymentSession(PaymentSessionError&&) final;
    9494
     
    103103        ShippingOption,
    104104        PaymentMethod,
    105 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    106         PaymentMethodMode,
    107 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     105#if ENABLE(APPLE_PAY_COUPON_CODE)
     106        CouponCode,
     107#endif
    108108    } m_updateState { UpdateState::None };
    109109};
  • trunk/Source/WebCore/PAL/ChangeLog

    r278546 r278630  
     12021-06-08  Devin Rousso  <drousso@apple.com>
     2
     3        [Payment Request] upstream new features
     4        https://bugs.webkit.org/show_bug.cgi?id=226740
     5        <rdar://problem/78963132>
     6
     7        Reviewed by Andy Estes.
     8
     9         - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`)
     10         - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`)
     11         - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`)
     12         - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`)
     13         - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`)
     14
     15        * pal/cocoa/PassKitSoftLink.h:
     16        * pal/cocoa/PassKitSoftLink.mm:
     17        * pal/spi/cocoa/PassKitSPI.h:
     18
    1192021-06-06  Commit Queue  <commit-queue@webkit.org>
    220
  • trunk/Source/WebCore/PAL/pal/cocoa/PassKitSoftLink.h

    r275775 r278630  
    5353#endif
    5454
     55#if HAVE(PASSKIT_RECURRING_SUMMARY_ITEM)
     56SOFT_LINK_CLASS_FOR_HEADER(PAL, PKRecurringPaymentSummaryItem)
     57#endif
     58
     59#if HAVE(PASSKIT_DEFERRED_SUMMARY_ITEM)
     60SOFT_LINK_CLASS_FOR_HEADER(PAL, PKDeferredPaymentSummaryItem)
     61#endif
     62
     63#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     64SOFT_LINK_CLASS_FOR_HEADER(PAL, PKDateComponentsRange)
     65#endif
     66
     67#if HAVE(PASSKIT_COUPON_CODE)
     68SOFT_LINK_CLASS_FOR_HEADER(PAL, PKPaymentRequestCouponCodeUpdate)
     69#endif
     70
    5571#if PLATFORM(IOS_FAMILY)
    5672SOFT_LINK_CLASS_FOR_HEADER(PAL, PKPaymentAuthorizationController)
  • trunk/Source/WebCore/PAL/pal/cocoa/PassKitSoftLink.mm

    r273113 r278630  
    5757#endif
    5858
     59#if HAVE(PASSKIT_RECURRING_SUMMARY_ITEM)
     60SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKRecurringPaymentSummaryItem, PAL_EXPORT)
     61#endif
     62
     63#if HAVE(PASSKIT_DEFERRED_SUMMARY_ITEM)
     64SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKDeferredPaymentSummaryItem, PAL_EXPORT)
     65#endif
     66
     67#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     68SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKDateComponentsRange, PAL_EXPORT)
     69#endif
     70
     71#if HAVE(PASSKIT_COUPON_CODE)
     72SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKPaymentRequestCouponCodeUpdate, PAL_EXPORT)
     73#endif
     74
    5975SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKContact, PAL_EXPORT)
    6076SOFT_LINK_CLASS_FOR_SOURCE_WITH_EXPORT(PAL, PassKit, PKPassLibrary, PAL_EXPORT)
  • trunk/Source/WebCore/PAL/pal/spi/cocoa/PassKitSPI.h

    r273113 r278630  
    6060#endif
    6161
    62 #import <WebKitAdditions/PassKitSPIAdditions.h>
     62#if HAVE(PASSKIT_RECURRING_SUMMARY_ITEM)
     63#import <PassKitCore/PKRecurringPaymentSummaryItem.h>
     64#endif
     65
     66#if HAVE(PASSKIT_DEFERRED_SUMMARY_ITEM)
     67#import <PassKitCore/PKDeferredPaymentSummaryItem.h>
     68#endif
     69
     70#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     71#import <PassKitCore/PKDateComponentsRange.h>
     72#endif
    6373
    6474#else
  • trunk/Source/WebCore/PlatformMac.cmake

    r277739 r278630  
    450450    Modules/airplay/WebMediaSessionManagerClient.h
    451451
     452    Modules/applepay/ApplePayCouponCodeUpdate.h
     453    Modules/applepay/ApplePayDateComponents.h
     454    Modules/applepay/ApplePayDateComponentsRange.h
    452455    Modules/applepay/ApplePayDetailsUpdateBase.h
    453456    Modules/applepay/ApplePayDetailsUpdateData.h
     
    456459    Modules/applepay/ApplePayErrorContactField.h
    457460    Modules/applepay/ApplePayLineItem.h
    458     Modules/applepay/ApplePayLineItemData.h
    459     Modules/applepay/ApplePayPaymentMethodModeDetails.h
    460     Modules/applepay/ApplePayPaymentMethodModeUpdate.h
    461461    Modules/applepay/ApplePayPaymentMethodUpdate.h
     462    Modules/applepay/ApplePayPaymentTiming.h
     463    Modules/applepay/ApplePayRecurringPaymentDateUnit.h
    462464    Modules/applepay/ApplePaySetupConfiguration.h
    463465    Modules/applepay/ApplePaySetupFeatureWebCore.h
     466    Modules/applepay/ApplePayShippingContactEditingMode.h
    464467    Modules/applepay/ApplePayShippingContactUpdate.h
    465468    Modules/applepay/ApplePayShippingMethod.h
    466     Modules/applepay/ApplePayShippingMethodData.h
    467469    Modules/applepay/ApplePayShippingMethodUpdate.h
    468470    Modules/applepay/PaymentInstallmentConfigurationWebCore.h
     
    736738    Modules/applepay/ApplePayCancelEvent.idl
    737739    Modules/applepay/ApplePayContactField.idl
     740    Modules/applepay/ApplePayCouponCodeChangedEvent.idl
     741    Modules/applepay/ApplePayCouponCodeDetails.idl
     742    Modules/applepay/ApplePayCouponCodeUpdate.idl
     743    Modules/applepay/ApplePayDateComponents.idl
     744    Modules/applepay/ApplePayDateComponentsRange.idl
    738745    Modules/applepay/ApplePayDetailsUpdateBase.idl
    739746    Modules/applepay/ApplePayDetailsUpdateData.idl
     
    746753    Modules/applepay/ApplePayInstallmentRetailChannel.idl
    747754    Modules/applepay/ApplePayLineItem.idl
    748     Modules/applepay/ApplePayLineItemData.idl
    749755    Modules/applepay/ApplePayMerchantCapability.idl
    750756    Modules/applepay/ApplePayPayment.idl
     
    753759    Modules/applepay/ApplePayPaymentContact.idl
    754760    Modules/applepay/ApplePayPaymentMethod.idl
    755     Modules/applepay/ApplePayPaymentMethodModeDetails.idl
    756     Modules/applepay/ApplePayPaymentMethodModeUpdate.idl
    757761    Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl
    758762    Modules/applepay/ApplePayPaymentMethodType.idl
     
    760764    Modules/applepay/ApplePayPaymentPass.idl
    761765    Modules/applepay/ApplePayPaymentRequest.idl
     766    Modules/applepay/ApplePayPaymentTiming.idl
     767    Modules/applepay/ApplePayRecurringPaymentDateUnit.idl
    762768    Modules/applepay/ApplePayRequestBase.idl
    763769    Modules/applepay/ApplePaySession.idl
     
    768774    Modules/applepay/ApplePaySetupFeatureState.idl
    769775    Modules/applepay/ApplePaySetupFeatureType.idl
     776    Modules/applepay/ApplePayShippingContactEditingMode.idl
    770777    Modules/applepay/ApplePayShippingContactSelectedEvent.idl
    771778    Modules/applepay/ApplePayShippingContactUpdate.idl
    772779    Modules/applepay/ApplePayShippingMethod.idl
    773     Modules/applepay/ApplePayShippingMethodData.idl
    774780    Modules/applepay/ApplePayShippingMethodSelectedEvent.idl
    775781    Modules/applepay/ApplePayShippingMethodUpdate.idl
  • trunk/Source/WebCore/SourcesCocoa.txt

    r278121 r278630  
    2424JSApplePayCancelEvent.cpp
    2525JSApplePayContactField.cpp
     26JSApplePayCouponCodeChangedEvent.cpp
     27JSApplePayCouponCodeDetails.cpp
     28JSApplePayCouponCodeUpdate.cpp
     29JSApplePayDateComponents.cpp
     30JSApplePayDateComponentsRange.cpp
    2631JSApplePayDetailsUpdateBase.cpp
    2732JSApplePayDetailsUpdateData.cpp
     
    3439JSApplePayInstallmentRetailChannel.cpp
    3540JSApplePayLineItem.cpp
    36 JSApplePayLineItemData.cpp
    3741JSApplePayMerchantCapability.cpp
    3842JSApplePayModifier.cpp
     
    4246JSApplePayPaymentContact.cpp
    4347JSApplePayPaymentMethod.cpp
    44 JSApplePayPaymentMethodModeDetails.cpp
    45 JSApplePayPaymentMethodModeUpdate.cpp
    4648JSApplePayPaymentMethodSelectedEvent.cpp
    4749JSApplePayPaymentMethodType.cpp
     
    4951JSApplePayPaymentPass.cpp
    5052JSApplePayPaymentRequest.cpp
     53JSApplePayPaymentTiming.cpp
     54JSApplePayRecurringPaymentDateUnit.cpp
    5155JSApplePayRequest.cpp
    5256JSApplePayRequestBase.cpp
     
    5862JSApplePaySetupFeatureState.cpp
    5963JSApplePaySetupFeatureType.cpp
     64JSApplePayShippingContactEditingMode.cpp
    6065JSApplePayShippingContactSelectedEvent.cpp
    6166JSApplePayShippingContactUpdate.cpp
    6267JSApplePayShippingMethod.cpp
    63 JSApplePayShippingMethodData.cpp
    6468JSApplePayShippingMethodSelectedEvent.cpp
    6569JSApplePayShippingMethodUpdate.cpp
    6670JSApplePayValidateMerchantEvent.cpp
    6771Modules/airplay/WebMediaSessionManager.cpp
     72Modules/applepay/ApplePayCouponCodeChangedEvent.cpp
    6873Modules/applepay/ApplePayCancelEvent.cpp
    6974Modules/applepay/ApplePayContactField.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r278580 r278630  
    23912391                7C6579E81E00831600E3A27A /* ApplePayShippingMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6579E71E00831600E3A27A /* ApplePayShippingMethod.h */; settings = {ATTRIBUTES = (Private, ); }; };
    23922392                7C6579F01E00856600E3A27A /* JSApplePayLineItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6579EA1E00856600E3A27A /* JSApplePayLineItem.h */; };
    2393                 7C6579F21E00856600E3A27A /* JSApplePayPaymentRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6579EC1E00856600E3A27A /* JSApplePayPaymentRequest.h */; };
    23942393                7C6579F41E00856600E3A27A /* JSApplePayShippingMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6579EE1E00856600E3A27A /* JSApplePayShippingMethod.h */; };
    23952394                7C73FB07191EF417007DE061 /* UserMessageHandlersNamespace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C73FB05191EF416007DE061 /* UserMessageHandlersNamespace.cpp */; };
     
    29822981                94E839561DFB2BC4007BC6A7 /* JSCSSNamespaceRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 94E839541DFB2BA6007BC6A7 /* JSCSSNamespaceRule.h */; };
    29832982                950183CD25D633D900D4340F /* ApplePayDetailsUpdateBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 950183CB25D633D800D4340F /* ApplePayDetailsUpdateBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
    2984                 951DEDD225E0845A0020E1EE /* ApplePayShippingMethodData.h in Headers */ = {isa = PBXBuildFile; fileRef = 951DEDD025E0845A0020E1EE /* ApplePayShippingMethodData.h */; settings = {ATTRIBUTES = (Private, ); }; };
    2985                 951DEDD625E0849E0020E1EE /* JSApplePayShippingMethodData.h in Headers */ = {isa = PBXBuildFile; fileRef = 951DEDD425E0849D0020E1EE /* JSApplePayShippingMethodData.h */; };
    29862983                9527D7AB25D5FDE200A6E176 /* ApplePayDetailsUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9527D7A825D5FDE100A6E176 /* ApplePayDetailsUpdateData.h */; settings = {ATTRIBUTES = (Private, ); }; };
    29872984                9527D7AF25D5FE6C00A6E176 /* JSApplePayDetailsUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9527D7AD25D5FE6B00A6E176 /* JSApplePayDetailsUpdateData.h */; };
    29882985                953BCEB225D6283D00A4A2A1 /* JSApplePayDetailsUpdateBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 953BCEAF25D6283C00A4A2A1 /* JSApplePayDetailsUpdateBase.h */; };
    29892986                9562EEDD25F18DE700334442 /* PaymentRequestUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9562EEDB25F18DE600334442 /* PaymentRequestUtilities.h */; };
    2990                 95684D83265357F800026938 /* ApplePayPaymentMethodModeDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 95684D81265357F700026938 /* ApplePayPaymentMethodModeDetails.h */; };
    2991                 956FC4BB25D49C7B00F7B3A2 /* ApplePayLineItemData.h in Headers */ = {isa = PBXBuildFile; fileRef = 956FC4B825D49C7A00F7B3A2 /* ApplePayLineItemData.h */; settings = {ATTRIBUTES = (Private, ); }; };
    2992                 956FC4BB25D49C7B00F7B3A3 /* JSApplePayLineItemData.h in Headers */ = {isa = PBXBuildFile; fileRef = 956FC4BA25D49C7D00F7B3A2 /* JSApplePayLineItemData.h */; };
    2993                 9596B93325DEEEA000ED2CFA /* ApplePayPaymentMethodModeUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9596B93025DEEE9F00ED2CFA /* ApplePayPaymentMethodModeUpdate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    2994                 9596B93825DEEF0300ED2CFA /* JSApplePayPaymentMethodModeUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9596B93625DEEF0200ED2CFA /* JSApplePayPaymentMethodModeUpdate.h */; };
     2987                95684D83265357F800026938 /* ApplePayCouponCodeDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 95684D81265357F700026938 /* ApplePayCouponCodeDetails.h */; };
     2988                9596B93325DEEEA000ED2CFA /* ApplePayCouponCodeUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9596B93025DEEE9F00ED2CFA /* ApplePayCouponCodeUpdate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2989                9596B93825DEEF0300ED2CFA /* JSApplePayCouponCodeChangedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9596B93625DEEF0200ED2CFA /* JSApplePayCouponCodeChangedEvent.h */; };
    29952990                95A1E2E925CC75A900268C8E /* MediaControlsContextMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 95A1E2E725CC75A800268C8E /* MediaControlsContextMenuItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
    29962991                95AA571025EEED32004E9283 /* InspectorCanvasCallTracer.h in Headers */ = {isa = PBXBuildFile; fileRef = 95AA570E25EEED31004E9283 /* InspectorCanvasCallTracer.h */; };
    29972992                95DF9D25252BEDB2000D7F46 /* PointerCharacteristics.h in Headers */ = {isa = PBXBuildFile; fileRef = 95DF9D23252BED99000D7F46 /* PointerCharacteristics.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2993                95EAD563266EF2DB004B9CF1 /* ApplePayCouponCodeChangedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD55F266EF2DA004B9CF1 /* ApplePayCouponCodeChangedEvent.h */; };
     2994                95EAD56A266EF2FA004B9CF1 /* ApplePayDateComponentsRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD566266EF2F8004B9CF1 /* ApplePayDateComponentsRange.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2995                95EAD56D266EF2FA004B9CF1 /* ApplePayDateComponents.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD569266EF2F9004B9CF1 /* ApplePayDateComponents.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2996                95EAD570266EF386004B9CF1 /* ApplePayPaymentTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD56E266EF384004B9CF1 /* ApplePayPaymentTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2997                95EAD574266EF394004B9CF1 /* ApplePayRecurringPaymentDateUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD572266EF392004B9CF1 /* ApplePayRecurringPaymentDateUnit.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2998                95EAD578266EF3A8004B9CF1 /* ApplePayShippingContactEditingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD576266EF3A6004B9CF1 /* ApplePayShippingContactEditingMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
     2999                95EAD582266EF539004B9CF1 /* JSApplePayCouponCodeUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD581266EF531004B9CF1 /* JSApplePayCouponCodeUpdate.h */; };
     3000                95EAD583266EF53B004B9CF1 /* JSApplePayCouponCodeDetails.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD57F266EF523004B9CF1 /* JSApplePayCouponCodeDetails.h */; };
     3001                95EAD587266EF56A004B9CF1 /* JSApplePayDateComponents.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD585266EF569004B9CF1 /* JSApplePayDateComponents.h */; };
     3002                95EAD58B266EF57A004B9CF1 /* JSApplePayDateComponentsRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD589266EF579004B9CF1 /* JSApplePayDateComponentsRange.h */; };
     3003                95EAD58E266EF59C004B9CF1 /* JSApplePayPaymentTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD58C266EF59A004B9CF1 /* JSApplePayPaymentTiming.h */; };
     3004                95EAD593266EF5CD004B9CF1 /* JSApplePayRecurringPaymentDateUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD591266EF5CC004B9CF1 /* JSApplePayRecurringPaymentDateUnit.h */; };
     3005                95EAD594266EF5D4004B9CF1 /* JSApplePayPaymentRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6579EC1E00856600E3A27A /* JSApplePayPaymentRequest.h */; };
     3006                95EAD597266EF60B004B9CF1 /* JSApplePayShippingContactEditingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EAD595266EF609004B9CF1 /* JSApplePayShippingContactEditingMode.h */; };
    29983007                95F45D27264DFBF100D0B8B8 /* PageColorSampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 95F45D26264DFBEB00D0B8B8 /* PageColorSampler.h */; };
    29993008                9705997A107D975200A50A7C /* PolicyChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 97059976107D975200A50A7C /* PolicyChecker.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    1192811937                950C484B25D6774E00AB3D9C /* overflow-button.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "overflow-button.js"; sourceTree = "<group>"; };
    1192911938                950C4C02BED8936F818E2F99 /* JSSVGGraphicsElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGGraphicsElement.h; sourceTree = "<group>"; };
    11930                 951DEDCE25E084590020E1EE /* ApplePayShippingMethodData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayShippingMethodData.idl; sourceTree = "<group>"; };
    11931                 951DEDD025E0845A0020E1EE /* ApplePayShippingMethodData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayShippingMethodData.h; sourceTree = "<group>"; };
    11932                 951DEDD325E0849C0020E1EE /* JSApplePayShippingMethodData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingMethodData.cpp; sourceTree = "<group>"; };
    11933                 951DEDD425E0849D0020E1EE /* JSApplePayShippingMethodData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingMethodData.h; sourceTree = "<group>"; };
    1193411939                9527D7A825D5FDE100A6E176 /* ApplePayDetailsUpdateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayDetailsUpdateData.h; sourceTree = "<group>"; };
    1193511940                9527D7AA25D5FDE100A6E176 /* ApplePayDetailsUpdateData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayDetailsUpdateData.idl; sourceTree = "<group>"; };
     
    1195511960                9562EED925F18DE500334442 /* PaymentRequestUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PaymentRequestUtilities.cpp; sourceTree = "<group>"; };
    1195611961                9562EEDB25F18DE600334442 /* PaymentRequestUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentRequestUtilities.h; sourceTree = "<group>"; };
    11957                 95684D7F265357F700026938 /* ApplePayPaymentMethodModeDetails.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentMethodModeDetails.idl; sourceTree = "<group>"; };
    11958                 95684D81265357F700026938 /* ApplePayPaymentMethodModeDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentMethodModeDetails.h; sourceTree = "<group>"; };
    11959                 956FC4B825D49C7A00F7B3A2 /* ApplePayLineItemData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayLineItemData.h; sourceTree = "<group>"; };
    11960                 956FC4B825D49C7C00F7B3A2 /* JSApplePayLineItemData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayLineItemData.cpp; sourceTree = "<group>"; };
    11961                 956FC4BA25D49C7B00F7B3A2 /* ApplePayLineItemData.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayLineItemData.idl; sourceTree = "<group>"; };
    11962                 956FC4BA25D49C7D00F7B3A2 /* JSApplePayLineItemData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayLineItemData.h; sourceTree = "<group>"; };
    11963                 9596B93025DEEE9F00ED2CFA /* ApplePayPaymentMethodModeUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentMethodModeUpdate.h; sourceTree = "<group>"; };
    11964                 9596B93225DEEE9F00ED2CFA /* ApplePayPaymentMethodModeUpdate.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentMethodModeUpdate.idl; sourceTree = "<group>"; };
    11965                 9596B93525DEEF0000ED2CFA /* JSApplePayPaymentMethodModeUpdate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentMethodModeUpdate.cpp; sourceTree = "<group>"; };
    11966                 9596B93625DEEF0200ED2CFA /* JSApplePayPaymentMethodModeUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayPaymentMethodModeUpdate.h; sourceTree = "<group>"; };
     11962                95684D7F265357F700026938 /* ApplePayCouponCodeDetails.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayCouponCodeDetails.idl; sourceTree = "<group>"; };
     11963                95684D81265357F700026938 /* ApplePayCouponCodeDetails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayCouponCodeDetails.h; sourceTree = "<group>"; };
     11964                9596B93025DEEE9F00ED2CFA /* ApplePayCouponCodeUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayCouponCodeUpdate.h; sourceTree = "<group>"; };
     11965                9596B93225DEEE9F00ED2CFA /* ApplePayCouponCodeUpdate.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayCouponCodeUpdate.idl; sourceTree = "<group>"; };
     11966                9596B93525DEEF0000ED2CFA /* JSApplePayCouponCodeUpdate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayCouponCodeUpdate.cpp; sourceTree = "<group>"; };
     11967                9596B93625DEEF0200ED2CFA /* JSApplePayCouponCodeChangedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayCouponCodeChangedEvent.h; sourceTree = "<group>"; };
    1196711968                95A1E2E725CC75A800268C8E /* MediaControlsContextMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlsContextMenuItem.h; sourceTree = "<group>"; };
    1196811969                95AA570D25EEED30004E9283 /* InspectorCanvasCallTracer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCanvasCallTracer.cpp; sourceTree = "<group>"; };
    1196911970                95AA570E25EEED31004E9283 /* InspectorCanvasCallTracer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCanvasCallTracer.h; sourceTree = "<group>"; };
    1197011971                95DF9D23252BED99000D7F46 /* PointerCharacteristics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PointerCharacteristics.h; sourceTree = "<group>"; };
     11972                95EAD55F266EF2DA004B9CF1 /* ApplePayCouponCodeChangedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayCouponCodeChangedEvent.h; sourceTree = "<group>"; };
     11973                95EAD561266EF2DA004B9CF1 /* ApplePayCouponCodeChangedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayCouponCodeChangedEvent.idl; sourceTree = "<group>"; };
     11974                95EAD562266EF2DB004B9CF1 /* ApplePayCouponCodeChangedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayCouponCodeChangedEvent.cpp; sourceTree = "<group>"; };
     11975                95EAD566266EF2F8004B9CF1 /* ApplePayDateComponentsRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayDateComponentsRange.h; sourceTree = "<group>"; };
     11976                95EAD567266EF2F8004B9CF1 /* ApplePayDateComponents.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayDateComponents.idl; sourceTree = "<group>"; };
     11977                95EAD568266EF2F9004B9CF1 /* ApplePayDateComponentsRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayDateComponentsRange.idl; sourceTree = "<group>"; };
     11978                95EAD569266EF2F9004B9CF1 /* ApplePayDateComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayDateComponents.h; sourceTree = "<group>"; };
     11979                95EAD56E266EF384004B9CF1 /* ApplePayPaymentTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentTiming.h; sourceTree = "<group>"; };
     11980                95EAD56F266EF385004B9CF1 /* ApplePayPaymentTiming.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentTiming.idl; sourceTree = "<group>"; };
     11981                95EAD572266EF392004B9CF1 /* ApplePayRecurringPaymentDateUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayRecurringPaymentDateUnit.h; sourceTree = "<group>"; };
     11982                95EAD573266EF393004B9CF1 /* ApplePayRecurringPaymentDateUnit.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayRecurringPaymentDateUnit.idl; sourceTree = "<group>"; };
     11983                95EAD576266EF3A6004B9CF1 /* ApplePayShippingContactEditingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayShippingContactEditingMode.h; sourceTree = "<group>"; };
     11984                95EAD577266EF3A7004B9CF1 /* ApplePayShippingContactEditingMode.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayShippingContactEditingMode.idl; sourceTree = "<group>"; };
     11985                95EAD57D266EF522004B9CF1 /* JSApplePayCouponCodeDetails.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayCouponCodeDetails.cpp; sourceTree = "<group>"; };
     11986                95EAD57F266EF523004B9CF1 /* JSApplePayCouponCodeDetails.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSApplePayCouponCodeDetails.h; sourceTree = "<group>"; };
     11987                95EAD580266EF530004B9CF1 /* JSApplePayCouponCodeChangedEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayCouponCodeChangedEvent.cpp; sourceTree = "<group>"; };
     11988                95EAD581266EF531004B9CF1 /* JSApplePayCouponCodeUpdate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSApplePayCouponCodeUpdate.h; sourceTree = "<group>"; };
     11989                95EAD584266EF568004B9CF1 /* JSApplePayDateComponents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayDateComponents.cpp; sourceTree = "<group>"; };
     11990                95EAD585266EF569004B9CF1 /* JSApplePayDateComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayDateComponents.h; sourceTree = "<group>"; };
     11991                95EAD588266EF579004B9CF1 /* JSApplePayDateComponentsRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayDateComponentsRange.cpp; sourceTree = "<group>"; };
     11992                95EAD589266EF579004B9CF1 /* JSApplePayDateComponentsRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayDateComponentsRange.h; sourceTree = "<group>"; };
     11993                95EAD58C266EF59A004B9CF1 /* JSApplePayPaymentTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayPaymentTiming.h; sourceTree = "<group>"; };
     11994                95EAD58D266EF59B004B9CF1 /* JSApplePayPaymentTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentTiming.cpp; sourceTree = "<group>"; };
     11995                95EAD590266EF5CB004B9CF1 /* JSApplePayRecurringPaymentDateUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayRecurringPaymentDateUnit.cpp; sourceTree = "<group>"; };
     11996                95EAD591266EF5CC004B9CF1 /* JSApplePayRecurringPaymentDateUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayRecurringPaymentDateUnit.h; sourceTree = "<group>"; };
     11997                95EAD595266EF609004B9CF1 /* JSApplePayShippingContactEditingMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingContactEditingMode.h; sourceTree = "<group>"; };
     11998                95EAD596266EF60A004B9CF1 /* JSApplePayShippingContactEditingMode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingContactEditingMode.cpp; sourceTree = "<group>"; };
    1197111999                95F45D24264DFBEB00D0B8B8 /* PageColorSampler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PageColorSampler.cpp; sourceTree = "<group>"; };
    1197212000                95F45D26264DFBEB00D0B8B8 /* PageColorSampler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PageColorSampler.h; sourceTree = "<group>"; };
     
    1859918627                                A1DF5A911F7EC4320058A477 /* ApplePayContactField.h */,
    1860018628                                A1DF5A931F7EC4320058A477 /* ApplePayContactField.idl */,
     18629                                95EAD562266EF2DB004B9CF1 /* ApplePayCouponCodeChangedEvent.cpp */,
     18630                                95EAD55F266EF2DA004B9CF1 /* ApplePayCouponCodeChangedEvent.h */,
     18631                                95EAD561266EF2DA004B9CF1 /* ApplePayCouponCodeChangedEvent.idl */,
     18632                                95684D81265357F700026938 /* ApplePayCouponCodeDetails.h */,
     18633                                95684D7F265357F700026938 /* ApplePayCouponCodeDetails.idl */,
     18634                                9596B93025DEEE9F00ED2CFA /* ApplePayCouponCodeUpdate.h */,
     18635                                9596B93225DEEE9F00ED2CFA /* ApplePayCouponCodeUpdate.idl */,
     18636                                95EAD569266EF2F9004B9CF1 /* ApplePayDateComponents.h */,
     18637                                95EAD567266EF2F8004B9CF1 /* ApplePayDateComponents.idl */,
     18638                                95EAD566266EF2F8004B9CF1 /* ApplePayDateComponentsRange.h */,
     18639                                95EAD568266EF2F9004B9CF1 /* ApplePayDateComponentsRange.idl */,
    1860118640                                950183CB25D633D800D4340F /* ApplePayDetailsUpdateBase.h */,
    1860218641                                950183C925D633D800D4340F /* ApplePayDetailsUpdateBase.idl */,
     
    1861918658                                7C6579E21E00827000E3A27A /* ApplePayLineItem.h */,
    1862018659                                7C6579E41E0082C800E3A27A /* ApplePayLineItem.idl */,
    18621                                 956FC4B825D49C7A00F7B3A2 /* ApplePayLineItemData.h */,
    18622                                 956FC4BA25D49C7B00F7B3A2 /* ApplePayLineItemData.idl */,
    1862318660                                A1DF5AA81F8070D40058A477 /* ApplePayMerchantCapability.cpp */,
    1862418661                                A1DF5A831F7EBDF20058A477 /* ApplePayMerchantCapability.h */,
     
    1863518672                                7C6522EC1E00A4C700677F22 /* ApplePayPaymentMethod.h */,
    1863618673                                7C6522ED1E00A4C700677F22 /* ApplePayPaymentMethod.idl */,
    18637                                 95684D81265357F700026938 /* ApplePayPaymentMethodModeDetails.h */,
    18638                                 95684D7F265357F700026938 /* ApplePayPaymentMethodModeDetails.idl */,
    18639                                 9596B93025DEEE9F00ED2CFA /* ApplePayPaymentMethodModeUpdate.h */,
    18640                                 9596B93225DEEE9F00ED2CFA /* ApplePayPaymentMethodModeUpdate.idl */,
    1864118674                                1A8A64401D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp */,
    1864218675                                1A8A64421D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.h */,
     
    1865018683                                7C6579DF1E0079F900E3A27A /* ApplePayPaymentRequest.h */,
    1865118684                                7C6579E11E007A1100E3A27A /* ApplePayPaymentRequest.idl */,
     18685                                95EAD56E266EF384004B9CF1 /* ApplePayPaymentTiming.h */,
     18686                                95EAD56F266EF385004B9CF1 /* ApplePayPaymentTiming.idl */,
     18687                                95EAD572266EF392004B9CF1 /* ApplePayRecurringPaymentDateUnit.h */,
     18688                                95EAD573266EF393004B9CF1 /* ApplePayRecurringPaymentDateUnit.idl */,
    1865218689                                A1DF5AAB1F8075F00058A477 /* ApplePayRequestBase.cpp */,
    1865318690                                A1DF5AAA1F8075F00058A477 /* ApplePayRequestBase.h */,
     
    1867218709                                5C53DCCF2446449900A93124 /* ApplePaySetupFeatureWebCore.h */,
    1867318710                                5C53DCCB2446449800A93124 /* ApplePaySetupWebCore.h */,
     18711                                95EAD576266EF3A6004B9CF1 /* ApplePayShippingContactEditingMode.h */,
     18712                                95EAD577266EF3A7004B9CF1 /* ApplePayShippingContactEditingMode.idl */,
    1867418713                                1A8A64471D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.cpp */,
    1867518714                                1A8A64481D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.h */,
     
    1867918718                                7C6579E71E00831600E3A27A /* ApplePayShippingMethod.h */,
    1868018719                                7C6579E51E00830600E3A27A /* ApplePayShippingMethod.idl */,
    18681                                 951DEDD025E0845A0020E1EE /* ApplePayShippingMethodData.h */,
    18682                                 951DEDCE25E084590020E1EE /* ApplePayShippingMethodData.idl */,
    1868318720                                1A8A644B1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp */,
    1868418721                                1A8A644C1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.h */,
     
    1881918856                                A1DF5A981F7EC8C00058A477 /* JSApplePayContactField.cpp */,
    1882018857                                A1DF5A971F7EC8BF0058A477 /* JSApplePayContactField.h */,
     18858                                95EAD580266EF530004B9CF1 /* JSApplePayCouponCodeChangedEvent.cpp */,
     18859                                9596B93625DEEF0200ED2CFA /* JSApplePayCouponCodeChangedEvent.h */,
     18860                                95EAD57D266EF522004B9CF1 /* JSApplePayCouponCodeDetails.cpp */,
     18861                                95EAD57F266EF523004B9CF1 /* JSApplePayCouponCodeDetails.h */,
     18862                                9596B93525DEEF0000ED2CFA /* JSApplePayCouponCodeUpdate.cpp */,
     18863                                95EAD581266EF531004B9CF1 /* JSApplePayCouponCodeUpdate.h */,
     18864                                95EAD584266EF568004B9CF1 /* JSApplePayDateComponents.cpp */,
     18865                                95EAD585266EF569004B9CF1 /* JSApplePayDateComponents.h */,
     18866                                95EAD588266EF579004B9CF1 /* JSApplePayDateComponentsRange.cpp */,
     18867                                95EAD589266EF579004B9CF1 /* JSApplePayDateComponentsRange.h */,
    1882118868                                953BCEB125D6283C00A4A2A1 /* JSApplePayDetailsUpdateBase.cpp */,
    1882218869                                953BCEAF25D6283C00A4A2A1 /* JSApplePayDetailsUpdateBase.h */,
     
    1883918886                                7C6579E91E00856600E3A27A /* JSApplePayLineItem.cpp */,
    1884018887                                7C6579EA1E00856600E3A27A /* JSApplePayLineItem.h */,
    18841                                 956FC4B825D49C7C00F7B3A2 /* JSApplePayLineItemData.cpp */,
    18842                                 956FC4BA25D49C7D00F7B3A2 /* JSApplePayLineItemData.h */,
    1884318888                                A1DF5A891F7EC0000058A477 /* JSApplePayMerchantCapability.cpp */,
    1884418889                                A1DF5A8A1F7EC0000058A477 /* JSApplePayMerchantCapability.h */,
     
    1885518900                                7C65230D1E00DBB400677F22 /* JSApplePayPaymentMethod.cpp */,
    1885618901                                7C65230E1E00DBB400677F22 /* JSApplePayPaymentMethod.h */,
    18857                                 9596B93525DEEF0000ED2CFA /* JSApplePayPaymentMethodModeUpdate.cpp */,
    18858                                 9596B93625DEEF0200ED2CFA /* JSApplePayPaymentMethodModeUpdate.h */,
    1885918902                                1AE96A7C1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp */,
    1886018903                                1AE96A7D1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.h */,
     
    1886718910                                7C6579EB1E00856600E3A27A /* JSApplePayPaymentRequest.cpp */,
    1886818911                                7C6579EC1E00856600E3A27A /* JSApplePayPaymentRequest.h */,
     18912                                95EAD58D266EF59B004B9CF1 /* JSApplePayPaymentTiming.cpp */,
     18913                                95EAD58C266EF59A004B9CF1 /* JSApplePayPaymentTiming.h */,
     18914                                95EAD590266EF5CB004B9CF1 /* JSApplePayRecurringPaymentDateUnit.cpp */,
     18915                                95EAD591266EF5CC004B9CF1 /* JSApplePayRecurringPaymentDateUnit.h */,
    1886918916                                A1DF5A8C1F7EC0010058A477 /* JSApplePayRequest.cpp */,
    1887018917                                A1DF5A8B1F7EC0010058A477 /* JSApplePayRequest.h */,
     
    1887518922                                A1D506132331ED970014EE4E /* JSApplePaySessionError.cpp */,
    1887618923                                A1D506112331ED960014EE4E /* JSApplePaySessionError.h */,
     18924                                95EAD596266EF60A004B9CF1 /* JSApplePayShippingContactEditingMode.cpp */,
     18925                                95EAD595266EF609004B9CF1 /* JSApplePayShippingContactEditingMode.h */,
    1887718926                                1AE96A801D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.cpp */,
    1887818927                                1AE96A811D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.h */,
     
    1888118930                                7C6579ED1E00856600E3A27A /* JSApplePayShippingMethod.cpp */,
    1888218931                                7C6579EE1E00856600E3A27A /* JSApplePayShippingMethod.h */,
    18883                                 951DEDD325E0849C0020E1EE /* JSApplePayShippingMethodData.cpp */,
    18884                                 951DEDD425E0849D0020E1EE /* JSApplePayShippingMethodData.h */,
    1888518932                                1AE96A821D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.cpp */,
    1888618933                                1AE96A831D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.h */,
     
    3163431681                                A113E02E2331A134009C33A0 /* ApplePayCancelEvent.h in Headers */,
    3163531682                                A1DF5A941F7EC4320058A477 /* ApplePayContactField.h in Headers */,
     31683                                95EAD563266EF2DB004B9CF1 /* ApplePayCouponCodeChangedEvent.h in Headers */,
     31684                                95684D83265357F800026938 /* ApplePayCouponCodeDetails.h in Headers */,
     31685                                9596B93325DEEEA000ED2CFA /* ApplePayCouponCodeUpdate.h in Headers */,
     31686                                95EAD56D266EF2FA004B9CF1 /* ApplePayDateComponents.h in Headers */,
     31687                                95EAD56A266EF2FA004B9CF1 /* ApplePayDateComponentsRange.h in Headers */,
    3163631688                                950183CD25D633D900D4340F /* ApplePayDetailsUpdateBase.h in Headers */,
    3163731689                                9527D7AB25D5FDE200A6E176 /* ApplePayDetailsUpdateData.h in Headers */,
     
    3164431696                                A13B616B2475E04800BBE6DE /* ApplePayInstallmentRetailChannel.h in Headers */,
    3164531697                                7C6579E31E00827000E3A27A /* ApplePayLineItem.h in Headers */,
    31646                                 956FC4BB25D49C7B00F7B3A2 /* ApplePayLineItemData.h in Headers */,
    3164731698                                A1DF5A861F7EBDF20058A477 /* ApplePayMerchantCapability.h in Headers */,
    3164831699                                A1F6CFFF1FE096210018078C /* ApplePayModifier.h in Headers */,
     
    3165331704                                A1DF5AA21F7EE1130058A477 /* ApplePayPaymentHandler.h in Headers */,
    3165431705                                7C6522EF1E00A4C700677F22 /* ApplePayPaymentMethod.h in Headers */,
    31655                                 95684D83265357F800026938 /* ApplePayPaymentMethodModeDetails.h in Headers */,
    31656                                 9596B93325DEEEA000ED2CFA /* ApplePayPaymentMethodModeUpdate.h in Headers */,
    3165731706                                1A8A64561D19FCFC00D0E00F /* ApplePayPaymentMethodSelectedEvent.h in Headers */,
    3165831707                                A1F6D0061FE096F60018078C /* ApplePayPaymentMethodType.h in Headers */,
     
    3166031709                                7C6522F51E00A51700677F22 /* ApplePayPaymentPass.h in Headers */,
    3166131710                                7C6579E01E0079F900E3A27A /* ApplePayPaymentRequest.h in Headers */,
     31711                                95EAD570266EF386004B9CF1 /* ApplePayPaymentTiming.h in Headers */,
     31712                                95EAD574266EF394004B9CF1 /* ApplePayRecurringPaymentDateUnit.h in Headers */,
    3166231713                                A1DF5A7F1F7EBD0B0058A477 /* ApplePayRequest.h in Headers */,
    3166331714                                A1DF5AAD1F8075F00058A477 /* ApplePayRequestBase.h in Headers */,
     
    3166931720                                5C53DCE124465DFC00A93124 /* ApplePaySetupFeatureWebCore.h in Headers */,
    3167031721                                5C53DCEA24468FB400A93124 /* ApplePaySetupWebCore.h in Headers */,
     31722                                95EAD578266EF3A8004B9CF1 /* ApplePayShippingContactEditingMode.h in Headers */,
    3167131723                                1A8A645C1D19FCFC00D0E00F /* ApplePayShippingContactSelectedEvent.h in Headers */,
    3167231724                                A12C59F22035FCD60012236B /* ApplePayShippingContactUpdate.h in Headers */,
    3167331725                                7C6579E81E00831600E3A27A /* ApplePayShippingMethod.h in Headers */,
    31674                                 951DEDD225E0845A0020E1EE /* ApplePayShippingMethodData.h in Headers */,
    3167531726                                1A8A64601D19FCFC00D0E00F /* ApplePayShippingMethodSelectedEvent.h in Headers */,
    3167631727                                A12C59F32035FCE20012236B /* ApplePayShippingMethodUpdate.h in Headers */,
     
    3324533296                                A1956F1C2331A6770057E9D2 /* JSApplePayCancelEvent.h in Headers */,
    3324633297                                A1DF5A991F7EC8C00058A477 /* JSApplePayContactField.h in Headers */,
     33298                                9596B93825DEEF0300ED2CFA /* JSApplePayCouponCodeChangedEvent.h in Headers */,
     33299                                95EAD583266EF53B004B9CF1 /* JSApplePayCouponCodeDetails.h in Headers */,
     33300                                95EAD582266EF539004B9CF1 /* JSApplePayCouponCodeUpdate.h in Headers */,
     33301                                95EAD587266EF56A004B9CF1 /* JSApplePayDateComponents.h in Headers */,
     33302                                95EAD58B266EF57A004B9CF1 /* JSApplePayDateComponentsRange.h in Headers */,
    3324733303                                953BCEB225D6283D00A4A2A1 /* JSApplePayDetailsUpdateBase.h in Headers */,
    3324833304                                9527D7AF25D5FE6C00A6E176 /* JSApplePayDetailsUpdateData.h in Headers */,
     
    3325533311                                A13B61772475E3A300BBE6DE /* JSApplePayInstallmentRetailChannel.h in Headers */,
    3325633312                                7C6579F01E00856600E3A27A /* JSApplePayLineItem.h in Headers */,
    33257                                 956FC4BB25D49C7B00F7B3A3 /* JSApplePayLineItemData.h in Headers */,
    3325833313                                A1DF5A8E1F7EC0020058A477 /* JSApplePayMerchantCapability.h in Headers */,
    3325933314                                A1F6D0121FE099B40018078C /* JSApplePayModifier.h in Headers */,
     
    3326333318                                7C6523161E00DBB500677F22 /* JSApplePayPaymentContact.h in Headers */,
    3326433319                                7C6523181E00DBB500677F22 /* JSApplePayPaymentMethod.h in Headers */,
    33265                                 9596B93825DEEF0300ED2CFA /* JSApplePayPaymentMethodModeUpdate.h in Headers */,
    3326633320                                1AE96A8D1D1A0DDD00B86768 /* JSApplePayPaymentMethodSelectedEvent.h in Headers */,
    3326733321                                A1F6D00F1FE099940018078C /* JSApplePayPaymentMethodType.h in Headers */,
    3326833322                                A12C59FC20360B270012236B /* JSApplePayPaymentMethodUpdate.h in Headers */,
    3326933323                                7C65231A1E00DBB500677F22 /* JSApplePayPaymentPass.h in Headers */,
    33270                                 7C6579F21E00856600E3A27A /* JSApplePayPaymentRequest.h in Headers */,
     33324                                95EAD594266EF5D4004B9CF1 /* JSApplePayPaymentRequest.h in Headers */,
     33325                                95EAD58E266EF59C004B9CF1 /* JSApplePayPaymentTiming.h in Headers */,
     33326                                95EAD593266EF5CD004B9CF1 /* JSApplePayRecurringPaymentDateUnit.h in Headers */,
    3327133327                                A1DF5A8F1F7EC0020058A477 /* JSApplePayRequest.h in Headers */,
    3327233328                                A1DF5AB31F8077530058A477 /* JSApplePayRequestBase.h in Headers */,
    3327333329                                1AE96A8F1D1A0DDD00B86768 /* JSApplePaySession.h in Headers */,
    3327433330                                A1D506142331EDD40014EE4E /* JSApplePaySessionError.h in Headers */,
     33331                                95EAD597266EF60B004B9CF1 /* JSApplePayShippingContactEditingMode.h in Headers */,
    3327533332                                1AE96A911D1A0DDD00B86768 /* JSApplePayShippingContactSelectedEvent.h in Headers */,
    3327633333                                A12C59FD20360B3E0012236B /* JSApplePayShippingContactUpdate.h in Headers */,
    3327733334                                7C6579F41E00856600E3A27A /* JSApplePayShippingMethod.h in Headers */,
    33278                                 951DEDD625E0849E0020E1EE /* JSApplePayShippingMethodData.h in Headers */,
    3327933335                                1AE96A931D1A0DDD00B86768 /* JSApplePayShippingMethodSelectedEvent.h in Headers */,
    3328033336                                A12C59FE20360B4A0012236B /* JSApplePayShippingMethodUpdate.h in Headers */,
  • trunk/Source/WebCore/dom/EventNames.h

    r278336 r278630  
    3333#endif
    3434
    35 #if USE(APPLE_INTERNAL_SDK)
    36 #include <WebKitAdditions/EventNamesAdditions.h>
     35namespace WebCore {
     36
     37#if ENABLE(APPLE_PAY_COUPON_CODE)
     38#define DOM_EVENT_NAME_APPLE_PAY_COUPON_CODE_CHANGED(macro) macro(couponcodechanged)
     39#else
     40#define DOM_EVENT_NAME_APPLE_PAY_COUPON_CODE_CHANGED(macro)
    3741#endif
    3842
    39 namespace WebCore {
    40 
    41 #if !defined(ADDITIONAL_DOM_EVENT_NAMES_FOR_EACH)
    42 #define ADDITIONAL_DOM_EVENT_NAMES_FOR_EACH(macro)
    43 #endif
    44 
    4543#define DOM_EVENT_NAMES_FOR_EACH(macro) \
    46     ADDITIONAL_DOM_EVENT_NAMES_FOR_EACH(macro) \
    4744    macro(DOMActivate) \
    4845    macro(DOMCharacterDataModified) \
     
    104101    macro(coordinatorstatechange) \
    105102    macro(copy) \
     103    DOM_EVENT_NAME_APPLE_PAY_COUPON_CODE_CHANGED(macro) \
    106104    macro(cuechange) \
    107105    macro(cut) \
  • trunk/Source/WebCore/dom/EventNames.in

    r275151 r278630  
    4545XMLHttpRequestProgressEvent
    4646ApplePayCancelEvent conditional=APPLE_PAY
     47ApplePayCouponCodeChangedEvent conditional=APPLE_PAY_COUPON_CODE
    4748ApplePayPaymentAuthorizedEvent conditional=APPLE_PAY
    4849ApplePayPaymentMethodSelectedEvent conditional=APPLE_PAY
  • trunk/Source/WebCore/loader/EmptyClients.cpp

    r278516 r278630  
    412412    void completeShippingContactSelection(std::optional<ApplePayShippingContactUpdate>&&) final { }
    413413    void completePaymentMethodSelection(std::optional<ApplePayPaymentMethodUpdate>&&) final { }
    414 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    415     void completePaymentMethodModeChange(std::optional<ApplePayPaymentMethodModeUpdate>&&) final { }
     414#if ENABLE(APPLE_PAY_COUPON_CODE)
     415    void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&) final { }
    416416#endif
    417417    void completePaymentSession(std::optional<PaymentAuthorizationResult>&&) final { }
  • trunk/Source/WebCore/testing/MockPaymentCoordinator.cpp

    r278253 r278630  
    2929#if ENABLE(APPLE_PAY)
    3030
    31 #include "ApplePayPaymentMethodModeUpdate.h"
     31#include "ApplePayCouponCodeUpdate.h"
    3232#include "ApplePayPaymentMethodUpdate.h"
    3333#include "ApplePaySessionPaymentRequest.h"
     34#include "ApplePayShippingContactEditingMode.h"
    3435#include "ApplePayShippingContactUpdate.h"
    3536#include "ApplePayShippingMethodUpdate.h"
     
    114115    m_installmentConfiguration = request.installmentConfiguration().applePayInstallmentConfiguration();
    115116#endif
     117#if ENABLE(APPLE_PAY_COUPON_CODE)
     118    m_supportsCouponCode = request.supportsCouponCode();
     119    m_couponCode = request.couponCode();
     120#endif
     121#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     122    m_shippingContactEditingMode = request.shippingContactEditingMode();
     123#endif
    116124#if defined(MockPaymentCoordinatorAdditions_showPaymentUI)
    117125    MockPaymentCoordinatorAdditions_showPaymentUI
     
    181189}
    182190
    183 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    184 
    185 void MockPaymentCoordinator::completePaymentMethodModeChange(std::optional<ApplePayPaymentMethodModeUpdate>&& paymentMethodModeUpdate)
    186 {
    187     if (!paymentMethodModeUpdate)
    188         return;
    189 
    190     m_total = WTFMove(paymentMethodModeUpdate->newTotal);
    191     m_lineItems = WTFMove(paymentMethodModeUpdate->newLineItems);
    192     m_errors = convert(WTFMove(paymentMethodModeUpdate->errors));
    193     m_shippingMethods = WTFMove(paymentMethodModeUpdate->newShippingMethods);
    194 #if defined(MockPaymentCoordinatorAdditions_completePaymentMethodModeChange)
    195     MockPaymentCoordinatorAdditions_completePaymentMethodModeChange
    196 #endif
    197 }
    198 
    199 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     191#if ENABLE(APPLE_PAY_COUPON_CODE)
     192
     193void MockPaymentCoordinator::completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&& couponCodeUpdate)
     194{
     195    if (!couponCodeUpdate)
     196        return;
     197
     198    m_total = WTFMove(couponCodeUpdate->newTotal);
     199    m_lineItems = WTFMove(couponCodeUpdate->newLineItems);
     200    m_errors = convert(WTFMove(couponCodeUpdate->errors));
     201    m_shippingMethods = WTFMove(couponCodeUpdate->newShippingMethods);
     202#if defined(MockPaymentCoordinatorAdditions_completeCouponCodeChange)
     203    MockPaymentCoordinatorAdditions_completeCouponCodeChange
     204#endif
     205}
     206
     207#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    200208
    201209void MockPaymentCoordinator::changeShippingOption(String&& shippingOption)
     
    215223}
    216224
     225#if ENABLE(APPLE_PAY_COUPON_CODE)
     226
     227void MockPaymentCoordinator::changeCouponCode(String&& couponCode)
     228{
     229    dispatchIfShowing([page = &m_page, couponCode = WTFMove(couponCode)]() mutable {
     230        page->paymentCoordinator().didChangeCouponCode(WTFMove(couponCode));
     231    });
     232}
     233
     234#endif // ENABLE(APPLE_PAY_COUPON_CODE)
     235
    217236void MockPaymentCoordinator::acceptPayment()
    218237{
  • trunk/Source/WebCore/testing/MockPaymentCoordinator.h

    r278340 r278630  
    3131#include "ApplePayLineItem.h"
    3232#include "ApplePaySetupConfiguration.h"
     33#include "ApplePayShippingContactEditingMode.h"
    3334#include "ApplePayShippingMethod.h"
    3435#include "MockPaymentAddress.h"
     
    5758    void changeShippingOption(String&& shippingOption);
    5859    void changePaymentMethod(ApplePayPaymentMethod&&);
     60#if ENABLE(APPLE_PAY_COUPON_CODE)
     61    void changeCouponCode(String&& couponCode);
     62#endif
    5963    void acceptPayment();
    6064    void cancelPayment();
     
    7781#endif
    7882
     83#if ENABLE(APPLE_PAY_COUPON_CODE)
     84    std::optional<bool> supportsCouponCode() const { return m_supportsCouponCode; }
     85    const String& couponCode() const { return m_couponCode; }
     86#endif
     87
     88#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     89    std::optional<ApplePayShippingContactEditingMode> shippingContactEditingMode() const { return m_shippingContactEditingMode; }
     90#endif
     91
    7992    void ref() const { }
    8093    void deref() const { }
     
    90103    void completeShippingContactSelection(std::optional<ApplePayShippingContactUpdate>&&) final;
    91104    void completePaymentMethodSelection(std::optional<ApplePayPaymentMethodUpdate>&&) final;
    92 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    93     void completePaymentMethodModeChange(std::optional<ApplePayPaymentMethodModeUpdate>&&) final;
    94 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     105#if ENABLE(APPLE_PAY_COUPON_CODE)
     106    void completeCouponCodeChange(std::optional<ApplePayCouponCodeUpdate>&&) final;
     107#endif
    95108    void completePaymentSession(std::optional<PaymentAuthorizationResult>&&) final;
    96109    void abortPaymentSession() final;
     
    122135    ApplePayInstallmentConfiguration m_installmentConfiguration;
    123136#endif
     137#if ENABLE(APPLE_PAY_COUPON_CODE)
     138    std::optional<bool> m_supportsCouponCode;
     139    String m_couponCode;
     140#endif
     141#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     142    std::optional<ApplePayShippingContactEditingMode> m_shippingContactEditingMode;
     143#endif
    124144    ApplePaySetupConfiguration m_setupConfiguration;
    125145    Vector<Ref<ApplePaySetupFeature>> m_setupFeatures;
  • trunk/Source/WebCore/testing/MockPaymentCoordinator.idl

    r266662 r278630  
    3333    undefined changeShippingOption(DOMString shippingOption);
    3434    undefined changePaymentMethod(ApplePayPaymentMethod paymentMethod);
     35    [Conditional=APPLE_PAY_COUPON_CODE] undefined changeCouponCode(DOMString couponCode);
    3536    undefined acceptPayment();
    3637    undefined cancelPayment();
     
    5051
    5152    [Conditional=APPLE_PAY_INSTALLMENTS] readonly attribute ApplePayInstallmentConfiguration installmentConfiguration;
     53
     54    [Conditional=APPLE_PAY_COUPON_CODE] readonly attribute boolean? supportsCouponCode;
     55    [Conditional=APPLE_PAY_COUPON_CODE] readonly attribute DOMString? couponCode;
     56
     57    [Conditional=APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE] readonly attribute ApplePayShippingContactEditingMode? shippingContactEditingMode;
    5258};
  • trunk/Source/WebKit/ChangeLog

    r278620 r278630  
     12021-06-08  Devin Rousso  <drousso@apple.com>
     2
     3        [Payment Request] upstream new features
     4        https://bugs.webkit.org/show_bug.cgi?id=226740
     5        <rdar://problem/78963132>
     6
     7        Reviewed by Andy Estes.
     8
     9         - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`)
     10         - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`)
     11         - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`)
     12         - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`)
     13         - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`)
     14
     15         * Platform/cocoa/PaymentAuthorizationViewController.mm:
     16         (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didChangeCouponCode:handler:]): Added.
     17         * Platform/ios/PaymentAuthorizationController.mm:
     18         (-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didChangeCouponCode:handler:]): Added.
     19        * Platform/cocoa/PaymentAuthorizationPresenter.h:
     20        * Platform/cocoa/PaymentAuthorizationPresenter.mm:
     21        (WebKit::toPKPaymentErrorCode):
     22        (WebKit::PaymentAuthorizationPresenter::completeCouponCodeChange): Renamed from `WebKit::PaymentAuthorizationPresenter::completePaymentMethodModeChange`.
     23        * Platform/cocoa/WKPaymentAuthorizationDelegate.h:
     24        * Platform/cocoa/WKPaymentAuthorizationDelegate.mm:
     25        (-[WKPaymentAuthorizationDelegate completeCouponCodeChange:]): Added.
     26        (toDateComponents): Added.
     27        (toDateComponentsRange): Added.
     28        (toShippingMethod):
     29        (-[WKPaymentAuthorizationDelegate _didChangeCouponCode:completion:]): Added.
     30        Add plumbing from/to PassKit for coupon code changes.
     31
     32        * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in:
     33        * Shared/ApplePay/WebPaymentCoordinatorProxy.h:
     34        * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:
     35        (WebKit::WebPaymentCoordinatorProxy::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::completePaymentMethodModeChange`.
     36        (WebKit::WebPaymentCoordinatorProxy::presenterDidChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode`.
     37        (WebKit::WebPaymentCoordinatorProxy::canBegin const):
     38        (WebKit::WebPaymentCoordinatorProxy::canCancel const):
     39        (WebKit::WebPaymentCoordinatorProxy::canCompletePayment const):
     40        (WebKit::WebPaymentCoordinatorProxy::canAbort const):
     41        * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
     42        (WebKit::toNSDateComponents): Added.
     43        (WebKit::toPKDateComponentsRange): Added.
     44        (WebKit::toPKShippingMethod):
     45        (WebKit::toPKShippingContactEditingMode): Added.
     46        (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest):
     47        (WebKit::WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange`.
     48        Convert PassKit objects to/from WebCore objects.
     49
     50        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
     51        (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::encode):
     52        (IPC::ArgumentCoder<WebCore::ApplePaySessionPaymentRequest>::decode):
     53
     54        * WebProcess/ApplePay/WebPaymentCoordinator.messages.in:
     55        * WebProcess/ApplePay/WebPaymentCoordinator.h:
     56        * WebProcess/ApplePay/WebPaymentCoordinator.cpp:
     57        (WebKit::WebPaymentCoordinator::completeCouponCodeChange): Renamed from `WebKit::WebPaymentCoordinator::completePaymentMethodModeChange`.
     58        (WebKit::WebPaymentCoordinator::didChangeCouponCode): Renamed from `WebKit::WebPaymentCoordinator::didChangePaymentMethodMode`.
     59        Plumbing into/from WebCore.
     60
    1612021-06-08  Truitt Savell  <tsavell@apple.com>
    262
  • trunk/Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.h

    r278253 r278630  
    4343class PaymentMethod;
    4444class PaymentSessionError;
    45 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    46 struct ApplePayPaymentMethodModeUpdate;
    47 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     45struct ApplePayCouponCodeUpdate;
    4846struct ApplePayPaymentMethodUpdate;
    4947struct ApplePayShippingContactUpdate;
     
    6664        virtual void presenterDidSelectShippingContact(PaymentAuthorizationPresenter&, const WebCore::PaymentContact&) = 0;
    6765        virtual void presenterDidSelectShippingMethod(PaymentAuthorizationPresenter&, const WebCore::ApplePayShippingMethod&) = 0;
    68 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    69         virtual void presenterDidChangePaymentMethodMode(PaymentAuthorizationPresenter&, const String& paymentMethodMode) = 0;
    70 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     66#if HAVE(PASSKIT_COUPON_CODE)
     67        virtual void presenterDidChangeCouponCode(PaymentAuthorizationPresenter&, const String& couponCode) = 0;
     68#endif
    7169        virtual void presenterWillValidateMerchant(PaymentAuthorizationPresenter&, const URL&) = 0;
    7270    };
     
    8179    void completeShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate>&&);
    8280    void completeShippingMethodSelection(std::optional<WebCore::ApplePayShippingMethodUpdate>&&);
    83 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    84     void completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&&);
    85 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     81#if HAVE(PASSKIT_COUPON_CODE)
     82    void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&);
     83#endif
    8684
    8785    virtual void dismiss() = 0;
  • trunk/Source/WebKit/Platform/cocoa/PaymentAuthorizationPresenter.mm

    r278253 r278630  
    3131#import "WKPaymentAuthorizationDelegate.h"
    3232#import "WebPaymentCoordinatorProxyCocoa.h"
     33#import <WebCore/ApplePayCouponCodeUpdate.h>
    3334#import <WebCore/ApplePayDetailsUpdateData.h>
    3435#import <WebCore/ApplePayError.h>
    3536#import <WebCore/ApplePayErrorCode.h>
    3637#import <WebCore/ApplePayErrorContactField.h>
    37 #import <WebCore/ApplePayPaymentMethodModeUpdate.h>
    3838#import <WebCore/ApplePayPaymentMethodUpdate.h>
    3939#import <WebCore/ApplePayShippingContactUpdate.h>
     
    8787    switch (code) {
    8888    case WebCore::ApplePayErrorCode::Unknown:
    89         return PKPaymentUnknownError;
     89        break;
     90
    9091    case WebCore::ApplePayErrorCode::ShippingContactInvalid:
    9192        return PKPaymentShippingContactInvalidError;
     93
    9294    case WebCore::ApplePayErrorCode::BillingContactInvalid:
    9395        return PKPaymentBillingContactInvalidError;
     96
    9497    case WebCore::ApplePayErrorCode::AddressUnserviceable:
    9598        return PKPaymentShippingAddressUnserviceableError;
    96 #if defined(PaymentAuthorizationPresenterAdditions_toPKPaymentErrorCode)
    97     PaymentAuthorizationPresenterAdditions_toPKPaymentErrorCode
    98 #endif
    99     }
     99
     100    case WebCore::ApplePayErrorCode::CouponCodeInvalid:
     101#if HAVE(PASSKIT_COUPON_CODE)
     102        return PKPaymentCouponCodeInvalidError;
     103#else
     104        break;
     105#endif
     106
     107    case WebCore::ApplePayErrorCode::CouponCodeExpired:
     108#if HAVE(PASSKIT_COUPON_CODE)
     109        return PKPaymentCouponCodeExpiredError;
     110#else
     111        break;
     112#endif
     113    }
     114
     115    return PKPaymentUnknownError;
    100116}
    101117
     
    257273}
    258274
    259 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    260 
    261 void PaymentAuthorizationPresenter::completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&& update)
    262 {
    263     ASSERT(platformDelegate());
    264     if (!update) {
    265         [platformDelegate() completePaymentMethodModeChange:nil];
    266         return;
    267     }
    268 
    269 #if defined(PaymentAuthorizationPresenterAdditions_completePaymentMethodModeChange)
    270     PaymentAuthorizationPresenterAdditions_completePaymentMethodModeChange
    271 #endif
    272     [platformDelegate() completePaymentMethodModeChange:paymentMethodModeUpdate.get()];
    273 }
    274 
    275 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     275#if HAVE(PASSKIT_COUPON_CODE)
     276
     277void PaymentAuthorizationPresenter::completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&& update)
     278{
     279    ASSERT(platformDelegate());
     280    if (!update) {
     281        [platformDelegate() completeCouponCodeChange:nil];
     282        return;
     283    }
     284
     285    auto couponCodeUpdate = adoptNS([PAL::allocPKPaymentRequestCouponCodeUpdateInstance() initWithErrors:toNSErrors(WTFMove(update->errors)).get() paymentSummaryItems:WebCore::platformSummaryItems(WTFMove(update->newTotal), WTFMove(update->newLineItems)) shippingMethods:toPKShippingMethods(WTFMove(update->newShippingMethods)).get()]);
     286#if defined(PaymentAuthorizationPresenterAdditions_completeCouponCodeChange)
     287    PaymentAuthorizationPresenterAdditions_completeCouponCodeChange
     288#endif
     289    [platformDelegate() completeCouponCodeChange:couponCodeUpdate.get()];
     290}
     291
     292#endif // HAVE(PASSKIT_COUPON_CODE)
    276293
    277294} // namespace WebKit
  • trunk/Source/WebKit/Platform/cocoa/PaymentAuthorizationViewController.mm

    r273159 r278630  
    3131#import "WKPaymentAuthorizationDelegate.h"
    3232#import <pal/cocoa/PassKitSoftLink.h>
    33 
    34 #if USE(APPLE_INTERNAL_SDK)
    35 #include <WebKitAdditions/PaymentAuthorizationViewControllerAdditions.mm>
    36 #endif
    3733
    3834@interface WKPaymentAuthorizationViewControllerDelegate : WKPaymentAuthorizationDelegate <PKPaymentAuthorizationViewControllerDelegate, PKPaymentAuthorizationViewControllerPrivateDelegate>
     
    8480}
    8581
    86 #if defined(PaymentAuthorizationViewControllerAdditions_PKPaymentAuthorizationViewControllerDelegate)
    87 PaymentAuthorizationViewControllerAdditions_PKPaymentAuthorizationViewControllerDelegate
    88 #endif
     82#if HAVE(PASSKIT_COUPON_CODE)
     83
     84- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didChangeCouponCode:(NSString *)couponCode handler:(void (^)(PKPaymentRequestCouponCodeUpdate *update))completion
     85{
     86    [self _didChangeCouponCode:couponCode completion:completion];
     87}
     88
     89#endif // HAVE(PASSKIT_COUPON_CODE)
    8990
    9091#pragma mark PKPaymentAuthorizationViewControllerDelegatePrivate
  • trunk/Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.h

    r273159 r278630  
    3434OBJC_CLASS UIViewController;
    3535
    36 #if USE(APPLE_INTERNAL_SDK)
    37 #include <WebKitAdditions/WKPaymentAuthorizationDelegateAdditions.h>
    38 #endif
    39 
    4036namespace WebKit {
    4137
     
    4844using DidSelectShippingContactCompletion = BlockPtr<void(PKPaymentRequestShippingContactUpdate *)>;
    4945using DidSelectShippingMethodCompletion = BlockPtr<void(PKPaymentRequestShippingMethodUpdate *)>;
     46#if HAVE(PASSKIT_COUPON_CODE)
     47using DidChangeCouponCodeCompletion = BlockPtr<void(PKPaymentRequestCouponCodeUpdate *)>;
     48#endif
    5049
    5150}
     
    6261- (void)completeShippingContactSelection:(PKPaymentRequestShippingContactUpdate *)shippingContactUpdate;
    6362- (void)completeShippingMethodSelection:(PKPaymentRequestShippingMethodUpdate *)shippingMethodUpdate;
    64 #if defined(WKPaymentAuthorizationDelegateAdditions_interface_public)
    65 WKPaymentAuthorizationDelegateAdditions_interface_public
     63#if HAVE(PASSKIT_COUPON_CODE)
     64- (void)completeCouponCodeChange:(PKPaymentRequestCouponCodeUpdate *)couponCodeUpdate;
    6665#endif
    6766- (void)invalidate;
     
    8079- (void)_didSelectShippingContact:(PKContact *)contact completion:(WebKit::DidSelectShippingContactCompletion::BlockType)completion;
    8180- (void)_didSelectShippingMethod:(PKShippingMethod *)shippingMethod completion:(WebKit::DidSelectShippingMethodCompletion::BlockType)completion;
    82 #if defined(WKPaymentAuthorizationDelegateAdditions_interface_protected)
    83 WKPaymentAuthorizationDelegateAdditions_interface_protected
     81#if HAVE(PASSKIT_COUPON_CODE)
     82- (void)_didChangeCouponCode:(NSString *)couponCode completion:(WebKit::DidChangeCouponCodeCompletion::BlockType)completion;
    8483#endif
    8584- (void)_getPaymentServicesMerchantURL:(void(^)(NSURL *, NSError *))completion;
  • trunk/Source/WebKit/Platform/cocoa/WKPaymentAuthorizationDelegate.mm

    r273201 r278630  
    3434#import <WebCore/PaymentSessionError.h>
    3535
    36 #if USE(APPLE_INTERNAL_SDK)
    37 #include <WebKitAdditions/WKPaymentAuthorizationDelegateAdditions.mm>
    38 #endif
    39 
    4036@implementation WKPaymentAuthorizationDelegate {
    4137    RetainPtr<NSArray<PKPaymentSummaryItem *>> _summaryItems;
     
    4844    WebKit::DidSelectShippingContactCompletion _didSelectShippingContactCompletion;
    4945    WebKit::DidSelectShippingMethodCompletion _didSelectShippingMethodCompletion;
    50 #if defined(WKPaymentAuthorizationDelegateAdditions_implementation_members)
    51     WKPaymentAuthorizationDelegateAdditions_implementation_members
     46#if HAVE(PASSKIT_COUPON_CODE)
     47    WebKit::DidChangeCouponCodeCompletion _didChangeCouponCodeCompletion;
    5248#endif
    5349}
     
    9591}
    9692
    97 #if defined(WKPaymentAuthorizationDelegateAdditions_implementation_public)
    98     WKPaymentAuthorizationDelegateAdditions_implementation_public
    99 #endif
     93#if HAVE(PASSKIT_COUPON_CODE)
     94
     95- (void)completeCouponCodeChange:(PKPaymentRequestCouponCodeUpdate *)couponCodeUpdate
     96{
     97    PKPaymentRequestCouponCodeUpdate *update = couponCodeUpdate ?: adoptNS([PAL::allocPKPaymentRequestCouponCodeUpdateInstance() initWithErrors:@[] paymentSummaryItems:_summaryItems.get() shippingMethods:_shippingMethods.get()]).autorelease();
     98    _summaryItems = adoptNS([update.paymentSummaryItems copy]);
     99    _shippingMethods = adoptNS([update.shippingMethods copy]);
     100    std::exchange(_didChangeCouponCodeCompletion, nil)(update);
     101}
     102
     103#endif // HAVE(PASSKIT_COUPON_CODE)
    100104
    101105- (void)invalidate
     
    186190}
    187191
     192#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     193
     194static WebCore::ApplePayDateComponents toDateComponents(NSDateComponents *dateComponents)
     195{
     196    ASSERT(dateComponents);
     197
     198    WebCore::ApplePayDateComponents result;
     199    result.years = dateComponents.year;
     200    result.months = dateComponents.month;
     201    result.days = dateComponents.day;
     202    result.hours = dateComponents.hour;
     203    return result;
     204}
     205
     206static WebCore::ApplePayDateComponentsRange toDateComponentsRange(PKDateComponentsRange *dateComponentsRange)
     207{
     208    ASSERT(dateComponentsRange);
     209
     210    WebCore::ApplePayDateComponentsRange result;
     211    result.startDateComponents = toDateComponents(dateComponentsRange.startDateComponents);
     212    result.endDateComponents = toDateComponents(dateComponentsRange.endDateComponents);
     213    return result;
     214}
     215
     216#endif // HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     217
    188218static WebCore::ApplePayShippingMethod toShippingMethod(PKShippingMethod *shippingMethod)
    189219{
     
    195225    result.identifier = shippingMethod.identifier;
    196226    result.label = shippingMethod.label;
    197 #if defined(WKPaymentAuthorizationDelegateAdditions_toShippingMethod)
    198     WKPaymentAuthorizationDelegateAdditions_toShippingMethod
     227#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     228    if (shippingMethod.dateComponentsRange)
     229        result.dateComponentsRange = toDateComponentsRange(shippingMethod.dateComponentsRange);
    199230#endif
    200231    return result;
     
    213244}
    214245
    215 #if defined(WKPaymentAuthorizationDelegateAdditions_implementation_protected)
    216     WKPaymentAuthorizationDelegateAdditions_implementation_protected
    217 #endif
     246#if HAVE(PASSKIT_COUPON_CODE)
     247
     248- (void)_didChangeCouponCode:(NSString *)couponCode completion:(void (^)(PKPaymentRequestCouponCodeUpdate *update))completion
     249{
     250    ASSERT(!_didChangeCouponCodeCompletion);
     251    _didChangeCouponCodeCompletion = completion;
     252
     253    auto presenter = _presenter.get();
     254    if (!presenter)
     255        return [self completeCouponCodeChange:nil];
     256
     257    presenter->client().presenterDidChangeCouponCode(*presenter, couponCode);
     258}
     259
     260#endif // HAVE(PASSKIT_COUPON_CODE)
    218261
    219262- (void) NO_RETURN_DUE_TO_ASSERT _getPaymentServicesMerchantURL:(void(^)(NSURL *, NSError *))completion
  • trunk/Source/WebKit/Platform/ios/PaymentAuthorizationController.mm

    r273159 r278630  
    3232#import <pal/cocoa/PassKitSoftLink.h>
    3333#import <wtf/CompletionHandler.h>
    34 
    35 #if USE(APPLE_INTERNAL_SDK)
    36 #include <WebKitAdditions/PaymentAuthorizationControllerAdditions.mm>
    37 #endif
    3834
    3935@interface WKPaymentAuthorizationControllerDelegate : WKPaymentAuthorizationDelegate <PKPaymentAuthorizationControllerDelegate, PKPaymentAuthorizationControllerPrivateDelegate>
     
    8985}
    9086
    91 #if defined(PaymentAuthorizationControllerAdditions_PKPaymentAuthorizationControllerDelegate)
    92 PaymentAuthorizationControllerAdditions_PKPaymentAuthorizationControllerDelegate
    93 #endif
     87#if HAVE(PASSKIT_COUPON_CODE)
     88
     89- (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller didChangeCouponCode:(NSString *)couponCode handler:(void (^)(PKPaymentRequestCouponCodeUpdate *update))completion
     90{
     91    [self _didChangeCouponCode:couponCode completion:completion];
     92}
     93
     94#endif // HAVE(PASSKIT_COUPON_CODE)
    9495
    9596#pragma mark PKPaymentAuthorizationControllerPrivateDelegate
  • trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.cpp

    r278253 r278630  
    3434#include "WebPaymentCoordinatorProxyMessages.h"
    3535#include "WebProcessProxy.h"
    36 #include <WebCore/ApplePayPaymentMethodModeUpdate.h>
     36#include <WebCore/ApplePayCouponCodeUpdate.h>
    3737#include <WebCore/ApplePayPaymentMethodUpdate.h>
    3838#include <WebCore/ApplePayShippingContactUpdate.h>
     
    169169}
    170170
    171 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    172 
    173 void WebPaymentCoordinatorProxy::completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&& update)
    174 {
    175     // It's possible that the payment has been canceled already.
    176     if (m_state == State::Idle)
    177         return;
    178 
    179     MESSAGE_CHECK(m_state == State::PaymentMethodModeChanged);
    180 
    181     platformCompletePaymentMethodModeChange(WTFMove(update));
     171#if ENABLE(APPLE_PAY_COUPON_CODE)
     172
     173void WebPaymentCoordinatorProxy::completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&& update)
     174{
     175    // It's possible that the payment has been canceled already.
     176    if (m_state == State::Idle)
     177        return;
     178
     179    MESSAGE_CHECK(m_state == State::CouponCodeChanged);
     180
     181    platformCompleteCouponCodeChange(WTFMove(update));
    182182    m_state = State::Active;
    183183}
    184184
    185 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     185#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    186186
    187187void WebPaymentCoordinatorProxy::completePaymentSession(const std::optional<WebCore::PaymentAuthorizationResult>& result)
     
    247247}
    248248
    249 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    250 
    251 void WebPaymentCoordinatorProxy::presenterDidChangePaymentMethodMode(PaymentAuthorizationPresenter&, const String& paymentMethodMode)
     249#if ENABLE(APPLE_PAY_COUPON_CODE)
     250
     251void WebPaymentCoordinatorProxy::presenterDidChangeCouponCode(PaymentAuthorizationPresenter&, const String& couponCode)
    252252{
    253253    ASSERT(m_state == State::Active);
    254254
    255     m_state = State::PaymentMethodModeChanged;
    256     send(Messages::WebPaymentCoordinator::DidChangePaymentMethodMode(paymentMethodMode));
    257 }
    258 
    259 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     255    m_state = State::CouponCodeChanged;
     256    send(Messages::WebPaymentCoordinator::DidChangeCouponCode(couponCode));
     257}
     258
     259#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    260260
    261261void WebPaymentCoordinatorProxy::presenterDidSelectShippingContact(PaymentAuthorizationPresenter&, const WebCore::PaymentContact& shippingContact)
     
    288288    case State::ShippingContactSelected:
    289289    case State::PaymentMethodSelected:
    290 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    291     case State::PaymentMethodModeChanged:
    292 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     290#if ENABLE(APPLE_PAY_COUPON_CODE)
     291    case State::CouponCodeChanged:
     292#endif
    293293        return false;
    294294    }
     
    304304    case State::ShippingContactSelected:
    305305    case State::PaymentMethodSelected:
    306 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    307     case State::PaymentMethodModeChanged:
    308 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     306#if ENABLE(APPLE_PAY_COUPON_CODE)
     307    case State::CouponCodeChanged:
     308#endif
    309309        return true;
    310310
     
    328328    case State::ShippingContactSelected:
    329329    case State::PaymentMethodSelected:
    330 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    331     case State::PaymentMethodModeChanged:
    332 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     330#if ENABLE(APPLE_PAY_COUPON_CODE)
     331    case State::CouponCodeChanged:
     332#endif
    333333        return false;
    334334    }
     
    344344    case State::ShippingContactSelected:
    345345    case State::PaymentMethodSelected:
    346 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    347     case State::PaymentMethodModeChanged:
    348 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     346#if ENABLE(APPLE_PAY_COUPON_CODE)
     347    case State::CouponCodeChanged:
     348#endif
    349349        return true;
    350350
  • trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h

    r278253 r278630  
    5252class PaymentMerchantSession;
    5353class PaymentMethod;
    54 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    55 struct ApplePayPaymentMethodModeUpdate;
    56 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     54struct ApplePayCouponCodeUpdate;
    5755struct ApplePayPaymentMethodUpdate;
    5856struct ApplePayShippingContactUpdate;
     
    121119    void presenterDidSelectShippingContact(PaymentAuthorizationPresenter&, const WebCore::PaymentContact&) final;
    122120    void presenterDidSelectShippingMethod(PaymentAuthorizationPresenter&, const WebCore::ApplePayShippingMethod&) final;
    123 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    124     void presenterDidChangePaymentMethodMode(PaymentAuthorizationPresenter&, const String& paymentMethodMode) final;
    125 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     121#if ENABLE(APPLE_PAY_COUPON_CODE)
     122    void presenterDidChangeCouponCode(PaymentAuthorizationPresenter&, const String& couponCode) final;
     123#endif
    126124    void presenterWillValidateMerchant(PaymentAuthorizationPresenter&, const URL&) final;
    127125
     
    135133    void completeShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate>&&);
    136134    void completePaymentMethodSelection(std::optional<WebCore::ApplePayPaymentMethodUpdate>&&);
    137 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    138     void completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&&);
    139 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     135#if ENABLE(APPLE_PAY_COUPON_CODE)
     136    void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&);
     137#endif
    140138    void completePaymentSession(const std::optional<WebCore::PaymentAuthorizationResult>&);
    141139    void abortPaymentSession();
     
    163161    void platformCompleteShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate>&&);
    164162    void platformCompletePaymentMethodSelection(std::optional<WebCore::ApplePayPaymentMethodUpdate>&&);
    165 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    166     void platformCompletePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&&);
    167 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     163#if ENABLE(APPLE_PAY_COUPON_CODE)
     164    void platformCompleteCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&);
     165#endif
    168166    void platformCompletePaymentSession(const std::optional<WebCore::PaymentAuthorizationResult>&);
    169167    void platformHidePaymentUI();
     
    197195        PaymentMethodSelected,
    198196
    199 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    200         // PaymentMethodSelected - Dispatching the paymentmethodmodechanged event and waiting for a reply.
    201         PaymentMethodModeChanged,
    202 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     197#if ENABLE(APPLE_PAY_COUPON_CODE)
     198        // CouponCodeChanged - Dispatching the couponcodechanged event and waiting for a reply.
     199        CouponCodeChanged,
     200#endif
    203201
    204202        // Completing - Completing the payment and waiting for presenterDidFinish to be called.
  • trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in

    r278253 r278630  
    3636    CompleteShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate> update)
    3737    CompletePaymentMethodSelection(std::optional<WebCore::ApplePayPaymentMethodUpdate> update)
    38 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    39     CompletePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate> update)
    40 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     38#if ENABLE(APPLE_PAY_COUPON_CODE)
     39    CompleteCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate> update)
     40#endif
    4141    CompletePaymentSession(std::optional<WebCore::PaymentAuthorizationResult> result)
    4242    AbortPaymentSession()
  • trunk/Source/WebKit/Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm

    r278253 r278630  
    3737#import "WebPaymentCoordinatorProxyMessages.h"
    3838#import "WebProcessProxy.h"
    39 #import <WebCore/ApplePayPaymentMethodModeUpdate.h>
     39#import <WebCore/ApplePayCouponCodeUpdate.h>
    4040#import <WebCore/ApplePayPaymentMethodUpdate.h>
    4141#import <WebCore/ApplePayShippingContactUpdate.h>
     
    166166}
    167167
     168#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     169
     170static RetainPtr<NSDateComponents> toNSDateComponents(const WebCore::ApplePayDateComponents& dateComponents)
     171{
     172    auto result = adoptNS([[NSDateComponents alloc] init]);
     173    [result setCalendar:[NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]];
     174    if (dateComponents.years)
     175        [result setYear:*dateComponents.years];
     176    if (dateComponents.months)
     177        [result setMonth:*dateComponents.months];
     178    if (dateComponents.days)
     179        [result setDay:*dateComponents.days];
     180    if (dateComponents.hours)
     181        [result setHour:*dateComponents.hours];
     182    return result;
     183}
     184
     185static RetainPtr<PKDateComponentsRange> toPKDateComponentsRange(const WebCore::ApplePayDateComponentsRange& dateComponentsRange)
     186{
     187    return adoptNS([PAL::allocPKDateComponentsRangeInstance() initWithStartDateComponents:toNSDateComponents(dateComponentsRange.startDateComponents).get() endDateComponents:toNSDateComponents(dateComponentsRange.endDateComponents).get()]);
     188}
     189
     190#endif // HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     191
    168192PKShippingMethod *toPKShippingMethod(const WebCore::ApplePayShippingMethod& shippingMethod)
    169193{
     
    171195    [result setIdentifier:shippingMethod.identifier];
    172196    [result setDetail:shippingMethod.detail];
    173 #if defined(WebPaymentCoordinatorProxyCocoaAdditions_toPKShippingMethod)
    174     WebPaymentCoordinatorProxyCocoaAdditions_toPKShippingMethod
     197#if HAVE(PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE)
     198    if (auto& dateComponentsRange = shippingMethod.dateComponentsRange)
     199        [result setDateComponentsRange:toPKDateComponentsRange(*dateComponentsRange).get()];
    175200#endif
    176201    return result;
    177202}
     203
     204#if HAVE(PASSKIT_SHIPPING_CONTACT_EDITING_MODE)
     205
     206static PKShippingContactEditingMode toPKShippingContactEditingMode(WebCore::ApplePayShippingContactEditingMode shippingContactEditingMode)
     207{
     208    switch (shippingContactEditingMode) {
     209    case WebCore::ApplePayShippingContactEditingMode::Enabled:
     210        return PKShippingContactEditingModeEnabled;
     211
     212    case WebCore::ApplePayShippingContactEditingMode::StorePickup:
     213        return PKShippingContactEditingModeStorePickup;
     214    }
     215
     216    ASSERT_NOT_REACHED();
     217    return PKShippingContactEditingModeEnabled;
     218}
     219
     220#endif // HAVE(PASSKIT_SHIPPING_CONTACT_EDITING_MODE)
    178221
    179222static RetainPtr<NSSet> toNSSet(const Vector<String>& strings)
     
    266309#endif
    267310
     311#if HAVE(PASSKIT_COUPON_CODE)
     312    if (auto supportsCouponCode = paymentRequest.supportsCouponCode())
     313        [result setSupportsCouponCode:*supportsCouponCode];
     314
     315    if (auto& couponCode = paymentRequest.couponCode(); !couponCode.isNull())
     316        [result setCouponCode:couponCode];
     317#endif
     318
     319#if HAVE(PASSKIT_SHIPPING_CONTACT_EDITING_MODE)
     320    if (auto& shippingContactEditingMode = paymentRequest.shippingContactEditingMode())
     321        [result setShippingContactEditingMode:toPKShippingContactEditingMode(*shippingContactEditingMode)];
     322#endif
     323
    268324#if defined(WebPaymentCoordinatorProxyCocoaAdditions_platformPaymentRequest)
    269325    WebPaymentCoordinatorProxyCocoaAdditions_platformPaymentRequest
     
    298354}
    299355
    300 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    301 
    302 void WebPaymentCoordinatorProxy::platformCompletePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&& update)
    303 {
    304     m_authorizationPresenter->completePaymentMethodModeChange(WTFMove(update));
    305 }
    306 
    307 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     356#if ENABLE(APPLE_PAY_COUPON_CODE)
     357
     358void WebPaymentCoordinatorProxy::platformCompleteCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&& update)
     359{
     360    m_authorizationPresenter->completeCouponCodeChange(WTFMove(update));
     361}
     362
     363#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    308364
    309365void WebPaymentCoordinatorProxy::getSetupFeatures(const PaymentSetupConfiguration& configuration, Messages::WebPaymentCoordinatorProxy::GetSetupFeatures::AsyncReply&& reply)
  • trunk/Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm

    r278575 r278630  
    202202    encoder << request.installmentConfiguration();
    203203#endif
     204#if ENABLE(APPLE_PAY_COUPON_CODE)
     205    encoder << request.supportsCouponCode();
     206    encoder << request.couponCode();
     207#endif
     208#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     209    encoder << request.shippingContactEditingMode();
     210#endif
    204211#if defined(WebCoreArgumentCodersCocoaAdditions_ApplePaySessionPaymentRequest_encode)
    205212    WebCoreArgumentCodersCocoaAdditions_ApplePaySessionPaymentRequest_encode
     
    294301
    295302    request.setInstallmentConfiguration(WTFMove(*installmentConfiguration));
     303#endif
     304
     305#if ENABLE(APPLE_PAY_COUPON_CODE)
     306    std::optional<std::optional<bool>> supportsCouponCode;
     307    decoder >> supportsCouponCode;
     308    if (!supportsCouponCode)
     309        return false;
     310    request.setSupportsCouponCode(WTFMove(*supportsCouponCode));
     311
     312    std::optional<String> couponCode;
     313    decoder >> couponCode;
     314    if (!couponCode)
     315        return false;
     316    request.setCouponCode(WTFMove(*couponCode));
     317#endif
     318
     319#if ENABLE(APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE)
     320    std::optional<std::optional<WebCore::ApplePayShippingContactEditingMode>> shippingContactEditingMode;
     321    decoder >> shippingContactEditingMode;
     322    if (!shippingContactEditingMode)
     323        return false;
     324    request.setShippingContactEditingMode(WTFMove(*shippingContactEditingMode));
    296325#endif
    297326
  • trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.cpp

    r278253 r278630  
    3737#include "WebPaymentCoordinatorProxyMessages.h"
    3838#include "WebProcess.h"
    39 #include <WebCore/ApplePayPaymentMethodModeUpdate.h>
     39#include <WebCore/ApplePayCouponCodeUpdate.h>
    4040#include <WebCore/ApplePayPaymentMethodUpdate.h>
    4141#include <WebCore/ApplePayShippingContactUpdate.h>
     
    129129}
    130130
    131 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    132 
    133 void WebPaymentCoordinator::completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&& update)
    134 {
    135     send(Messages::WebPaymentCoordinatorProxy::CompletePaymentMethodModeChange(WTFMove(update)));
    136 }
    137 
    138 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     131#if ENABLE(APPLE_PAY_COUPON_CODE)
     132
     133void WebPaymentCoordinator::completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&& update)
     134{
     135    send(Messages::WebPaymentCoordinatorProxy::CompleteCouponCodeChange(WTFMove(update)));
     136}
     137
     138#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    139139
    140140void WebPaymentCoordinator::completePaymentSession(std::optional<WebCore::PaymentAuthorizationResult>&& result)
     
    217217}
    218218
    219 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    220 
    221 void WebPaymentCoordinator::didChangePaymentMethodMode(String&& paymentMethodMode)
    222 {
    223     paymentCoordinator().didChangePaymentMethodMode(WTFMove(paymentMethodMode));
    224 }
    225 
    226 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     219#if ENABLE(APPLE_PAY_COUPON_CODE)
     220
     221void WebPaymentCoordinator::didChangeCouponCode(String&& couponCode)
     222{
     223    paymentCoordinator().didChangeCouponCode(WTFMove(couponCode));
     224}
     225
     226#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    227227
    228228void WebPaymentCoordinator::didCancelPaymentSession(WebCore::PaymentSessionError&& sessionError)
  • trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.h

    r278253 r278630  
    6969    void completeShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate>&&) override;
    7070    void completePaymentMethodSelection(std::optional<WebCore::ApplePayPaymentMethodUpdate>&&) override;
    71 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    72     void completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&&) override;
    73 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     71#if ENABLE(APPLE_PAY_COUPON_CODE)
     72    void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&) override;
     73#endif
    7474    void completePaymentSession(std::optional<WebCore::PaymentAuthorizationResult>&&) override;
    7575
     
    103103    void didSelectShippingContact(const WebCore::PaymentContact&);
    104104    void didSelectPaymentMethod(const WebCore::PaymentMethod&);
    105 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    106     void didChangePaymentMethodMode(String&& paymentMethodMode);
    107 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     105#if ENABLE(APPLE_PAY_COUPON_CODE)
     106    void didChangeCouponCode(String&& couponCode);
     107#endif
    108108    void didCancelPaymentSession(WebCore::PaymentSessionError&&);
    109109
  • trunk/Source/WebKit/WebProcess/ApplePay/WebPaymentCoordinator.messages.in

    r273159 r278630  
    3232    DidSelectShippingContact(WebCore::PaymentContact shippingContact)
    3333    DidSelectPaymentMethod(WebCore::PaymentMethod paymentMethod)
    34 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    35     DidChangePaymentMethodMode(String paymentMethodMode)
    36 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     34#if ENABLE(APPLE_PAY_COUPON_CODE)
     35    DidChangeCouponCode(String couponCode)
     36#endif
    3737    DidCancelPaymentSession(WebCore::PaymentSessionError sessionError)
    3838}
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r278575 r278630  
     12021-06-08  Devin Rousso  <drousso@apple.com>
     2
     3        [Payment Request] upstream new features
     4        https://bugs.webkit.org/show_bug.cgi?id=226740
     5        <rdar://problem/78963132>
     6
     7        Reviewed by Andy Estes.
     8
     9         - recurring line items (`HAVE_PASSKIT_RECURRING_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_RECURRING_LINE_ITEM`)
     10         - deferred line items (`HAVE_PASSKIT_DEFERRED_SUMMARY_ITEM` and `ENABLE_APPLE_PAY_DEFERRED_LINE_ITEM`)
     11         - estimated shipping dates (`HAVE_PASSKIT_SHIPPING_METHOD_DATE_COMPONENTS_RANGE` and `ENABLE_APPLE_PAY_SHIPPING_METHOD_DATE_COMPONENTS_RANGE`)
     12         - coupon code entry (`HAVE_PASSKIT_COUPON_CODE` and `ENABLE_APPLE_PAY_COUPON_CODE`)
     13         - shipped vs in-store pickup (`HAVE_PASSKIT_SHIPPING_CONTACT_EDITING_MODE` and `ENABLE_APPLE_PAY_SHIPPING_CONTACT_EDITING_MODE`)
     14
     15        * WebCoreSupport/WebPaymentCoordinatorClient.h:
     16        * WebCoreSupport/WebPaymentCoordinatorClient.mm:
     17        (WebPaymentCoordinatorClient::completeCouponCodeChange): Renamed from `WebPaymentCoordinatorClient::completePaymentMethodModeChange`.
     18
    1192021-06-07  Wenson Hsieh  <wenson_hsieh@apple.com>
    220
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.h

    r278253 r278630  
    4646    void completeShippingContactSelection(std::optional<WebCore::ApplePayShippingContactUpdate>&&) override;
    4747    void completePaymentMethodSelection(std::optional<WebCore::ApplePayPaymentMethodUpdate>&&) override;
    48 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
    49     void completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&&) override;
    50 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     48#if ENABLE(APPLE_PAY_COUPON_CODE)
     49    void completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&) override;
     50#endif
    5151    void completePaymentSession(std::optional<WebCore::PaymentAuthorizationResult>&&) override;
    5252    void abortPaymentSession() override;
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPaymentCoordinatorClient.mm

    r278253 r278630  
    8585}
    8686
    87 #if ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     87#if ENABLE(APPLE_PAY_COUPON_CODE)
    8888
    89 void WebPaymentCoordinatorClient::completePaymentMethodModeChange(std::optional<WebCore::ApplePayPaymentMethodModeUpdate>&&)
     89void WebPaymentCoordinatorClient::completeCouponCodeChange(std::optional<WebCore::ApplePayCouponCodeUpdate>&&)
    9090{
    9191}
    9292
    93 #endif // ENABLE(APPLE_PAY_PAYMENT_METHOD_MODE)
     93#endif // ENABLE(APPLE_PAY_COUPON_CODE)
    9494
    9595void WebPaymentCoordinatorClient::completePaymentSession(std::optional<WebCore::PaymentAuthorizationResult>&&)
Note: See TracChangeset for help on using the changeset viewer.