Title: [278437] trunk/Source/WebCore
Revision
278437
Author
drou...@apple.com
Date
2021-06-03 17:35:06 -0700 (Thu, 03 Jun 2021)

Log Message

[Payment Request] allow additional line items and/or an override total to be specified in `ApplePayModifier`
https://bugs.webkit.org/show_bug.cgi?id=226597
<rdar://problem/78835065>

Reviewed by Wenson Hsieh.

Instead of merging properties of the first applicable `PaymentDetailsModifier` (or more
specifically the related `ApplePayModifier` with only the `total` line item, add `total`
and `additionalLineItems` properties to `ApplePayModifier` that are `ApplePayLineItem`.

* Modules/applepay/paymentrequest/ApplePayModifier.idl:
* Modules/applepay/paymentrequest/ApplePayModifier.h:
Drive-by: Rename `additionalShippingOptions` to `additionalShippingMethods` to emphasize
          that the values are `ApplePayShippingMethod` instead of `PaymentShippingOption`.

* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::computeShippingMethods const):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (278436 => 278437)


--- trunk/Source/WebCore/ChangeLog	2021-06-04 00:31:45 UTC (rev 278436)
+++ trunk/Source/WebCore/ChangeLog	2021-06-04 00:35:06 UTC (rev 278437)
@@ -1,3 +1,24 @@
+2021-06-03  Devin Rousso  <drou...@apple.com>
+
+        [Payment Request] allow additional line items and/or an override total to be specified in `ApplePayModifier`
+        https://bugs.webkit.org/show_bug.cgi?id=226597
+        <rdar://problem/78835065>
+
+        Reviewed by Wenson Hsieh.
+
+        Instead of merging properties of the first applicable `PaymentDetailsModifier` (or more
+        specifically the related `ApplePayModifier` with only the `total` line item, add `total`
+        and `additionalLineItems` properties to `ApplePayModifier` that are `ApplePayLineItem`.
+
+        * Modules/applepay/paymentrequest/ApplePayModifier.idl:
+        * Modules/applepay/paymentrequest/ApplePayModifier.h:
+        Drive-by: Rename `additionalShippingOptions` to `additionalShippingMethods` to emphasize
+                  that the values are `ApplePayShippingMethod` instead of `PaymentShippingOption`.
+
+        * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
+        (WebCore::ApplePayPaymentHandler::computeShippingMethods const):
+        (WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const):
+
 2021-06-03  Chris Lord  <cl...@igalia.com>
 
         [WPE] position:sticky content is not correctly offset on async scrolled overflow layers with an RTL vertical scrollbar

Modified: trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.h (278436 => 278437)


--- trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.h	2021-06-04 00:31:45 UTC (rev 278436)
+++ trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.h	2021-06-04 00:35:06 UTC (rev 278437)
@@ -27,6 +27,7 @@
 
 #if ENABLE(APPLE_PAY) && ENABLE(PAYMENT_REQUEST)
 
+#include "ApplePayLineItem.h"
 #include "ApplePayPaymentMethodType.h"
 #include "ApplePayShippingMethod.h"
 
@@ -38,7 +39,9 @@
 
 struct ApplePayModifier {
     std::optional<ApplePayPaymentMethodType> paymentMethodType;
-    Vector<ApplePayShippingMethod> additionalShippingOptions;
+    std::optional<ApplePayLineItem> total;
+    Vector<ApplePayLineItem> additionalLineItems;
+    Vector<ApplePayShippingMethod> additionalShippingMethods;
 
 #if defined(ApplePayModifierAdditions_members)
     ApplePayModifierAdditions_members

Modified: trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.idl (278436 => 278437)


--- trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.idl	2021-06-04 00:31:45 UTC (rev 278436)
+++ trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayModifier.idl	2021-06-04 00:35:06 UTC (rev 278437)
@@ -27,5 +27,7 @@
     Conditional=APPLE_PAY&PAYMENT_REQUEST,
 ] dictionary ApplePayModifier {
     ApplePayPaymentMethodType paymentMethodType;
-    sequence<ApplePayShippingMethod> additionalShippingOptions;
+    ApplePayLineItem total;
+    sequence<ApplePayLineItem> additionalLineItems;
+    sequence<ApplePayShippingMethod> additionalShippingMethods;
 };

Modified: trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp (278436 => 278437)


--- trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp	2021-06-04 00:31:45 UTC (rev 278436)
+++ trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp	2021-06-04 00:35:06 UTC (rev 278437)
@@ -311,16 +311,11 @@
     if (modifierException.hasException())
         return modifierException.releaseException();
     if (auto modifierData = modifierException.releaseReturnValue())
-        shippingOptions.appendVector(WTFMove(std::get<1>(*modifierData).additionalShippingOptions));
+        shippingOptions.appendVector(WTFMove(std::get<1>(*modifierData).additionalShippingMethods));
 
     return WTFMove(shippingOptions);
 }
 
-
-#if !ENABLE(APPLE_PAY_LINE_ITEM_DATA)
-static void merge(ApplePayLineItem&, ApplePayModifier&&) { }
-#endif // !ENABLE(APPLE_PAY_LINE_ITEM_DATA)
-
 ExceptionOr<std::tuple<ApplePayLineItem, Vector<ApplePayLineItem>>> ApplePayPaymentHandler::computeTotalAndLineItems() const
 {
     auto& details = m_paymentRequest->paymentDetails();
@@ -357,7 +352,10 @@
             return additionalDisplayItems.releaseException();
         lineItems.appendVector(additionalDisplayItems.releaseReturnValue());
 
-        merge(total, WTFMove(applePayModifier));
+        if (applePayModifier.total)
+            total = *applePayModifier.total;
+
+        lineItems.appendVector(applePayModifier.additionalLineItems);
     }
 
     return {{ WTFMove(total), WTFMove(lineItems) }};
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to