Diff
Modified: trunk/LayoutTests/ChangeLog (223162 => 223163)
--- trunk/LayoutTests/ChangeLog 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/LayoutTests/ChangeLog 2017-10-11 02:57:12 UTC (rev 223163)
@@ -1,5 +1,18 @@
2017-10-10 Andy Estes <aes...@apple.com>
+ [Payment Request] Validate that all PaymentCurrencyAmounts use the same currency code when using Apple Pay
+ https://bugs.webkit.org/show_bug.cgi?id=178150
+
+ Reviewed by Tim Horton.
+
+ * http/tests/paymentrequest/payment-request-abort-method.https.html:
+ * http/tests/paymentrequest/payment-request-canmakepayment-method.https.html:
+ * http/tests/paymentrequest/payment-request-show-method.https.html:
+ * http/tests/ssl/applepay/PaymentRequest.https-expected.txt:
+ * http/tests/ssl/applepay/PaymentRequest.https.html:
+
+2017-10-10 Andy Estes <aes...@apple.com>
+
[Payment Request] Implement PaymentRequest.canMakePayment()
https://bugs.webkit.org/show_bug.cgi?id=178048
Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https.html (223162 => 223163)
--- trunk/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https.html 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-request-abort-method.https.html 2017-10-11 02:57:12 UTC (rev 223163)
@@ -22,7 +22,6 @@
merchantCapabilities: ['supports3DS'],
supportedNetworks: ['visa', 'masterCard'],
countryCode: 'US',
- currencyCode: 'USD',
},
});
const defaultMethods = Object.freeze([applePay]);
Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-request-canmakepayment-method.https.html (223162 => 223163)
--- trunk/LayoutTests/http/tests/paymentrequest/payment-request-canmakepayment-method.https.html 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-request-canmakepayment-method.https.html 2017-10-11 02:57:12 UTC (rev 223163)
@@ -16,7 +16,6 @@
merchantCapabilities: ["supports3DS"],
supportedNetworks: ["visa", "masterCard"],
countryCode: "US",
- currencyCode: "USD",
}
});
const defaultMethods = Object.freeze([applePay]);
Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https.html (223162 => 223163)
--- trunk/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https.html 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-request-show-method.https.html 2017-10-11 02:57:12 UTC (rev 223163)
@@ -17,7 +17,6 @@
merchantCapabilities: ['supports3DS'],
supportedNetworks: ['visa', 'masterCard'],
countryCode: 'US',
- currencyCode: 'USD',
},
});
const defaultMethods = Object.freeze([applePay]);
Modified: trunk/LayoutTests/http/tests/ssl/applepay/PaymentRequest.https-expected.txt (223162 => 223163)
--- trunk/LayoutTests/http/tests/ssl/applepay/PaymentRequest.https-expected.txt 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/LayoutTests/http/tests/ssl/applepay/PaymentRequest.https-expected.txt 2017-10-11 02:57:12 UTC (rev 223163)
@@ -28,26 +28,6 @@
SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = 7;
PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: "7" is not a valid country code..
-Testing ApplePayRequest.currencyCode
-
-SETUP: paymentMethod = validPaymentMethod(); delete paymentMethod.data.currencyCode;
-PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: Member ApplePayRequest.currencyCode is required and must be an instance of DOMString.
-
-SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = 'invalid';
-PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: "invalid" is not a valid currency code..
-
-SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = '';
-PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: "" is not a valid currency code..
-
-SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = null;
-PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: "null" is not a valid currency code..
-
-SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = undefined;
-PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: Member ApplePayRequest.currencyCode is required and must be an instance of DOMString.
-
-SETUP: paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = 7;
-PASS request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show() rejected promise with TypeError: "7" is not a valid currency code..
-
Testing ApplePayRequest.supportedNetworks
SETUP: paymentMethod = validPaymentMethod(); delete paymentMethod.data.supportedNetworks;
@@ -218,6 +198,8 @@
SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: '10.00', type: 'invalid' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.
+SETUP: paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: { currency: 'EUR', value: '10.00' } }];
+PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() rejected promise with TypeError: "EUR" does not match the expected currency of "USD". Apple Pay requires all PaymentCurrencyAmounts to use the same currency code..
Testing PaymentDetails.shippingOptions
SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = '';
@@ -253,6 +235,8 @@
SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '-1', detail: '', identifier: '', label: '' }];
PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() threw exception TypeError: Type error.
+SETUP: paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: { currency: 'EUR', value: '10.00' }, id: '', label: '' }];
+PASS request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show() rejected promise with TypeError: "EUR" does not match the expected currency of "USD". Apple Pay requires all PaymentCurrencyAmounts to use the same currency code..
Testing PaymentOptions
SETUP: paymentOptions = {}; paymentOptions.shippingType = '';
Modified: trunk/LayoutTests/http/tests/ssl/applepay/PaymentRequest.https.html (223162 => 223163)
--- trunk/LayoutTests/http/tests/ssl/applepay/PaymentRequest.https.html 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/LayoutTests/http/tests/ssl/applepay/PaymentRequest.https.html 2017-10-11 02:57:12 UTC (rev 223163)
@@ -18,7 +18,6 @@
version: 2,
merchantIdentifier: '',
countryCode: 'US',
- currencyCode: 'USD',
supportedNetworks: ['visa', 'masterCard'],
merchantCapabilities: ['supports3DS'],
},
@@ -73,21 +72,6 @@
await logAndShouldReject("paymentMethod = validPaymentMethod(); paymentMethod.data.countryCode = 7;", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
debug("")
- debug("Testing ApplePayRequest.currencyCode")
- debug("")
- await logAndShouldReject("paymentMethod = validPaymentMethod(); delete paymentMethod.data.currencyCode;", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
- debug("")
- await logAndShouldReject("paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = 'invalid';", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
- debug("")
- await logAndShouldReject("paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = '';", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
- debug("")
- await logAndShouldReject("paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = null;", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
- debug("")
- await logAndShouldReject("paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = undefined;", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
- debug("")
- await logAndShouldReject("paymentMethod = validPaymentMethod(); paymentMethod.data.currencyCode = 7;", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
- debug("")
-
debug("Testing ApplePayRequest.supportedNetworks")
debug("")
await logAndShouldReject("paymentMethod = validPaymentMethod(); delete paymentMethod.data.supportedNetworks;", "request = new PaymentRequest([paymentMethod], validPaymentDetails()); request.show()")
@@ -190,7 +174,8 @@
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: '' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: '10.00', type: 'invalid' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
-
+ await logAndShouldReject("paymentDetails = validPaymentDetails(); paymentDetails.displayItems = [{ label: 'label', amount: { currency: 'EUR', value: '10.00' } }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
+
debug("Testing PaymentDetails.shippingOptions")
debug("");
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = '';", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
@@ -204,6 +189,7 @@
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '', detail: '', identifier: '' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '', detail: '', identifier: '', label: '' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
logAndShouldThrow("paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: '-1', detail: '', identifier: '', label: '' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
+ await logAndShouldReject("paymentDetails = validPaymentDetails(); paymentDetails.shippingOptions = [{ amount: { currency: 'EUR', value: '10.00' }, id: '', label: '' }];", "request = new PaymentRequest([validPaymentMethod()], paymentDetails); request.show()")
debug("Testing PaymentOptions")
debug("");
Modified: trunk/Source/WebCore/ChangeLog (223162 => 223163)
--- trunk/Source/WebCore/ChangeLog 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/ChangeLog 2017-10-11 02:57:12 UTC (rev 223163)
@@ -1,5 +1,35 @@
2017-10-10 Andy Estes <aes...@apple.com>
+ [Payment Request] Validate that all PaymentCurrencyAmounts use the same currency code when using Apple Pay
+ https://bugs.webkit.org/show_bug.cgi?id=178150
+
+ Reviewed by Tim Horton.
+
+ Apple Pay requires a single currency code, but the Payment Request API allows the client to
+ specify a currency code for each PaymentCurrencyAmount.
+
+ Instead of having a required currencyCode property on ApplePayRequest and ignoring the
+ currency property on PaymentCurrencyAmount, validate that all PaymentCurrencyAmounts use the
+ same currency code and use that as ApplePaySessionPaymentRequest's currencyCode.
+
+ Added test cases to http/tests/ssl/applepay/PaymentRequest.https.html.
+
+ * Modules/applepay/ApplePayPaymentRequest.h:
+ * Modules/applepay/ApplePayPaymentRequest.idl:
+ * Modules/applepay/ApplePayRequestBase.cpp:
+ (WebCore::convertAndValidate):
+ * Modules/applepay/ApplePayRequestBase.h:
+ * Modules/applepay/ApplePayRequestBase.idl:
+ * Modules/applepay/ApplePaySession.cpp:
+ (WebCore::convertAndValidate):
+ * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
+ (WebCore::validate):
+ (WebCore::convertAndValidate):
+ (WebCore::ApplePayPaymentHandler::show):
+ * Modules/applepay/paymentrequest/ApplePayRequest.idl:
+
+2017-10-10 Andy Estes <aes...@apple.com>
+
[Payment Request] Implement PaymentRequest.canMakePayment()
https://bugs.webkit.org/show_bug.cgi?id=178048
Modified: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.h 2017-10-11 02:57:12 UTC (rev 223163)
@@ -29,15 +29,17 @@
#include "ApplePayLineItem.h"
#include "ApplePayPaymentContact.h"
-#include "ApplePayRequest.h"
+#include "ApplePayRequestBase.h"
#include "ApplePaySessionPaymentRequest.h"
#include "ApplePayShippingMethod.h"
namespace WebCore {
-struct ApplePayPaymentRequest : ApplePayRequest {
+struct ApplePayPaymentRequest : ApplePayRequestBase {
using ShippingType = ApplePaySessionPaymentRequest::ShippingType;
+ String currencyCode;
+
std::optional<Vector<ApplePayContactField>> requiredShippingContactFields;
std::optional<ApplePayPaymentContact> shippingContact;
Modified: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentRequest.idl 2017-10-11 02:57:12 UTC (rev 223163)
@@ -38,6 +38,8 @@
required ApplePayLineItem total;
sequence<ApplePayLineItem> lineItems;
+ required DOMString currencyCode;
+
sequence<ApplePayContactField> requiredShippingContactFields;
ApplePayPaymentContact shippingContact;
Modified: trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.cpp 2017-10-11 02:57:12 UTC (rev 223163)
@@ -46,9 +46,7 @@
ExceptionOr<ApplePaySessionPaymentRequest> convertAndValidate(unsigned version, ApplePayRequestBase& request)
{
ApplePaySessionPaymentRequest result;
-
result.setCountryCode(request.countryCode);
- result.setCurrencyCode(request.currencyCode);
auto merchantCapabilities = convertAndValidate(request.merchantCapabilities);
if (merchantCapabilities.hasException())
Modified: trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.h (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.h 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.h 2017-10-11 02:57:12 UTC (rev 223163)
@@ -37,7 +37,6 @@
Vector<ApplePayMerchantCapability> merchantCapabilities;
Vector<String> supportedNetworks;
String countryCode;
- String currencyCode;
std::optional<Vector<ApplePayContactField>> requiredBillingContactFields;
std::optional<ApplePayPaymentContact> billingContact;
Modified: trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayRequestBase.idl 2017-10-11 02:57:12 UTC (rev 223163)
@@ -29,7 +29,6 @@
required sequence<ApplePayMerchantCapability> merchantCapabilities;
required sequence<DOMString> supportedNetworks; // FIXME: Should this be an sequence of enums?
required DOMString countryCode;
- required DOMString currencyCode;
sequence<ApplePayContactField> requiredBillingContactFields;
ApplePayPaymentContact billingContact;
Modified: trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp 2017-10-11 02:57:12 UTC (rev 223163)
@@ -213,6 +213,7 @@
return convertedRequest.releaseException();
auto result = convertedRequest.releaseReturnValue();
+ result.setCurrencyCode(paymentRequest.currencyCode);
auto total = convertAndValidateTotal(WTFMove(paymentRequest.total));
if (total.hasException())
Modified: trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp 2017-10-11 02:57:12 UTC (rev 223163)
@@ -67,8 +67,19 @@
{
}
-static ApplePaySessionPaymentRequest::LineItem convert(const PaymentItem& item)
+static ExceptionOr<void> validate(const PaymentCurrencyAmount& amount, const String& expectedCurrency)
{
+ if (amount.currency != expectedCurrency)
+ return Exception { TypeError, makeString("\"", amount.currency, "\" does not match the expected currency of \"", expectedCurrency, "\". Apple Pay requires all PaymentCurrencyAmounts to use the same currency code.") };
+ return { };
+}
+
+static ExceptionOr<ApplePaySessionPaymentRequest::LineItem> convertAndValidate(const PaymentItem& item, const String& expectedCurrency)
+{
+ auto exception = validate(item.amount, expectedCurrency);
+ if (exception.hasException())
+ return exception.releaseException();
+
ApplePaySessionPaymentRequest::LineItem lineItem;
lineItem.amount = item.amount.value;
lineItem.type = item.pending ? ApplePaySessionPaymentRequest::LineItem::Type::Pending : ApplePaySessionPaymentRequest::LineItem::Type::Final;
@@ -76,12 +87,16 @@
return lineItem;
}
-static Vector<ApplePaySessionPaymentRequest::LineItem> convert(const Vector<PaymentItem>& lineItems)
+static ExceptionOr<Vector<ApplePaySessionPaymentRequest::LineItem>> convertAndValidate(const Vector<PaymentItem>& lineItems, const String& expectedCurrency)
{
Vector<ApplePaySessionPaymentRequest::LineItem> result;
result.reserveInitialCapacity(lineItems.size());
- for (auto& lineItem : lineItems)
- result.uncheckedAppend(convert(lineItem));
+ for (auto& lineItem : lineItems) {
+ auto convertedLineItem = convertAndValidate(lineItem, expectedCurrency);
+ if (convertedLineItem.hasException())
+ return convertedLineItem.releaseException();
+ result.uncheckedAppend(convertedLineItem.releaseReturnValue());
+ }
return result;
}
@@ -110,8 +125,12 @@
return ApplePaySessionPaymentRequest::ShippingType::Shipping;
}
-static ApplePaySessionPaymentRequest::ShippingMethod convert(const PaymentShippingOption& shippingOption)
+static ExceptionOr<ApplePaySessionPaymentRequest::ShippingMethod> convertAndValidate(const PaymentShippingOption& shippingOption, const String& expectedCurrency)
{
+ auto exception = validate(shippingOption.amount, expectedCurrency);
+ if (exception.hasException())
+ return exception.releaseException();
+
ApplePaySessionPaymentRequest::ShippingMethod result;
result.amount = shippingOption.amount.value;
result.label = shippingOption.label;
@@ -137,13 +156,29 @@
return validatedRequest.releaseException();
ApplePaySessionPaymentRequest request = validatedRequest.releaseReturnValue();
- request.setTotal(convert(m_paymentRequest->paymentDetails().total));
- auto lineItems = convert(m_paymentRequest->paymentDetails().displayItems);
+ String expectedCurrency = m_paymentRequest->paymentDetails().total.amount.currency;
+ request.setCurrencyCode(expectedCurrency);
+
+ auto total = convertAndValidate(m_paymentRequest->paymentDetails().total, expectedCurrency);
+ ASSERT(!total.hasException());
+ request.setTotal(total.releaseReturnValue());
+
+ auto convertedLineItems = convertAndValidate(m_paymentRequest->paymentDetails().displayItems, expectedCurrency);
+ if (convertedLineItems.hasException())
+ return convertedLineItems.releaseException();
+
+ auto lineItems = convertedLineItems.releaseReturnValue();
for (auto& modifier : m_paymentRequest->paymentDetails().modifiers) {
auto convertedIdentifier = convertAndValidatePaymentMethodIdentifier(modifier.supportedMethods);
- if (convertedIdentifier && handlesIdentifier(*convertedIdentifier))
- lineItems.appendVector(convert(modifier.additionalDisplayItems));
+ if (!convertedIdentifier || !handlesIdentifier(*convertedIdentifier))
+ continue;
+
+ auto additionalDisplayItems = convertAndValidate(modifier.additionalDisplayItems, expectedCurrency);
+ if (additionalDisplayItems.hasException())
+ return additionalDisplayItems.releaseException();
+
+ lineItems.appendVector(additionalDisplayItems.releaseReturnValue());
}
request.setLineItems(lineItems);
@@ -153,8 +188,12 @@
Vector<ApplePaySessionPaymentRequest::ShippingMethod> shippingMethods;
shippingMethods.reserveInitialCapacity(m_paymentRequest->paymentDetails().shippingOptions.size());
- for (auto& shippingOption : m_paymentRequest->paymentDetails().shippingOptions)
- shippingMethods.uncheckedAppend(convert(shippingOption));
+ for (auto& shippingOption : m_paymentRequest->paymentDetails().shippingOptions) {
+ auto convertedShippingOption = convertAndValidate(shippingOption, expectedCurrency);
+ if (convertedShippingOption.hasException())
+ return convertedShippingOption.releaseException();
+ shippingMethods.uncheckedAppend(convertedShippingOption.releaseReturnValue());
+ }
request.setShippingMethods(shippingMethods);
auto exception = PaymentRequestValidator::validate(request);
Modified: trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl (223162 => 223163)
--- trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl 2017-10-11 01:01:53 UTC (rev 223162)
+++ trunk/Source/WebCore/Modules/applepay/paymentrequest/ApplePayRequest.idl 2017-10-11 02:57:12 UTC (rev 223163)
@@ -29,3 +29,4 @@
required unsigned long version;
required DOMString merchantIdentifier;
};
+