Title: [261785] trunk
Revision
261785
Author
[email protected]
Date
2020-05-16 12:13:58 -0700 (Sat, 16 May 2020)

Log Message

REGRESSION (r260717): installmentConfiguration member is no longer available on ApplePayPaymentRequest
https://bugs.webkit.org/show_bug.cgi?id=211911
<rdar://problem/63236367>

Reviewed by Tim Horton.

Source/WebCore:

Prior to r260717, installmentConfiguration was a member of ApplePayRequestBase, making it
available on ApplePayRequest and ApplePayPaymentRequest. In r260717, it was mistakenly
moved to ApplePayRequest.

This change moves it back to ApplePayRequestBase, adds infrastructure for regression testing
ApplePayInstallmentConfiguration, and adds a regression test.

Test: http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html

* Modules/applepay/ApplePayInstallmentConfiguration.idl:
* Modules/applepay/ApplePayRequestBase.cpp:
(WebCore::convertAndValidate):
(WebCore::finishConverting): Deleted.
* Modules/applepay/ApplePayRequestBase.idl:
* Modules/applepay/PaymentInstallmentConfiguration.mm:
(WebCore::fromDecimalNumber):
(WebCore::applePaySetupFeatureType):
(WebCore::PaymentInstallmentConfiguration::applePayInstallmentConfiguration const):
* Modules/applepay/PaymentInstallmentConfigurationWebCore.h:
* Modules/applepay/paymentrequest/ApplePayRequest.idl:
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::showPaymentUI):
* testing/MockPaymentCoordinator.h:
* testing/MockPaymentCoordinator.idl:

Source/WebKit:

* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode):
(IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
(IPC::finishDecoding): Deleted.
(IPC::finishEncoding): Deleted.

LayoutTests:

* http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https-expected.txt: Added.
* http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (261784 => 261785)


--- trunk/LayoutTests/ChangeLog	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/LayoutTests/ChangeLog	2020-05-16 19:13:58 UTC (rev 261785)
@@ -1,3 +1,14 @@
+2020-05-16  Andy Estes  <[email protected]>
+
+        REGRESSION (r260717): installmentConfiguration member is no longer available on ApplePayPaymentRequest
+        https://bugs.webkit.org/show_bug.cgi?id=211911
+        <rdar://problem/63236367>
+
+        Reviewed by Tim Horton.
+
+        * http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https-expected.txt: Added.
+        * http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html: Added.
+
 2020-05-16  Zalan Bujtas  <[email protected]>
 
         [LFC][TFC] Ignore table padding when borders are collapsed

Added: trunk/LayoutTests/http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https-expected.txt (0 => 261785)


--- trunk/LayoutTests/http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https-expected.txt	2020-05-16 19:13:58 UTC (rev 261785)
@@ -0,0 +1,17 @@
+Test ApplePayInstallmentConfiguration.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS internals.mockPaymentCoordinator.installmentConfiguration.bindingTotalAmount is expectedBindingTotalAmount
+PASS internals.mockPaymentCoordinator.installmentConfiguration.currencyCode is expectedCurrencyCode
+PASS internals.mockPaymentCoordinator.installmentConfiguration.featureType is expectedFeatureType
+PASS internals.mockPaymentCoordinator.installmentConfiguration.isInStorePurchase is expectedIsInStorePurchase
+PASS internals.mockPaymentCoordinator.installmentConfiguration.merchandisingImageData is expectedMerchandisingImageData
+PASS internals.mockPaymentCoordinator.installmentConfiguration.merchantIdentifier is expectedMerchantIdentifier
+PASS internals.mockPaymentCoordinator.installmentConfiguration.openToBuyThresholdAmount is expectedOpenToBuyThresholdAmount
+PASS internals.mockPaymentCoordinator.installmentConfiguration.referrerIdentifier is expectedReferrerIdentifier
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html (0 => 261785)


--- trunk/LayoutTests/http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html	2020-05-16 19:13:58 UTC (rev 261785)
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<script src=""
+<script src=""
+<script src=""
+</head>
+<body>
+<script>
+
+description("Test ApplePayInstallmentConfiguration.");
+
+window.jsTestIsAsync = true;
+
+expectedBindingTotalAmount = '1.00';
+expectedCurrencyCode = 'USD';
+expectedFeatureType = 'appleCard';
+expectedIsInStorePurchase = false;
+expectedMerchandisingImageData = 'dGVzdA==';
+expectedMerchantIdentifier = 'merchant';
+expectedOpenToBuyThresholdAmount = '2.50';
+expectedReferrerIdentifier = 'referrer';
+
+function validRequest()
+{
+    return {
+        countryCode: 'US',
+        currencyCode: 'USD',
+        supportedNetworks: ['visa', 'masterCard'],
+        merchantCapabilities: ['supports3DS'],
+        total: { label: 'Your Label', amount: '10.00' },
+        installmentConfiguration: {
+            bindingTotalAmount: expectedBindingTotalAmount,
+            currencyCode: expectedCurrencyCode,
+            merchandisingImageData: expectedMerchandisingImageData,
+            merchantIdentifier: expectedMerchantIdentifier,
+            openToBuyThresholdAmount: expectedOpenToBuyThresholdAmount,
+            referrerIdentifier: expectedReferrerIdentifier,
+        },
+    }
+}
+
+activateThen(() => {
+    var session = new ApplePaySession(8, validRequest());
+    session.begin();
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.bindingTotalAmount', 'expectedBindingTotalAmount');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.currencyCode', 'expectedCurrencyCode');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.featureType', 'expectedFeatureType');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.isInStorePurchase', 'expectedIsInStorePurchase');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.merchandisingImageData', 'expectedMerchandisingImageData');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.merchantIdentifier', 'expectedMerchantIdentifier');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.openToBuyThresholdAmount', 'expectedOpenToBuyThresholdAmount');
+    shouldBe('internals.mockPaymentCoordinator.installmentConfiguration.referrerIdentifier', 'expectedReferrerIdentifier');
+    internals.mockPaymentCoordinator.cancelPayment();
+    finishJSTest();
+});
+</script>
+<script src=""
+</body>
+</html>

