Title: [271735] trunk
Revision
271735
Author
[email protected]
Date
2021-01-21 19:50:35 -0800 (Thu, 21 Jan 2021)

Log Message

[Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
https://bugs.webkit.org/show_bug.cgi?id=220810

Reviewed by Andy Estes.

LayoutTests/imported/w3c:

* web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt:
* web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt:

Source/_javascript_Core:

* inspector/protocol/Console.json:
* runtime/ConsoleTypes.h:
* inspector/ConsoleMessage.cpp:
(Inspector::messageSourceValue):
* runtime/ConsoleClient.cpp:
(JSC::appendMessagePrefix):
Add a new `PaymentRequest` value to the `ChannelSource` enum.

Source/WebCore:

The Payment Request API defines a `selected` property of `PaymentShippingOption` that is
used to control the initially selected shipping option when showing/updating a payment
request. Currently, `PKShippingMethod` does not have an equivalent concept and instead just
uses the first item in the `-[PKPaymentRequest setShippingMethods:]` such that there is
always a selected `PKShippingMethod`. This patch adjusts WebKit to follow those same
conventions, in that the first item in `paymentDetailsBase.shippingOptions` is used as the
`selectedShippingOption` so as to avoid situations where PassKit displays the first shipping
option while `PaymentRequest.prototype.get shippingOption` has a different value, which
could result in the user authorizing a payment with different shipping details than what
they were shown. Ideally in the future PassKit will add API/SPI to allow us to undo this.

Tests: http/tests/paymentrequest/payment-request-change-shipping-option.https.html
       http/tests/paymentrequest/updateWith-shippingOptions.https.html
       web-platform-tests/payment-request/payment-request-constructor.https.sub.html
       web-platform-tests/payment-request/payment-request-shippingOption-attribute.https.html

* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::checkAndCanonicalizeDetails):
(WebCore::PaymentRequest::create):
(WebCore::PaymentRequest::settleDetailsPromise):
Pass the `ScriptExecutionContext` instead of the `JSGlobalObject` so that it's possible to
call `ScriptExecutionContext::addConsoleMessage`. When creating a `PaymentRequest`, log if
subsequent `PaymentShippingOption` are marked as `selected`.

* inspector/agents/page/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::getLoggingChannels):
Add a new `PaymentRequest` value to the `ChannelSource` enum.

Source/WebInspectorUI:

* UserInterface/Models/ConsoleMessage.js:
* UserInterface/Models/IssueMessage.js:
(WI.IssueMessage):
Add a new `PaymentRequest` value to the `ChannelSource` enum.

Source/WebKitLegacy/mac:

* WebCoreSupport/WebChromeClient.mm:
(stringForMessageSource):
Add a new `PaymentRequest` value to the `ChannelSource` enum.

LayoutTests:

* http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt:
* http/tests/paymentrequest/payment-request-change-shipping-option.https.html:
* http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt:
* http/tests/paymentrequest/payment-response-retry-method.https-expected.txt:
* http/tests/paymentrequest/updateWith-shippingOptions.https.html:
* http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (271734 => 271735)


--- trunk/LayoutTests/ChangeLog	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/ChangeLog	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,17 @@
+2021-01-21  Devin Rousso  <[email protected]>
+
+        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
+        https://bugs.webkit.org/show_bug.cgi?id=220810
+
+        Reviewed by Andy Estes.
+
+        * http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt:
+        * http/tests/paymentrequest/payment-request-change-shipping-option.https.html:
+        * http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt:
+        * http/tests/paymentrequest/payment-response-retry-method.https-expected.txt:
+        * http/tests/paymentrequest/updateWith-shippingOptions.https.html:
+        * http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt:
+
 2021-01-21  Simon Fraser  <[email protected]>
 
         Scroll-chaining not triggering before complete end of overscroll

Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt (271734 => 271735)


--- trunk/LayoutTests/http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-address-attributes-and-toJSON-method.https-expected.txt	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,5 @@
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
 If the requestShipping member is true, then shippingAddress's PaymentAddress must match the expected values.
 
 PASS Can construct a payment request (smoke test).

Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt (271734 => 271735)