Modified: trunk/LayoutTests/platform/mac-wk2/TestExpectations (261784 => 261785)


--- trunk/LayoutTests/platform/mac-wk2/TestExpectations	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/LayoutTests/platform/mac-wk2/TestExpectations	2020-05-16 19:13:58 UTC (rev 261785)
@@ -36,6 +36,9 @@
 
 http/tests/ssl/applepay/ [ Pass ]
 
+# ApplePayInstallmentConfiguration was first available in Catalina.
+[ Mojave ] http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html [ Skip ]
+
 fast/visual-viewport/rubberbanding-viewport-rects.html [ Pass ]
 fast/visual-viewport/rubberbanding-viewport-rects-header-footer.html  [ Pass ]
 

Modified: trunk/Source/WebCore/ChangeLog (261784 => 261785)


--- trunk/Source/WebCore/ChangeLog	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/ChangeLog	2020-05-16 19:13:58 UTC (rev 261785)
@@ -1,3 +1,36 @@
+2020-05-16  Andy Estes  <[email protected]>
+
+        REGRESSION (r260717): installmentConfiguration member is no longer available on ApplePayPaymentRequest
+        https://bugs.webkit.org/show_bug.cgi?id=211911
+        <rdar://problem/63236367>
+
+        Reviewed by Tim Horton.
+
+        Prior to r260717, installmentConfiguration was a member of ApplePayRequestBase, making it
+        available on ApplePayRequest and ApplePayPaymentRequest. In r260717, it was mistakenly
+        moved to ApplePayRequest.
+
+        This change moves it back to ApplePayRequestBase, adds infrastructure for regression testing
+        ApplePayInstallmentConfiguration, and adds a regression test.
+
+        Test: http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html
+
+        * Modules/applepay/ApplePayInstallmentConfiguration.idl:
+        * Modules/applepay/ApplePayRequestBase.cpp:
+        (WebCore::convertAndValidate):
+        (WebCore::finishConverting): Deleted.
+        * Modules/applepay/ApplePayRequestBase.idl:
+        * Modules/applepay/PaymentInstallmentConfiguration.mm:
+        (WebCore::fromDecimalNumber):
+        (WebCore::applePaySetupFeatureType):
+        (WebCore::PaymentInstallmentConfiguration::applePayInstallmentConfiguration const):
+        * Modules/applepay/PaymentInstallmentConfigurationWebCore.h:
+        * Modules/applepay/paymentrequest/ApplePayRequest.idl:
+        * testing/MockPaymentCoordinator.cpp:
+        (WebCore::MockPaymentCoordinator::showPaymentUI):
+        * testing/MockPaymentCoordinator.h:
+        * testing/MockPaymentCoordinator.idl:
+
 2020-05-16  Zalan Bujtas  <[email protected]>
 
         [LFC][TFC] Ignore table padding when borders are collapsed