--- trunk/LayoutTests/http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-request-change-shipping-option.https-expected.txt	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
 
 PASS Test for PaymentRequest shippingOption attribute
 

Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-request-change-shipping-option.https.html (271734 => 271735)


--- trunk/LayoutTests/http/tests/paymentrequest/payment-request-change-shipping-option.https.html	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-request-change-shipping-option.https.html	2021-01-22 03:50:35 UTC (rev 271735)
@@ -63,11 +63,9 @@
         event.complete({ });
         internals.mockPaymentCoordinator.changeShippingOption("valid-1");
     };
-    assert_equals(
-      request.shippingOption,
-      "initially-selected",
-      "Must be 'initially-selected', as the selected member is true"
-    );
+    // FIXME: <rdar://problem/73464404>
+    // assert_equals(request.shippingOption, "initially-selected", "Must be 'initially-selected', as the selected member is true");
+    assert_equals(request.shippingOption, "valid-1", "Must be the first shipping option regardless of the selected property.");
     const listenerPromise = new Promise(resolve => {
       request.addEventListener("shippingoptionchange", () => {
         resolve(request.shippingOption);

Modified: trunk/LayoutTests/http/tests/paymentrequest/payment-response-retry-method.https-expected.txt (271734 => 271735)


--- trunk/LayoutTests/http/tests/paymentrequest/payment-response-retry-method.https-expected.txt	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/http/tests/paymentrequest/payment-response-retry-method.https-expected.txt	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,11 @@
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
 
 PASS Can construct a payment request (smoke test).
 PASS PaymentResponse.prototype must have a retry() function (smoke test).

Modified: trunk/LayoutTests/http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt (271734 => 271735)


--- trunk/LayoutTests/http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/http/tests/paymentrequest/updateWith-shippingOptions.https-expected.txt	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
 
 PASS Calling `updateWith` with a new `shippingOptions` without `requestShipping` should not update any values.
 PASS Calling `updateWith` with a new `shippingOptions` should not update any other values.

Modified: trunk/LayoutTests/http/tests/paymentrequest/updateWith-shippingOptions.https.html (271734 => 271735)


--- trunk/LayoutTests/http/tests/paymentrequest/updateWith-shippingOptions.https.html	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/http/tests/paymentrequest/updateWith-shippingOptions.https.html	2021-01-22 03:50:35 UTC (rev 271735)
@@ -98,7 +98,9 @@
         assert_equals(internals.mockPaymentCoordinator.shippingMethods[i].label, detailsUpdate.shippingOptions[i].label, `shipping option ${i} label should change`);
         assert_equals(internals.mockPaymentCoordinator.shippingMethods[i].amount, detailsUpdate.shippingOptions[i].amount.value, `shipping option ${i} amount should change`);
     }
-    assert_equals(request.shippingOption, detailsUpdate.shippingOptions.find((shippingOption) => shippingOption.selected).id, "selected shipping option should change");
+    // FIXME: <rdar://problem/73464404>
+    // assert_equals(request.shippingOption, detailsUpdate.shippingOptions.find((shippingOption) => shippingOption.selected).id, "selected shipping option should change");
+    assert_equals(request.shippingOption, detailsUpdate.shippingOptions[0].id, "selected shipping option should change");
     assert_equals(response.shippingOption, request.shippingOption, "selected shipping option should also be exposed on the response");
 
     await response.complete("success");

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (271734 => 271735)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,5 +1,15 @@
 2021-01-21  Devin Rousso  <[email protected]>
 
+        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
+        https://bugs.webkit.org/show_bug.cgi?id=220810
+
+        Reviewed by Andy Estes.
+
+        * web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt:
+        * web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt:
+
+2021-01-21  Devin Rousso  <[email protected]>
+
         [Payment Request] constructor should throw if a payment method is provided more than once
         https://bugs.webkit.org/show_bug.cgi?id=220824
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt (271734 => 271735)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-constructor.https.sub-expected.txt	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,4 @@
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
 
 PASS If details.id is missing, assign an identifier
 PASS If details.id is missing, assign a unique identifier
@@ -17,7 +18,7 @@
 PASS For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value, then throw a TypeError
 PASS If there is no selected shipping option, then PaymentRequest.shippingOption remains null
 PASS If there is a selected shipping option, and requestShipping is set, then that option becomes synchronously selected
-PASS If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected.
+FAIL If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected. assert_equals: selected option must 'the-id expected "the-id" but got "FAIL1"
 PASS If there are any duplicate shipping option ids, and shipping is requested, then throw a TypeError
 PASS Throw when there are duplicate shippingOption ids, even if other values are different
 PASS Throw TypeError if modifier.total.amount.value is not a valid decimal monetary value

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt (271734 => 271735)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-shippingOption-attribute.https-expected.txt	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,8 +1,9 @@
+CONSOLE MESSAGE: WebKit currently uses the first shipping option even if other shipping options are marked as selected.
 
 PASS Must have a .shippingOption IDL attribute.
 PASS .shippingOption attribute must default to null.
-PASS If there is a single shipping option, but selected is false, then .shippingOption must be null.
-PASS If there are multiple shipping options all with `selected` set to false, then .shippingOption is null.
+FAIL If there is a single shipping option, but selected is false, then .shippingOption must be null. assert_equals: expected null expected (object) null but got (string) "valid"
+FAIL If there are multiple shipping options all with `selected` set to false, then .shippingOption is null. assert_equals: expected null expected (object) null but got (string) "valid"
 PASS Given multiple shipping options, it must use the selected shipping option for .shippingOption value.
-PASS If there are multiple of the shipping options with selected true, then .shippingOption is the last selected shipping option in order.
+FAIL If there are multiple of the shipping options with selected true, then .shippingOption is the last selected shipping option in order. assert_equals: expected 'pass' expected "pass" but got "fail"
 

Modified: trunk/Source/_javascript_Core/ChangeLog (271734 => 271735)


--- trunk/Source/_javascript_Core/ChangeLog	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/_javascript_Core/ChangeLog	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,18 @@
+2021-01-21  Devin Rousso  <[email protected]>
+
+        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
+        https://bugs.webkit.org/show_bug.cgi?id=220810
+
+        Reviewed by Andy Estes.
+
+        * inspector/protocol/Console.json:
+        * runtime/ConsoleTypes.h:
+        * inspector/ConsoleMessage.cpp:
+        (Inspector::messageSourceValue):
+        * runtime/ConsoleClient.cpp:
+        (JSC::appendMessagePrefix):
+        Add a new `PaymentRequest` value to the `ChannelSource` enum.
+
 2021-01-21  Yusuke Suzuki  <[email protected]>
 
         [JSC] JSPromise should not propagate TerminatedExecutionError

Modified: trunk/Source/_javascript_Core/inspector/ConsoleMessage.cpp (271734 => 271735)


--- trunk/Source/_javascript_Core/inspector/ConsoleMessage.cpp	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/_javascript_Core/inspector/ConsoleMessage.cpp	2021-01-22 03:50:35 UTC (rev 271735)
@@ -192,6 +192,7 @@
     case MessageSource::WebRTC: return Protocol::Console::ChannelSource::WebRTC;
     case MessageSource::ITPDebug: return Protocol::Console::ChannelSource::ITPDebug;
     case MessageSource::PrivateClickMeasurement: return Protocol::Console::ChannelSource::PrivateClickMeasurement;
+    case MessageSource::PaymentRequest: return Protocol::Console::ChannelSource::PaymentRequest;
     case MessageSource::Other: return Protocol::Console::ChannelSource::Other;
     }
     return Protocol::Console::ChannelSource::Other;

Modified: trunk/Source/_javascript_Core/inspector/protocol/Console.json (271734 => 271735)


--- trunk/Source/_javascript_Core/inspector/protocol/Console.json	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/_javascript_Core/inspector/protocol/Console.json	2021-01-22 03:50:35 UTC (rev 271735)
@@ -23,6 +23,7 @@
                 "webrtc",
                 "itp-debug",
                 "private-click-measurement",
+                "payment-request",
                 "other"
             ],
             "description": "Channels for different types of log messages."

Modified: trunk/Source/_javascript_Core/runtime/ConsoleClient.cpp (271734 => 271735)


--- trunk/Source/_javascript_Core/runtime/ConsoleClient.cpp	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/_javascript_Core/runtime/ConsoleClient.cpp	2021-01-22 03:50:35 UTC (rev 271735)
@@ -108,6 +108,9 @@
     case MessageSource::PrivateClickMeasurement:
         sourceString = "PRIVATECLICKMEASUREMENT"_s;
         break;
+    case MessageSource::PaymentRequest:
+        sourceString = "PAYMENTREQUEST"_s;
+        break;
     case MessageSource::Other:
         sourceString = "OTHER"_s;
         break;

Modified: trunk/Source/_javascript_Core/runtime/ConsoleTypes.h (271734 => 271735)


--- trunk/Source/_javascript_Core/runtime/ConsoleTypes.h	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/_javascript_Core/runtime/ConsoleTypes.h	2021-01-22 03:50:35 UTC (rev 271735)
@@ -45,6 +45,7 @@
     WebRTC,
     ITPDebug,
     PrivateClickMeasurement,
+    PaymentRequest,
     Other,
 };
 