Modified: trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentConfiguration.idl (261784 => 261785)


--- trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentConfiguration.idl	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayInstallmentConfiguration.idl	2020-05-16 19:13:58 UTC (rev 261785)
@@ -25,6 +25,8 @@
 
 [
     Conditional=APPLE_PAY_INSTALLMENTS,
+    ExportMacro=WEBCORE_EXPORT,
+    JSGenerateToJSObject,
 ] dictionary ApplePayInstallmentConfiguration {
     ApplePaySetupFeatureType featureType = "appleCard";
     DOMString merchandisingImageData;

Modified: trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp (261784 => 261785)


--- trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp	2020-05-16 19:13:58 UTC (rev 261785)
@@ -33,17 +33,6 @@
 
 namespace WebCore {
 
-static void finishConverting(ApplePaySessionPaymentRequest& result, ApplePayRequestBase& request)
-{
-#if ENABLE(APPLE_PAY_INSTALLMENTS)
-    if (request.installmentConfiguration)
-        result.setInstallmentConfiguration(WTFMove(*request.installmentConfiguration));
-#else
-    UNUSED_PARAM(result);
-    UNUSED_PARAM(request);
-#endif
-}
-
 static bool requiresSupportedNetworks(unsigned version, const ApplePayRequestBase& request)
 {
 #if ENABLE(APPLE_PAY_INSTALLMENTS)
@@ -116,7 +105,10 @@
     if (version >= 3)
         result.setSupportedCountries(WTFMove(request.supportedCountries));
 
-    finishConverting(result, request);
+#if ENABLE(APPLE_PAY_INSTALLMENTS)
+    if (request.installmentConfiguration)
+        result.setInstallmentConfiguration(WTFMove(*request.installmentConfiguration));
+#endif
 
     return WTFMove(result);
 }

Modified: trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl (261784 => 261785)


--- trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl	2020-05-16 19:13:58 UTC (rev 261785)
@@ -38,4 +38,6 @@
 
     DOMString applicationData;
     [Conditional=APPLE_PAY_SESSION_V3] sequence<DOMString> supportedCountries;
+
+    [Conditional=APPLE_PAY_INSTALLMENTS] ApplePayInstallmentConfiguration installmentConfiguration;
 };

Modified: trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm (261784 => 261785)


--- trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfiguration.mm	2020-05-16 19:13:58 UTC (rev 261785)
@@ -41,6 +41,15 @@
     return [NSDecimalNumber decimalNumberWithString:amount locale:@{ NSLocaleDecimalSeparator : @"." }];
 }
 
+static String fromDecimalNumber(NSDecimalNumber *number)
+{
+    auto numberFormatter = adoptNS([[NSNumberFormatter alloc] init]);
+    numberFormatter.numberStyle = NSNumberFormatterNoStyle;
+    numberFormatter.minimumIntegerDigits = 1;
+    numberFormatter.minimumFractionDigits = 2;
+    return [numberFormatter stringFromNumber:number];
+}
+
 static PKPaymentSetupFeatureType platformFeatureType(const ApplePaySetupFeatureType& featureType)
 {
     switch (featureType) {
@@ -53,6 +62,18 @@
     }
 }
 
+static ApplePaySetupFeatureType applePaySetupFeatureType(PKPaymentSetupFeatureType featureType)
+{
+    switch (featureType) {
+    case PKPaymentSetupFeatureTypeApplePay:
+        return ApplePaySetupFeatureType::ApplePay;
+    ALLOW_DEPRECATED_DECLARATIONS_BEGIN
+    case PKPaymentSetupFeatureTypeApplePay_X:
+    ALLOW_DEPRECATED_DECLARATIONS_END
+        return ApplePaySetupFeatureType::AppleCard;
+    }
+}
+
 static RetainPtr<PKPaymentInstallmentConfiguration> createPlatformConfiguration(const ApplePayInstallmentConfiguration& coreConfiguration)
 {
     auto configuration = adoptNS([PAL::allocPKPaymentInstallmentConfigurationInstance() init]);
@@ -94,6 +115,31 @@
     return m_configuration.get();
 }
 