@@ -95,6 +96,7 @@
         JSC::MessageSource::WebRTC,
         JSC::MessageSource::ITPDebug,
         JSC::MessageSource::PrivateClickMeasurement,
+        JSC::MessageSource::PaymentRequest,
         JSC::MessageSource::Other
     >;
 };

Modified: trunk/Source/WebCore/ChangeLog (271734 => 271735)


--- trunk/Source/WebCore/ChangeLog	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebCore/ChangeLog	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,5 +1,40 @@
 2021-01-21  Devin Rousso  <[email protected]>
 
+        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
+        https://bugs.webkit.org/show_bug.cgi?id=220810
+
+        Reviewed by Andy Estes.
+
+        The Payment Request API defines a `selected` property of `PaymentShippingOption` that is
+        used to control the initially selected shipping option when showing/updating a payment
+        request. Currently, `PKShippingMethod` does not have an equivalent concept and instead just
+        uses the first item in the `-[PKPaymentRequest setShippingMethods:]` such that there is
+        always a selected `PKShippingMethod`. This patch adjusts WebKit to follow those same
+        conventions, in that the first item in `paymentDetailsBase.shippingOptions` is used as the
+        `selectedShippingOption` so as to avoid situations where PassKit displays the first shipping
+        option while `PaymentRequest.prototype.get shippingOption` has a different value, which
+        could result in the user authorizing a payment with different shipping details than what
+        they were shown. Ideally in the future PassKit will add API/SPI to allow us to undo this.
+
+        Tests: http/tests/paymentrequest/payment-request-change-shipping-option.https.html
+               http/tests/paymentrequest/updateWith-shippingOptions.https.html
+               web-platform-tests/payment-request/payment-request-constructor.https.sub.html
+               web-platform-tests/payment-request/payment-request-shippingOption-attribute.https.html
+
+        * Modules/paymentrequest/PaymentRequest.cpp:
+        (WebCore::checkAndCanonicalizeDetails):
+        (WebCore::PaymentRequest::create):
+        (WebCore::PaymentRequest::settleDetailsPromise):
+        Pass the `ScriptExecutionContext` instead of the `JSGlobalObject` so that it's possible to
+        call `ScriptExecutionContext::addConsoleMessage`. When creating a `PaymentRequest`, log if
+        subsequent `PaymentShippingOption` are marked as `selected`.
+
+        * inspector/agents/page/PageConsoleAgent.cpp:
+        (WebCore::PageConsoleAgent::getLoggingChannels):
+        Add a new `PaymentRequest` value to the `ChannelSource` enum.
+
+2021-01-21  Devin Rousso  <[email protected]>
+
         [Payment Request] constructor should throw if a payment method is provided more than once
         https://bugs.webkit.org/show_bug.cgi?id=220824
 