+ApplePayInstallmentConfiguration PaymentInstallmentConfiguration::applePayInstallmentConfiguration() const
+{
+    ApplePayInstallmentConfiguration installmentConfiguration;
+
+    installmentConfiguration.featureType = applePaySetupFeatureType([m_configuration feature]);
+
+    installmentConfiguration.bindingTotalAmount = fromDecimalNumber([m_configuration bindingTotalAmount]);
+    installmentConfiguration.currencyCode = [m_configuration currencyCode];
+    installmentConfiguration.isInStorePurchase = [m_configuration isInStorePurchase];
+    installmentConfiguration.openToBuyThresholdAmount = fromDecimalNumber([m_configuration openToBuyThresholdAmount]);
+
+    installmentConfiguration.merchandisingImageData = [[m_configuration merchandisingImageData] base64EncodedStringWithOptions:0];
+
+#if HAVE(PASSKIT_INSTALLMENT_IDENTIFIERS)
+#if PLATFORM(MAC)
+    if (![m_configuration respondsToSelector:@selector(installmentMerchantIdentifier)] || ![m_configuration respondsToSelector:@selector(referrerIdentifier)])
+        return installmentConfiguration;
+#endif
+    installmentConfiguration.merchantIdentifier = [m_configuration installmentMerchantIdentifier];
+    installmentConfiguration.referrerIdentifier = [m_configuration referrerIdentifier];
+#endif
+    
+    return installmentConfiguration;
+}
+
 } // namespace WebCore
 
 #endif // HAVE(PASSKIT_INSTALLMENTS)

Modified: trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfigurationWebCore.h (261784 => 261785)


--- trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfigurationWebCore.h	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/Modules/applepay/PaymentInstallmentConfigurationWebCore.h	2020-05-16 19:13:58 UTC (rev 261785)
@@ -42,6 +42,7 @@
     PaymentInstallmentConfiguration(RetainPtr<PKPaymentInstallmentConfiguration>&&);
 
     PKPaymentInstallmentConfiguration *platformConfiguration() const;
+    ApplePayInstallmentConfiguration applePayInstallmentConfiguration() const;
 
 private:
     RetainPtr<PKPaymentInstallmentConfiguration> m_configuration;

Modified: trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl (261784 => 261785)


--- trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl	2020-05-16 19:13:58 UTC (rev 261785)
@@ -28,5 +28,4 @@
 ] dictionary ApplePayRequest : ApplePayRequestBase {
     required unsigned long version;
     required DOMString merchantIdentifier;
-    [Conditional=APPLE_PAY_INSTALLMENTS] ApplePayInstallmentConfiguration installmentConfiguration;
 };

Modified: trunk/Source/WebCore/testing/MockPaymentCoordinator.cpp (261784 => 261785)


--- trunk/Source/WebCore/testing/MockPaymentCoordinator.cpp	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/testing/MockPaymentCoordinator.cpp	2020-05-16 19:13:58 UTC (rev 261785)
@@ -109,6 +109,9 @@
     m_shippingMethods = convert(request.shippingMethods());
     m_requiredBillingContactFields = request.requiredBillingContactFields();
     m_requiredShippingContactFields = request.requiredShippingContactFields();
+#if ENABLE(APPLE_PAY_INSTALLMENTS)
+    m_installmentConfiguration = request.installmentConfiguration().applePayInstallmentConfiguration();
+#endif
 
     ASSERT(showCount == hideCount);
     ++showCount;

Modified: trunk/Source/WebCore/testing/MockPaymentCoordinator.h (261784 => 261785)


--- trunk/Source/WebCore/testing/MockPaymentCoordinator.h	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/testing/MockPaymentCoordinator.h	2020-05-16 19:13:58 UTC (rev 261785)
@@ -27,6 +27,7 @@
 
 #if ENABLE(APPLE_PAY)
 
+#include "ApplePayInstallmentConfigurationWebCore.h"
 #include "ApplePayLineItem.h"
 #include "ApplePayShippingMethod.h"
 #include "MockPaymentAddress.h"
@@ -62,6 +63,10 @@
 
     bool supportsUnrestrictedApplePay() const final { return m_supportsUnrestrictedApplePay; }
     void setSupportsUnrestrictedApplePay(bool supports) { m_supportsUnrestrictedApplePay = supports; }
+    
+#if ENABLE(APPLE_PAY_INSTALLMENTS)
+    ApplePayInstallmentConfiguration installmentConfiguration() const { return m_installmentConfiguration; }
+#endif
 
     void ref() const { }
     void deref() const { }
@@ -99,6 +104,9 @@
     MockPaymentContactFields m_requiredBillingContactFields;
     MockPaymentContactFields m_requiredShippingContactFields;
     bool m_supportsUnrestrictedApplePay { true };
+#if ENABLE(APPLE_PAY_INSTALLMENTS)
+    ApplePayInstallmentConfiguration m_installmentConfiguration;
+#endif
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/testing/MockPaymentCoordinator.idl (261784 => 261785)


--- trunk/Source/WebCore/testing/MockPaymentCoordinator.idl	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebCore/testing/MockPaymentCoordinator.idl	2020-05-16 19:13:58 UTC (rev 261785)
@@ -43,4 +43,6 @@
     readonly attribute MockPaymentContactFields requiredShippingContactFields;
 
     attribute boolean supportsUnrestrictedApplePay;
+
+    [Conditional=APPLE_PAY_INSTALLMENTS] readonly attribute ApplePayInstallmentConfiguration installmentConfiguration;
 };

Modified: trunk/Source/WebKit/ChangeLog (261784 => 261785)


--- trunk/Source/WebKit/ChangeLog	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebKit/ChangeLog	2020-05-16 19:13:58 UTC (rev 261785)
@@ -1,3 +1,17 @@
+2020-05-16  Andy Estes  <[email protected]>
+
+        REGRESSION (r260717): installmentConfiguration member is no longer available on ApplePayPaymentRequest
+        https://bugs.webkit.org/show_bug.cgi?id=211911
+        <rdar://problem/63236367>
+
+        Reviewed by Tim Horton.
+
+        * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
+        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode):
+        (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode):
+        (IPC::finishDecoding): Deleted.
+        (IPC::finishEncoding): Deleted.
+
 2020-05-16  Yury Semikhatsky  <[email protected]>
 
         [GTK] Do not leak pages created by window.open

Modified: trunk/Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm (261784 => 261785)


--- trunk/Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm	2020-05-16 17:10:18 UTC (rev 261784)
+++ trunk/Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm	2020-05-16 19:13:58 UTC (rev 261785)
@@ -64,33 +64,6 @@
 
 #if ENABLE(APPLE_PAY)
 
-static bool finishDecoding(Decoder& decoder, WebCore::ApplePaySessionPaymentRequest& request)
-{
-#if ENABLE(APPLE_PAY_INSTALLMENTS)
-    Optional<WebCore::PaymentInstallmentConfiguration> installmentConfiguration;
-    decoder >> installmentConfiguration;
-    if (!installmentConfiguration)
-        return false;
-
-    request.setInstallmentConfiguration(WTFMove(*installmentConfiguration));
-    return true;
-#else
-    UNUSED_PARAM(decoder);
-    UNUSED_PARAM(request);
-    return true;
-#endif
-}
-
-static void finishEncoding(Encoder& encoder, const WebCore::ApplePaySessionPaymentRequest& request)
-{
-#if ENABLE(APPLE_PAY_INSTALLMENTS)
-    encoder << request.installmentConfiguration();
-#else
-    UNUSED_PARAM(encoder);
-    UNUSED_PARAM(request);
-#endif
-}
-
 #if HAVE(PASSKIT_INSTALLMENTS)
 
 void ArgumentCoder<WebCore::PaymentInstallmentConfiguration>::encode(Encoder& encoder, const WebCore::PaymentInstallmentConfiguration& configuration)
@@ -244,7 +217,9 @@
     encoder << request.applicationData();
     encoder << request.supportedCountries();
     encoder.encodeEnum(request.requester());
-    finishEncoding(encoder, request);
+#if ENABLE(APPLE_PAY_INSTALLMENTS)
+    encoder << request.installmentConfiguration();
+#endif
 }
 
 bool ArgumentCoder<ApplePaySessionPaymentRequest>::decode(Decoder& decoder, ApplePaySessionPaymentRequest& request)
@@ -326,10 +301,16 @@
     if (!decoder.decodeEnum(requester))
         return false;
     request.setRequester(requester);
-
-    if (!finishDecoding(decoder, request))
+    
+#if ENABLE(APPLE_PAY_INSTALLMENTS)
+    Optional<WebCore::PaymentInstallmentConfiguration> installmentConfiguration;
+    decoder >> installmentConfiguration;
+    if (!installmentConfiguration)
         return false;
 
+    request.setInstallmentConfiguration(WTFMove(*installmentConfiguration));
+#endif
+
     return true;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to