Modified: trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp (271734 => 271735)


--- trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebCore/Modules/paymentrequest/PaymentRequest.cpp	2021-01-22 03:50:35 UTC (rev 271735)
@@ -245,7 +245,7 @@
     Yes,
 };
 
-static ExceptionOr<std::tuple<String, Vector<String>>> checkAndCanonicalizeDetails(JSC::JSGlobalObject& execState, PaymentDetailsBase& details, bool requestShipping, IsUpdate isUpdate)
+static ExceptionOr<std::tuple<String, Vector<String>>> checkAndCanonicalizeDetails(ScriptExecutionContext& context, PaymentDetailsBase& details, bool requestShipping, IsUpdate isUpdate)
 {
     if (details.displayItems) {
         for (auto& item : *details.displayItems) {
@@ -259,6 +259,7 @@
     if (requestShipping) {
         if (details.shippingOptions) {
             HashSet<String> seenShippingOptionIDs;
+            bool didLog = false;
             for (auto& shippingOption : *details.shippingOptions) {
                 auto exception = checkAndCanonicalizeAmount(shippingOption.amount);
                 if (exception.hasException())
@@ -268,8 +269,13 @@
                 if (!addResult.isNewEntry)
                     return Exception { TypeError, "Shipping option IDs must be unique." };
 
-                if (shippingOption.selected)
+                // FIXME: <rdar://problem/73464404>
+                if (!selectedShippingOption)
                     selectedShippingOption = shippingOption.id;
+                else if (!didLog && shippingOption.selected) {
+                    context.addConsoleMessage(JSC::MessageSource::PaymentRequest, JSC::MessageLevel::Warning, "WebKit currently uses the first shipping option even if other shipping options are marked as selected."_s);
+                    didLog = true;
+                }
             }
         } else if (isUpdate == IsUpdate::No)
             details.shippingOptions = { { } };
@@ -299,8 +305,9 @@
 
             String serializedData;
             if (modifier.data) {
-                auto scope = DECLARE_THROW_SCOPE(execState.vm());
-                serializedData = JSONStringify(&execState, modifier.data.get(), 0);
+                auto* globalObject = context.globalObject();
+                auto scope = DECLARE_THROW_SCOPE(globalObject->vm());
+                serializedData = JSONStringify(globalObject, modifier.data.get(), 0);
                 if (scope.exception())
                     return Exception { ExistingExceptionError };
                 modifier.data.clear();
@@ -377,7 +384,7 @@
     if (totalResult.hasException())
         return totalResult.releaseException();
 
-    auto detailsResult = checkAndCanonicalizeDetails(*document.globalObject(), details, options.requestShipping, IsUpdate::No);
+    auto detailsResult = checkAndCanonicalizeDetails(document, details, options.requestShipping, IsUpdate::No);
     if (detailsResult.hasException())
         return detailsResult.releaseException();
 
@@ -681,7 +688,7 @@
         }
     }
 
-    auto detailsResult = checkAndCanonicalizeDetails(*context.globalObject(), detailsUpdate, m_options.requestShipping, IsUpdate::Yes);
+    auto detailsResult = checkAndCanonicalizeDetails(context, detailsUpdate, m_options.requestShipping, IsUpdate::Yes);
     if (detailsResult.hasException()) {
         abortWithException(detailsResult.releaseException());
         return;

Modified: trunk/Source/WebCore/inspector/agents/page/PageConsoleAgent.cpp (271734 => 271735)


--- trunk/Source/WebCore/inspector/agents/page/PageConsoleAgent.cpp	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebCore/inspector/agents/page/PageConsoleAgent.cpp	2021-01-22 03:50:35 UTC (rev 271735)
@@ -108,6 +108,7 @@
     addLogChannel(Protocol::Console::ChannelSource::WebRTC);
     addLogChannel(Protocol::Console::ChannelSource::ITPDebug);
     addLogChannel(Protocol::Console::ChannelSource::PrivateClickMeasurement);
+    addLogChannel(Protocol::Console::ChannelSource::PaymentRequest);
     addLogChannel(Protocol::Console::ChannelSource::Other);
 
     return channels;

Modified: trunk/Source/WebInspectorUI/ChangeLog (271734 => 271735)


--- trunk/Source/WebInspectorUI/ChangeLog	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebInspectorUI/ChangeLog	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,15 @@
+2021-01-21  Devin Rousso  <[email protected]>
+
+        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
+        https://bugs.webkit.org/show_bug.cgi?id=220810
+
+        Reviewed by Andy Estes.
+
+        * UserInterface/Models/ConsoleMessage.js:
+        * UserInterface/Models/IssueMessage.js:
+        (WI.IssueMessage):
+        Add a new `PaymentRequest` value to the `ChannelSource` enum.
+
 2021-01-21  Ebrahim Byagowi  <[email protected]>
 
         Web Inspector: Fix bidi confusion when evaluation result has RTL text

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js (271734 => 271735)


--- trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ConsoleMessage.js	2021-01-22 03:50:35 UTC (rev 271735)
@@ -114,6 +114,7 @@
     WebRTC: "webrtc",
     ITPDebug: "itp-debug",
     PrivateClickMeasurement: "private-click-measurement",
+    PaymentRequest: "payment-request",
     Other: "other",
 
     // COMPATIBILITY (iOS 14.0): `Console.ChannelSource.AdClickAttribution` was renamed to `Console.ChannelSource.PrivateClickMeasurement`.

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/IssueMessage.js (271734 => 271735)


--- trunk/Source/WebInspectorUI/UserInterface/Models/IssueMessage.js	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/IssueMessage.js	2021-01-22 03:50:35 UTC (rev 271735)
@@ -70,6 +70,7 @@
         case WI.ConsoleMessage.MessageSource.WebRTC:
         case WI.ConsoleMessage.MessageSource.ITPDebug:
         case WI.ConsoleMessage.MessageSource.PrivateClickMeasurement:
+        case WI.ConsoleMessage.MessageSource.PaymentRequest:
         case WI.ConsoleMessage.MessageSource.AdClickAttribution: // COMPATIBILITY (iOS 14.0): `Console.ChannelSource.AdClickAttribution` was renamed to `Console.ChannelSource.PrivateClickMeasurement`.
         case WI.ConsoleMessage.MessageSource.Other:
             this._type = WI.IssueMessage.Type.OtherIssue;

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (271734 => 271735)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2021-01-22 03:50:35 UTC (rev 271735)
@@ -1,3 +1,14 @@
+2021-01-21  Devin Rousso  <[email protected]>
+
+        [Apple Pay] use the first item in `shippingOptions` even when it's not `selected`
+        https://bugs.webkit.org/show_bug.cgi?id=220810
+
+        Reviewed by Andy Estes.
+
+        * WebCoreSupport/WebChromeClient.mm:
+        (stringForMessageSource):
+        Add a new `PaymentRequest` value to the `ChannelSource` enum.
+
 2021-01-20  Wenson Hsieh  <[email protected]>
 
         [macOS] Include an origin identifier when writing promised image data to the drag pasteboard

Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm (271734 => 271735)


--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm	2021-01-22 03:39:46 UTC (rev 271734)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm	2021-01-22 03:50:35 UTC (rev 271735)
@@ -126,6 +126,7 @@
 NSString *WebConsoleMessageWebRTCMessageSource = @"WebRTCMessageSource";
 NSString *WebConsoleMessageITPDebugMessageSource = @"ITPDebugMessageSource";
 NSString *WebConsoleMessagePrivateClickMeasurementMessageSource = @"PrivateClickMeasurementMessageSource";
+NSString *WebConsoleMessagePaymentRequestMessageSource = @"PaymentRequestMessageSource";
 NSString *WebConsoleMessageOtherMessageSource = @"OtherMessageSource";
 
 NSString *WebConsoleMessageDebugMessageLevel = @"DebugMessageLevel";
@@ -406,6 +407,8 @@
         return WebConsoleMessageITPDebugMessageSource;
     case MessageSource::PrivateClickMeasurement:
         return WebConsoleMessagePrivateClickMeasurementMessageSource;
+    case MessageSource::PaymentRequest:
+        return WebConsoleMessagePaymentRequestMessageSource;
     case MessageSource::Other:
         return WebConsoleMessageOtherMessageSource;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to