<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[202309] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/202309">202309</a></dd>
<dt>Author</dt> <dd>andersca@apple.com</dd>
<dt>Date</dt> <dd>2016-06-21 18:05:31 -0700 (Tue, 21 Jun 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Move the last Apple Pay WebCore files to the open source repository
https://bugs.webkit.org/show_bug.cgi?id=159005
Reviewed by Tim Horton.
* DerivedSources.make:
* Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp: Added.
* Modules/applepay/ApplePayPaymentAuthorizedEvent.h: Added.
* Modules/applepay/ApplePayPaymentAuthorizedEvent.idl: Added.
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp: Added.
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.h: Added.
* Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl: Added.
* Modules/applepay/ApplePaySession.cpp: Added.
* Modules/applepay/ApplePaySession.h: Added.
* Modules/applepay/ApplePaySession.idl: Added.
* Modules/applepay/ApplePayShippingContactSelectedEvent.cpp: Added.
* Modules/applepay/ApplePayShippingContactSelectedEvent.h: Added.
* Modules/applepay/ApplePayShippingContactSelectedEvent.idl: Added.
* Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp: Added.
* Modules/applepay/ApplePayShippingMethodSelectedEvent.h: Added.
* Modules/applepay/ApplePayShippingMethodSelectedEvent.idl: Added.
* Modules/applepay/ApplePayValidateMerchantEvent.cpp: Added.
* Modules/applepay/ApplePayValidateMerchantEvent.h: Added.
* Modules/applepay/ApplePayValidateMerchantEvent.idl: Added.
* Modules/applepay/Payment.h: Added.
* Modules/applepay/PaymentAuthorizationStatus.h: Added.
* Modules/applepay/PaymentContact.h: Added.
* Modules/applepay/PaymentMerchantSession.h: Added.
* Modules/applepay/PaymentMethod.h: Added.
* Modules/applepay/PaymentRequestValidator.cpp: Added.
* Modules/applepay/PaymentRequestValidator.h: Added.
* Modules/applepay/cocoa/PaymentContactCocoa.mm: Added.
* Modules/applepay/cocoa/PaymentMethodCocoa.mm: Added.
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp: Added.
* bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp: Added.
* bindings/js/JSApplePaySessionCustom.cpp: Added.
* bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp: Added.
* bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp: Added.
* dom/EventNames.in:
* dom/EventTargetFactory.in:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepaycocoaPaymentCocoamm">trunk/Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomEventNamesin">trunk/Source/WebCore/dom/EventNames.in</a></li>
<li><a href="#trunkSourceWebCoredomEventTargetFactoryin">trunk/Source/WebCore/dom/EventTargetFactory.in</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayPaymentAuthorizedEventcpp">trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayPaymentAuthorizedEventh">trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayPaymentAuthorizedEventidl">trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayPaymentMethodSelectedEventcpp">trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayPaymentMethodSelectedEventh">trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayPaymentMethodSelectedEventidl">trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePaySessioncpp">trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePaySessionh">trunk/Source/WebCore/Modules/applepay/ApplePaySession.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePaySessionidl">trunk/Source/WebCore/Modules/applepay/ApplePaySession.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayShippingContactSelectedEventcpp">trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayShippingContactSelectedEventh">trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayShippingContactSelectedEventidl">trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayShippingMethodSelectedEventcpp">trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayShippingMethodSelectedEventh">trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayShippingMethodSelectedEventidl">trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventcpp">trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventh">trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventidl">trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymenth">trunk/Source/WebCore/Modules/applepay/Payment.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentAuthorizationStatush">trunk/Source/WebCore/Modules/applepay/PaymentAuthorizationStatus.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentContacth">trunk/Source/WebCore/Modules/applepay/PaymentContact.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentMerchantSessionh">trunk/Source/WebCore/Modules/applepay/PaymentMerchantSession.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentMethodh">trunk/Source/WebCore/Modules/applepay/PaymentMethod.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentRequestValidatorcpp">trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepayPaymentRequestValidatorh">trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.h</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepaycocoaPaymentContactCocoamm">trunk/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm</a></li>
<li><a href="#trunkSourceWebCoreModulesapplepaycocoaPaymentMethodCocoamm">trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePayPaymentAuthorizedEventCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePayPaymentMethodSelectedEventCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePaySessionCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePayShippingContactSelectedEventCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePayShippingMethodSelectedEventCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (202308 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-06-22 00:08:10 UTC (rev 202308)
+++ trunk/Source/WebCore/ChangeLog        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -1,5 +1,49 @@
</span><span class="cx"> 2016-06-21 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><ins>+ Move the last Apple Pay WebCore files to the open source repository
+ https://bugs.webkit.org/show_bug.cgi?id=159005
+
+ Reviewed by Tim Horton.
+
+ * DerivedSources.make:
+ * Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp: Added.
+ * Modules/applepay/ApplePayPaymentAuthorizedEvent.h: Added.
+ * Modules/applepay/ApplePayPaymentAuthorizedEvent.idl: Added.
+ * Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp: Added.
+ * Modules/applepay/ApplePayPaymentMethodSelectedEvent.h: Added.
+ * Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl: Added.
+ * Modules/applepay/ApplePaySession.cpp: Added.
+ * Modules/applepay/ApplePaySession.h: Added.
+ * Modules/applepay/ApplePaySession.idl: Added.
+ * Modules/applepay/ApplePayShippingContactSelectedEvent.cpp: Added.
+ * Modules/applepay/ApplePayShippingContactSelectedEvent.h: Added.
+ * Modules/applepay/ApplePayShippingContactSelectedEvent.idl: Added.
+ * Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp: Added.
+ * Modules/applepay/ApplePayShippingMethodSelectedEvent.h: Added.
+ * Modules/applepay/ApplePayShippingMethodSelectedEvent.idl: Added.
+ * Modules/applepay/ApplePayValidateMerchantEvent.cpp: Added.
+ * Modules/applepay/ApplePayValidateMerchantEvent.h: Added.
+ * Modules/applepay/ApplePayValidateMerchantEvent.idl: Added.
+ * Modules/applepay/Payment.h: Added.
+ * Modules/applepay/PaymentAuthorizationStatus.h: Added.
+ * Modules/applepay/PaymentContact.h: Added.
+ * Modules/applepay/PaymentMerchantSession.h: Added.
+ * Modules/applepay/PaymentMethod.h: Added.
+ * Modules/applepay/PaymentRequestValidator.cpp: Added.
+ * Modules/applepay/PaymentRequestValidator.h: Added.
+ * Modules/applepay/cocoa/PaymentContactCocoa.mm: Added.
+ * Modules/applepay/cocoa/PaymentMethodCocoa.mm: Added.
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp: Added.
+ * bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp: Added.
+ * bindings/js/JSApplePaySessionCustom.cpp: Added.
+ * bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp: Added.
+ * bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp: Added.
+ * dom/EventNames.in:
+ * dom/EventTargetFactory.in:
+
+2016-06-21 Anders Carlsson <andersca@apple.com>
+
</ins><span class="cx"> Fix build.
</span><span class="cx">
</span><span class="cx"> * Configurations/FeatureDefines.xcconfig:
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (202308 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-06-22 00:08:10 UTC (rev 202308)
+++ trunk/Source/WebCore/DerivedSources.make        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> VPATH = \
</span><span class="cx"> $(WebCore) \
</span><span class="cx"> $(WebCore)/Modules/airplay \
</span><ins>+ $(WebCore)/Modules/applepay \
</ins><span class="cx"> $(WebCore)/Modules/encryptedmedia \
</span><span class="cx"> $(WebCore)/Modules/fetch \
</span><span class="cx"> $(WebCore)/Modules/gamepad \
</span><span class="lines">@@ -76,6 +77,12 @@
</span><span class="cx">
</span><span class="cx"> NON_SVG_BINDING_IDLS = \
</span><span class="cx"> $(WebCore)/Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.idl \
</span><ins>+        $(WebCore)/Modules/applepay/ApplePayPaymentAuthorizedEvent.idl \
+ $(WebCore)/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl \
+ $(WebCore)/Modules/applepay/ApplePaySession.idl \
+ $(WebCore)/Modules/applepay/ApplePayShippingContactSelectedEvent.idl \
+ $(WebCore)/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl \
+ $(WebCore)/Modules/applepay/ApplePayValidateMerchantEvent.idl \
</ins><span class="cx"> $(WebCore)/Modules/encryptedmedia/MediaKeyMessageEvent.idl \
</span><span class="cx"> $(WebCore)/Modules/encryptedmedia/MediaKeyNeededEvent.idl \
</span><span class="cx"> $(WebCore)/Modules/encryptedmedia/MediaKeySession.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayPaymentAuthorizedEventcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ApplePayPaymentAuthorizedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayPaymentAuthorizedEvent::ApplePayPaymentAuthorizedEvent(const AtomicString& type, const Payment& payment)
+ : Event(type, false, false)
+ , m_payment(payment)
+{
+}
+
+ApplePayPaymentAuthorizedEvent::~ApplePayPaymentAuthorizedEvent()
+{
+}
+
+EventInterface ApplePayPaymentAuthorizedEvent::eventInterface() const
+{
+ return ApplePayPaymentAuthorizedEventInterfaceType;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayPaymentAuthorizedEventh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "Event.h"
+#include "Payment.h"
+
+namespace WebCore {
+
+class ApplePayPaymentAuthorizedEvent final : public Event {
+public:
+ static Ref<ApplePayPaymentAuthorizedEvent> create(const AtomicString& type, const Payment& payment)
+ {
+ return adoptRef(*new ApplePayPaymentAuthorizedEvent(type, payment));
+ }
+
+ virtual ~ApplePayPaymentAuthorizedEvent();
+
+ const Payment& payment() const { return m_payment; }
+
+private:
+ ApplePayPaymentAuthorizedEvent(const AtomicString& type, const Payment&);
+
+ // Event.
+ EventInterface eventInterface() const override;
+
+ const Payment m_payment;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayPaymentAuthorizedEventidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.idl (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.idl         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentAuthorizedEvent.idl        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=APPLE_PAY,
+ NoInterfaceObject,
+] interface ApplePayPaymentAuthorizedEvent : Event {
+ [CachedAttribute, CustomGetter] readonly attribute Object payment;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayPaymentMethodSelectedEventcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ApplePayPaymentMethodSelectedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include "PaymentMethod.h"
+
+namespace WebCore {
+
+ApplePayPaymentMethodSelectedEvent::ApplePayPaymentMethodSelectedEvent(const AtomicString& type, const PaymentMethod& paymentMethod)
+ : Event(type, false, false)
+ , m_paymentMethod(paymentMethod)
+{
+}
+
+ApplePayPaymentMethodSelectedEvent::~ApplePayPaymentMethodSelectedEvent()
+{
+}
+
+EventInterface ApplePayPaymentMethodSelectedEvent::eventInterface() const
+{
+ return ApplePayPaymentMethodSelectedEventInterfaceType;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayPaymentMethodSelectedEventh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "Event.h"
+#include "PaymentMethod.h"
+
+namespace WebCore {
+
+class PaymentMethod;
+
+class ApplePayPaymentMethodSelectedEvent final : public Event {
+public:
+ static Ref<ApplePayPaymentMethodSelectedEvent> create(const AtomicString& type, const PaymentMethod& paymentMethod)
+ {
+ return adoptRef(*new ApplePayPaymentMethodSelectedEvent(type, paymentMethod));
+ }
+
+ virtual ~ApplePayPaymentMethodSelectedEvent();
+
+ const PaymentMethod& paymentMethod() { return m_paymentMethod; }
+
+private:
+ ApplePayPaymentMethodSelectedEvent(const AtomicString& type, const PaymentMethod&);
+
+ // Event.
+ EventInterface eventInterface() const override;
+
+ const PaymentMethod m_paymentMethod;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayPaymentMethodSelectedEventidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayPaymentMethodSelectedEvent.idl        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=APPLE_PAY,
+ NoInterfaceObject,
+] interface ApplePayPaymentMethodSelectedEvent : Event {
+ [CachedAttribute, CustomGetter] readonly attribute Object paymentMethod;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePaySessioncpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,1319 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ApplePaySession.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include "ApplePayPaymentAuthorizedEvent.h"
+#include "ApplePayPaymentMethodSelectedEvent.h"
+#include "ApplePayShippingContactSelectedEvent.h"
+#include "ApplePayShippingMethodSelectedEvent.h"
+#include "ApplePayValidateMerchantEvent.h"
+#include "ArrayValue.h"
+#include "DOMWindow.h"
+#include "Dictionary.h"
+#include "Document.h"
+#include "DocumentLoader.h"
+#include "EventNames.h"
+#include "JSDOMPromise.h"
+#include "JSMainThreadExecState.h"
+#include "LinkIconCollector.h"
+#include "LinkIconType.h"
+#include "MainFrame.h"
+#include "Page.h"
+#include "PaymentAuthorizationStatus.h"
+#include "PaymentContact.h"
+#include "PaymentCoordinator.h"
+#include "PaymentMerchantSession.h"
+#include "PaymentMethod.h"
+#include "PaymentRequestValidator.h"
+#include "ScriptController.h"
+#include "SecurityOrigin.h"
+#include "Settings.h"
+
+namespace WebCore {
+
+static bool parseDigit(UChar digit, bool isNegative, int64_t& amount)
+{
+ if (!isASCIIDigit(digit))
+ return false;
+
+ int64_t digitValue = (digit - '0');
+
+ const int64_t maxMultiplier = std::numeric_limits<int64_t>::max() / 10;
+
+ // Check overflow.
+ if (amount > maxMultiplier || (amount == maxMultiplier && digitValue > (std::numeric_limits<int64_t>::max() % 10) + isNegative))
+ return false;
+
+ amount = amount * 10 + digitValue;
+ return true;
+}
+
+// The amount follows the regular expression -?[0-9]+(\.[0-9][0-9])?.
+static Optional<int64_t> parseAmount(const String& amountString)
+{
+ int64_t amount = 0;
+
+ bool isNegative = false;
+
+ enum class State {
+ Start,
+ Sign,
+ Digit,
+ Dot,
+ DotDigit,
+ End,
+ };
+
+ State state = State::Start;
+
+ for (unsigned i = 0; i < amountString.length(); ++i) {
+ UChar c = amountString[i];
+
+ switch (state) {
+ case State::Start:
+ if (c == '-') {
+ isNegative = true;
+ state = State::Sign;
+ break;
+ }
+
+ if (!parseDigit(c, isNegative, amount))
+ return Nullopt;
+ state = State::Digit;
+ break;
+
+ case State::Sign:
+ if (!parseDigit(c, isNegative, amount))
+ return Nullopt;
+ state = State::Digit;
+ break;
+
+ case State::Digit:
+ if (c == '.') {
+ state = State::Dot;
+ break;
+ }
+
+ if (!parseDigit(c, isNegative, amount))
+ return Nullopt;
+ break;
+
+ case State::Dot:
+ if (!parseDigit(c, isNegative, amount))
+ return Nullopt;
+
+ state = State::DotDigit;
+ break;
+
+ case State::DotDigit:
+ if (!parseDigit(c, isNegative, amount))
+ return Nullopt;
+
+ state = State::End;
+ break;
+
+ case State::End:
+ return Nullopt;
+ }
+ }
+
+ if (state != State::Digit && state != State::DotDigit && state != State::End)
+ return Nullopt;
+
+ if (state == State::DotDigit) {
+ // There was a single digit after the decimal point.
+ // FIXME: Handle this overflowing.
+ amount *= 10;
+ } else if (state == State::Digit) {
+ // There was no decimal point.
+ // FIXME: Handle this overflowing.
+ amount *= 100;
+ }
+
+ if (isNegative)
+ amount = -amount;
+
+ return amount;
+}
+
+static Optional<PaymentRequest::AddressFields> createAddressFields(DOMWindow& window, const ArrayValue& addressFieldsArray)
+{
+ PaymentRequest::AddressFields result;
+
+ size_t addressFieldsCount;
+ if (!addressFieldsArray.length(addressFieldsCount))
+ return Nullopt;
+
+ for (size_t i = 0; i < addressFieldsCount; ++i) {
+ String addressField;
+ if (!addressFieldsArray.get(i, addressField))
+ return Nullopt;
+
+ if (addressField == "postalAddress")
+ result.postalAddress = true;
+ else if (addressField == "phone")
+ result.phone = true;
+ else if (addressField == "email")
+ result.email = true;
+ else if (addressField == "name")
+ result.name = true;
+ else {
+ auto message = makeString("\"" + addressField, "\" is not a valid address field.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ return result;
+}
+
+static Optional<PaymentRequest::LineItem::Type> toLineItemType(const String& type)
+{
+ if (type == "pending")
+ return PaymentRequest::LineItem::Type::Pending;
+ if (type == "final")
+ return PaymentRequest::LineItem::Type::Final;
+
+ return Nullopt;
+}
+
+static bool isValidLineItemPropertyName(const String& propertyName)
+{
+ const char* validPropertyNames[] = {
+ "type",
+ "label",
+ "amount",
+ };
+
+ for (auto& validPropertyName : validPropertyNames) {
+ if (propertyName == validPropertyName)
+ return true;
+ }
+
+ return false;
+}
+
+static Optional<PaymentRequest::LineItem> createLineItem(DOMWindow& window, const Dictionary& total)
+{
+ Vector<String> propertyNames;
+ total.getOwnPropertyNames(propertyNames);
+
+ for (auto& propertyName : propertyNames) {
+ if (!isValidLineItemPropertyName(propertyName)) {
+ auto message = makeString("\"" + propertyName, "\" is not a valid line item property name.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ // Line item type defaults to Final.
+ PaymentRequest::LineItem result;
+
+ if (auto typeString = total.get<String>("type")) {
+ auto type = toLineItemType(*typeString);
+ if (!type) {
+ auto message = makeString("\"" + *typeString, "\" is not a valid line item type.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+
+ result.type = *type;
+ }
+
+ if (auto label = total.get<String>("label"))
+ result.label = *label;
+ if (auto amountString = total.get<String>("amount")) {
+ if (auto amount = parseAmount(*amountString))
+ result.amount = *amount;
+ else {
+ auto message = makeString("\"" + *amountString, "\" is not a valid amount.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ return result;
+}
+
+static Optional<Vector<PaymentRequest::LineItem>> createLineItems(DOMWindow& window, const ArrayValue& lineItemsArray)
+{
+ Vector<PaymentRequest::LineItem> result;
+
+ size_t lineItemCount;
+ if (!lineItemsArray.length(lineItemCount))
+ return Nullopt;
+
+ for (size_t i = 0; i < lineItemCount; ++i) {
+ Dictionary lineItemDictionary;
+ if (!lineItemsArray.get(i, lineItemDictionary))
+ return Nullopt;
+
+ if (auto lineItem = createLineItem(window, lineItemDictionary))
+ result.append(*lineItem);
+ }
+
+ return result;
+}
+
+static Optional<PaymentRequest::MerchantCapabilities> createMerchantCapabilities(DOMWindow& window, const ArrayValue& merchantCapabilitiesArray)
+{
+ PaymentRequest::MerchantCapabilities result;
+
+ size_t merchantCapabilitiesCount;
+ if (!merchantCapabilitiesArray.length(merchantCapabilitiesCount))
+ return Nullopt;
+
+ for (size_t i = 0; i < merchantCapabilitiesCount; ++i) {
+ String merchantCapability;
+ if (!merchantCapabilitiesArray.get(i, merchantCapability))
+ return Nullopt;
+
+ if (merchantCapability == "supports3DS")
+ result.supports3DS = true;
+ else if (merchantCapability == "supportsEMV")
+ result.supportsEMV = true;
+ else if (merchantCapability == "supportsCredit")
+ result.supportsCredit = true;
+ else if (merchantCapability == "supportsDebit")
+ result.supportsDebit = true;
+ else {
+ auto message = makeString("\"" + merchantCapability, "\" is not a valid merchant capability.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ return result;
+}
+
+static Optional<PaymentRequest::SupportedNetworks> createSupportedNetworks(DOMWindow& window, const ArrayValue& supportedNetworksArray)
+{
+ PaymentRequest::SupportedNetworks result;
+
+ size_t supportedNetworksCount;
+ if (!supportedNetworksArray.length(supportedNetworksCount))
+ return Nullopt;
+
+ for (size_t i = 0; i < supportedNetworksCount; ++i) {
+ String supportedNetwork;
+ if (!supportedNetworksArray.get(i, supportedNetwork))
+ return Nullopt;
+
+ if (supportedNetwork == "amex")
+ result.amex = true;
+ else if (supportedNetwork == "chinaUnionPay")
+ result.chinaUnionPay = true;
+ else if (supportedNetwork == "discover")
+ result.discover = true;
+ else if (supportedNetwork == "interac")
+ result.interac = true;
+ else if (supportedNetwork == "masterCard")
+ result.masterCard = true;
+ else if (supportedNetwork == "privateLabel")
+ result.privateLabel = true;
+ else if (supportedNetwork == "visa")
+ result.visa = true;
+ else {
+ auto message = makeString("\"" + supportedNetwork, "\" is not a valid payment network.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ return result;
+}
+
+static Optional<PaymentRequest::ShippingType> toShippingType(const String& shippingTypeString)
+{
+ if (shippingTypeString == "shipping")
+ return PaymentRequest::ShippingType::Shipping;
+ if (shippingTypeString == "delivery")
+ return PaymentRequest::ShippingType::Delivery;
+ if (shippingTypeString == "storePickup")
+ return PaymentRequest::ShippingType::StorePickup;
+ if (shippingTypeString == "servicePickup")
+ return PaymentRequest::ShippingType::ServicePickup;
+
+ return Nullopt;
+}
+
+static bool isValidShippingMethodPropertyName(const String& propertyName)
+{
+ const char* validPropertyNames[] = {
+ "label",
+ "detail",
+ "amount",
+ "identifier",
+ };
+
+ for (auto& validPropertyName : validPropertyNames) {
+ if (propertyName == validPropertyName)
+ return true;
+ }
+
+ return false;
+}
+
+static Optional<PaymentRequest::ShippingMethod> createShippingMethod(DOMWindow& window, const Dictionary& shippingMethodDictionary)
+{
+ Vector<String> propertyNames;
+ shippingMethodDictionary.getOwnPropertyNames(propertyNames);
+
+ for (auto& propertyName : propertyNames) {
+ if (!isValidShippingMethodPropertyName(propertyName)) {
+ auto message = makeString("\"" + propertyName, "\" is not a valid shipping method property name.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ PaymentRequest::ShippingMethod result;
+
+ auto label = shippingMethodDictionary.get<String>("label");
+ if (!label) {
+ window.printErrorMessage("Missing shipping method label.");
+ return Nullopt;
+ }
+ result.label = *label;
+
+ auto detail = shippingMethodDictionary.get<String>("detail");
+ if (!detail) {
+ window.printErrorMessage("Missing shipping method detail.");
+ return Nullopt;
+ }
+ result.detail = *detail;
+
+ auto amountString = shippingMethodDictionary.get<String>("amount");
+ if (!amountString) {
+ window.printErrorMessage("Missing shipping method amount.");
+ return Nullopt;
+ }
+
+ if (auto amount = parseAmount(*amountString))
+ result.amount = *amount;
+ else {
+ auto message = makeString("\"" + *amountString, "\" is not a valid amount.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+
+ auto identifier = shippingMethodDictionary.get<String>("identifier");
+ if (!identifier) {
+ window.printErrorMessage("Missing shipping method identifier.");
+ return Nullopt;
+ }
+ result.identifier = *identifier;
+
+ return result;
+}
+
+static Optional<Vector<PaymentRequest::ShippingMethod>> createShippingMethods(DOMWindow& window, const ArrayValue& shippingMethodsArray)
+{
+ Vector<PaymentRequest::ShippingMethod> result;
+
+ size_t shippingMethodCount;
+ if (!shippingMethodsArray.length(shippingMethodCount))
+ return Nullopt;
+
+ for (size_t i = 0; i < shippingMethodCount; ++i) {
+ Dictionary shippingMethodDictionary;
+ if (!shippingMethodsArray.get(i, shippingMethodDictionary))
+ return Nullopt;
+
+ if (auto shippingMethod = createShippingMethod(window, shippingMethodDictionary))
+ result.append(*shippingMethod);
+ }
+
+ return result;
+}
+
+static bool isValidPaymentRequestPropertyName(const String& propertyName)
+{
+ const char* validPropertyNames[] = {
+ "merchantCapabilities",
+ "supportedNetworks",
+ "countryCode",
+ "currencyCode",
+ "requiredBillingAddressFields",
+ "billingContact",
+ "requiredShippingAddressFields",
+ "shippingContact",
+ "shippingMethods",
+ "total",
+ "lineItems",
+ "applicationData",
+ };
+
+ for (auto& validPropertyName : validPropertyNames) {
+ if (propertyName == validPropertyName)
+ return true;
+ }
+
+ return false;
+}
+
+static Optional<PaymentRequest> createPaymentRequest(DOMWindow& window, const Dictionary& dictionary)
+{
+ PaymentRequest paymentRequest;
+
+ Vector<String> propertyNames;
+ dictionary.getOwnPropertyNames(propertyNames);
+
+ for (auto& propertyName : propertyNames) {
+ if (!isValidPaymentRequestPropertyName(propertyName)) {
+ auto message = makeString("\"" + propertyName, "\" is not a valid payment request property name.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ }
+
+ if (auto merchantCapabilitiesArray = dictionary.get<ArrayValue>("merchantCapabilities")) {
+ auto merchantCapabilities = createMerchantCapabilities(window, *merchantCapabilitiesArray);
+ if (!merchantCapabilities)
+ return Nullopt;
+
+ paymentRequest.setMerchantCapabilities(*merchantCapabilities);
+ }
+
+ if (auto supportedNetworksArray = dictionary.get<ArrayValue>("supportedNetworks")) {
+ auto supportedNetworks = createSupportedNetworks(window, *supportedNetworksArray);
+ if (!supportedNetworks)
+ return Nullopt;
+
+ paymentRequest.setSupportedNetworks(*supportedNetworks);
+ }
+
+ if (auto countryCode = dictionary.get<String>("countryCode"))
+ paymentRequest.setCountryCode(*countryCode);
+ if (auto currencyCode = dictionary.get<String>("currencyCode"))
+ paymentRequest.setCurrencyCode(*currencyCode);
+
+ if (auto requiredBillingAddressFieldsArray = dictionary.get<ArrayValue>("requiredBillingAddressFields")) {
+ auto requiredBillingAddressFields = createAddressFields(window, *requiredBillingAddressFieldsArray);
+ if (!requiredBillingAddressFields)
+ return Nullopt;
+
+ paymentRequest.setRequiredBillingAddressFields(*requiredBillingAddressFields);
+ }
+
+ if (auto billingContactValue = dictionary.get<JSC::JSValue>("billingContact")) {
+ String errorMessage;
+ auto billingContact = PaymentContact::fromJS(*JSMainThreadExecState::currentState(), *billingContactValue, errorMessage);
+ if (!billingContact) {
+ window.printErrorMessage(errorMessage);
+ return Nullopt;
+ }
+
+ paymentRequest.setBillingContact(*billingContact);
+ }
+
+ if (auto requiredShippingAddressFieldsArray = dictionary.get<ArrayValue>("requiredShippingAddressFields")) {
+ auto requiredShippingAddressFields = createAddressFields(window, *requiredShippingAddressFieldsArray);
+ if (!requiredShippingAddressFields)
+ return Nullopt;
+
+ paymentRequest.setRequiredShippingAddressFields(*requiredShippingAddressFields);
+ }
+
+ if (auto shippingContactValue = dictionary.get<JSC::JSValue>("shippingContact")) {
+ String errorMessage;
+ auto shippingContact = PaymentContact::fromJS(*JSMainThreadExecState::currentState(), *shippingContactValue, errorMessage);
+ if (!shippingContact) {
+ window.printErrorMessage(errorMessage);
+ return Nullopt;
+ }
+
+ paymentRequest.setShippingContact(*shippingContact);
+ }
+
+ if (auto shippingTypeString = dictionary.get<String>("shippingType")) {
+ auto shippingType = toShippingType(*shippingTypeString);
+
+ if (!shippingType) {
+ auto message = makeString("\"" + *shippingTypeString, "\" is not a valid shipping type.");
+ window.printErrorMessage(message);
+ return Nullopt;
+ }
+ paymentRequest.setShippingType(*shippingType);
+ }
+
+ if (auto shippingMethodsArray = dictionary.get<ArrayValue>("shippingMethods")) {
+ if (auto shippingMethods = createShippingMethods(window, *shippingMethodsArray))
+ paymentRequest.setShippingMethods(*shippingMethods);
+ }
+
+ if (auto totalDictionary = dictionary.get<Dictionary>("total")) {
+ auto total = createLineItem(window, *totalDictionary);
+ if (!total)
+ return Nullopt;
+
+ paymentRequest.setTotal(*total);
+ }
+
+ if (auto lineItemsArray = dictionary.get<ArrayValue>("lineItems")) {
+ if (auto lineItems = createLineItems(window, *lineItemsArray))
+ paymentRequest.setLineItems(*lineItems);
+ }
+
+ if (auto applicationData = dictionary.get<String>("applicationData"))
+ paymentRequest.setApplicationData(*applicationData);
+
+ return paymentRequest;
+}
+
+static bool isSecure(DocumentLoader& documentLoader)
+{
+ if (!documentLoader.response().url().protocolIs("https"))
+ return false;
+
+ if (!documentLoader.response().certificateInfo() || documentLoader.response().certificateInfo()->containsNonRootSHA1SignedCertificate())
+ return false;
+
+ return true;
+}
+
+static bool canCallApplePaySessionAPIs(Document& document, String& errorMessage)
+{
+ if (!isSecure(*document.loader())) {
+ errorMessage = "Trying to call an ApplePaySession API from an insecure document.";
+ return false;
+ }
+
+ auto& topDocument = document.topDocument();
+ if (&document != &topDocument) {
+ auto& topOrigin = *topDocument.topOrigin();
+
+ if (!document.securityOrigin()->isSameSchemeHostPort(&topOrigin)) {
+ errorMessage = "Trying to call an ApplePaySession API from a document with an different security origin than its top-level frame.";
+ return false;
+ }
+
+ for (auto* ancestorDocument = document.parentDocument(); ancestorDocument != &topDocument; ancestorDocument = ancestorDocument->parentDocument()) {
+ if (!isSecure(*ancestorDocument->loader())) {
+ errorMessage = "Trying to call an ApplePaySession API from a document with an insecure parent frame.";
+ return false;
+ }
+
+ if (!ancestorDocument->securityOrigin()->isSameSchemeHostPort(&topOrigin)) {
+ errorMessage = "Trying to call an ApplePaySession API from a document with an different security origin than its top-level frame.";
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+RefPtr<ApplePaySession> ApplePaySession::create(Document& document, unsigned version, const Dictionary& dictionary, ExceptionCode& ec)
+{
+ DOMWindow& window = *document.domWindow();
+
+ String errorMessage;
+ if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+ window.printErrorMessage(errorMessage);
+ ec = INVALID_ACCESS_ERR;
+ return nullptr;
+ }
+
+ auto& paymentCoordinator = document.frame()->mainFrame().paymentCoordinator();
+
+ if (!paymentCoordinator.supportsVersion(version)) {
+ ec = INVALID_ACCESS_ERR;
+ return nullptr;
+ }
+
+ auto paymentRequest = createPaymentRequest(window, dictionary);
+ if (!paymentRequest) {
+ ec = TYPE_MISMATCH_ERR;
+ return nullptr;
+ }
+
+ if (!PaymentRequestValidator(window).validate(*paymentRequest)) {
+ ec = INVALID_ACCESS_ERR;
+ return nullptr;
+ }
+
+ return adoptRef(new ApplePaySession(document, WTFMove(*paymentRequest)));
+}
+
+ApplePaySession::ApplePaySession(Document& document, PaymentRequest&& paymentRequest)
+ : ActiveDOMObject(&document)
+ , m_state(State::Idle)
+ , m_merchantValidationState(MerchantValidationState::Idle)
+ , m_paymentRequest(WTFMove(paymentRequest))
+{
+ suspendIfNeeded();
+}
+
+ApplePaySession::~ApplePaySession()
+{
+}
+
+bool ApplePaySession::supportsVersion(ScriptExecutionContext& scriptExecutionContext, unsigned version, ExceptionCode& ec)
+{
+ if (!version) {
+ ec = INVALID_ACCESS_ERR;
+ return false;
+ }
+
+ auto& document = downcast<Document>(scriptExecutionContext);
+ DOMWindow& window = *document.domWindow();
+
+ String errorMessage;
+ if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+ window.printErrorMessage(errorMessage);
+ ec = INVALID_ACCESS_ERR;
+ return false;
+ }
+
+ auto& paymentCoordinator = document.frame()->mainFrame().paymentCoordinator();
+ return paymentCoordinator.supportsVersion(version);
+}
+
+static bool shouldDiscloseApplePayCapability(Document& document)
+{
+ auto* page = document.page();
+ if (!page || page->usesEphemeralSession())
+ return false;
+
+ return document.frame()->settings().applePayCapabilityDisclosureAllowed();
+}
+
+bool ApplePaySession::canMakePayments(ScriptExecutionContext& scriptExecutionContext, ExceptionCode& ec)
+{
+ auto& document = downcast<Document>(scriptExecutionContext);
+ DOMWindow& window = *document.domWindow();
+
+ String errorMessage;
+ if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+ window.printErrorMessage(errorMessage);
+ ec = INVALID_ACCESS_ERR;
+ return false;
+ }
+
+ auto& paymentCoordinator = document.frame()->mainFrame().paymentCoordinator();
+ return paymentCoordinator.canMakePayments();
+}
+
+void ApplePaySession::canMakePaymentsWithActiveCard(ScriptExecutionContext& scriptExecutionContext, const String& merchantIdentifier, DeferredWrapper&& promise, ExceptionCode& ec)
+{
+ auto& document = downcast<Document>(scriptExecutionContext);
+ DOMWindow& window = *document.domWindow();
+
+ String errorMessage;
+ if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+ window.printErrorMessage(errorMessage);
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!shouldDiscloseApplePayCapability(document)) {
+ auto& paymentCoordinator = document.frame()->mainFrame().paymentCoordinator();
+ bool canMakePayments = paymentCoordinator.canMakePayments();
+
+ RunLoop::main().dispatch([promise, canMakePayments]() mutable {
+ promise.resolve(canMakePayments);
+ });
+ return;
+ }
+
+ auto& paymentCoordinator = document.frame()->mainFrame().paymentCoordinator();
+
+ paymentCoordinator.canMakePaymentsWithActiveCard(merchantIdentifier, document.domain(), [promise](bool canMakePayments) mutable {
+ promise.resolve(canMakePayments);
+ });
+}
+
+void ApplePaySession::begin(ExceptionCode& ec)
+{
+ auto& document = *downcast<Document>(scriptExecutionContext());
+ auto& window = *document.domWindow();
+
+ if (!ScriptController::processingUserGesture()) {
+ window.printErrorMessage("Must call ApplePaySession.begin from a user gesture handler.");
+
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!canBegin()) {
+ window.printErrorMessage("Payment session is already active.");
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (paymentCoordinator().hasActiveSession()) {
+ window.printErrorMessage("Page already has an active payment session.");
+
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ paymentCoordinator().beginPaymentSession(*this);
+
+ Vector<URL> linkIconURLs;
+ for (auto& icon : LinkIconCollector { document }.iconsOfTypes({ LinkIconType::TouchIcon, LinkIconType::TouchPrecomposedIcon }))
+ linkIconURLs.append(icon.url);
+
+ m_state = State::Active;
+
+ paymentCoordinator().showPaymentUI(document.url(), linkIconURLs, m_paymentRequest);
+
+ setPendingActivity(this);
+}
+
+void ApplePaySession::abort(ExceptionCode& ec)
+{
+ if (!canAbort()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ m_state = State::Aborted;
+ paymentCoordinator().abortPaymentSession();
+
+ didReachFinalState();
+}
+
+static Optional<PaymentMerchantSession> createMerchantSession(DOMWindow& window, const Dictionary& merchantSessionDictionary)
+{
+ auto merchantIdentifier = merchantSessionDictionary.get<String>("merchantIdentifier");
+ if (!merchantIdentifier) {
+ window.printErrorMessage("Missing merchant identifier.");
+ return Nullopt;
+ }
+
+ auto sessionIdentifier = merchantSessionDictionary.get<String>("merchantSessionIdentifier");
+ if (!sessionIdentifier) {
+ window.printErrorMessage("Missing merchant session identifier.");
+ return Nullopt;
+ }
+
+ auto nonce = merchantSessionDictionary.get<String>("nonce");
+ if (!nonce) {
+ window.printErrorMessage("Missing nonce.");
+ return Nullopt;
+ }
+
+ auto domainName = merchantSessionDictionary.get<String>("domainName");
+ if (!domainName) {
+ window.printErrorMessage("Missing domain name.");
+ return Nullopt;
+ }
+
+ auto epochTimestamp = merchantSessionDictionary.get<uint64_t>("epochTimestamp");
+ if (!epochTimestamp) {
+ window.printErrorMessage("Missing epoch time stamp.");
+ return Nullopt;
+ }
+
+ auto signature = merchantSessionDictionary.get<String>("signature");
+ if (!signature) {
+ window.printErrorMessage("Missing signature.");
+ return Nullopt;
+ }
+
+ return PaymentMerchantSession { *merchantIdentifier, *sessionIdentifier, *nonce, *domainName, *epochTimestamp, *signature };
+}
+
+void ApplePaySession::completeMerchantValidation(const Dictionary& merchantSessionDictionary, ExceptionCode& ec)
+{
+ if (!canCompleteMerchantValidation()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto& document = *downcast<Document>(scriptExecutionContext());
+ auto& window = *document.domWindow();
+
+ auto merchantSession = createMerchantSession(window, merchantSessionDictionary);
+ if (!merchantSession) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ m_merchantValidationState = MerchantValidationState::ValidationComplete;
+ paymentCoordinator().completeMerchantValidation(*merchantSession);
+}
+
+
+static Optional<PaymentAuthorizationStatus> toPaymentAuthorizationStatus(unsigned short status)
+{
+ switch (status) {
+ case ApplePaySession::STATUS_SUCCESS:
+ return PaymentAuthorizationStatus::Success;
+
+ case ApplePaySession::STATUS_FAILURE:
+ return PaymentAuthorizationStatus::Failure;
+
+ case ApplePaySession::STATUS_INVALID_BILLING_POSTAL_ADDRESS:
+ return PaymentAuthorizationStatus::InvalidBillingPostalAddress;
+
+ case ApplePaySession::STATUS_INVALID_SHIPPING_POSTAL_ADDRESS:
+ return PaymentAuthorizationStatus::InvalidShippingPostalAddress;
+
+ case ApplePaySession::STATUS_INVALID_SHIPPING_CONTACT:
+ return PaymentAuthorizationStatus::InvalidShippingContact;
+
+ case ApplePaySession::STATUS_PIN_REQUIRED:
+ return PaymentAuthorizationStatus::PINRequired;
+
+ case ApplePaySession::STATUS_PIN_INCORRECT:
+ return PaymentAuthorizationStatus::PINIncorrect;
+
+ case ApplePaySession::STATUS_PIN_LOCKOUT:
+ return PaymentAuthorizationStatus::PINLockout;
+
+ default:
+ return Nullopt;
+ }
+}
+
+void ApplePaySession::completeShippingMethodSelection(unsigned short status, const Dictionary& newTotalDictionary, const ArrayValue& newLineItemsArray, ExceptionCode& ec)
+{
+ if (!canCompleteShippingMethodSelection()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto authorizationStatus = toPaymentAuthorizationStatus(status);
+ if (!authorizationStatus) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto& window = *downcast<Document>(scriptExecutionContext())->domWindow();
+ auto newTotal = createLineItem(window, newTotalDictionary);
+ if (!newTotal) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!PaymentRequestValidator(window).validateTotal(*newTotal)) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto newLineItems = createLineItems(window, newLineItemsArray);
+ if (!newLineItems) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ m_state = State::Active;
+ PaymentRequest::TotalAndLineItems totalAndLineItems;
+ totalAndLineItems.total = *newTotal;
+ totalAndLineItems.lineItems = *newLineItems;
+ paymentCoordinator().completeShippingMethodSelection(*authorizationStatus, totalAndLineItems);
+}
+
+void ApplePaySession::completeShippingContactSelection(unsigned short status, const ArrayValue& newShippingMethodsArray, const Dictionary& newTotalDictionary, const ArrayValue& newLineItemsArray, ExceptionCode& ec)
+{
+ if (!canCompleteShippingContactSelection()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto authorizationStatus = toPaymentAuthorizationStatus(status);
+ if (!authorizationStatus) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto& window = *downcast<Document>(scriptExecutionContext())->domWindow();
+
+ auto newShippingMethods = createShippingMethods(window, newShippingMethodsArray);
+ if (!newShippingMethods) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto newTotal = createLineItem(window, newTotalDictionary);
+ if (!newTotal) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!PaymentRequestValidator(window).validateTotal(*newTotal)) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto newLineItems = createLineItems(window, newLineItemsArray);
+ if (!newLineItems) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ m_state = State::Active;
+ PaymentRequest::TotalAndLineItems totalAndLineItems;
+ totalAndLineItems.total = *newTotal;
+ totalAndLineItems.lineItems = *newLineItems;
+ paymentCoordinator().completeShippingContactSelection(*authorizationStatus, *newShippingMethods, totalAndLineItems);
+}
+
+void ApplePaySession::completePaymentMethodSelection(const Dictionary& newTotalDictionary, const ArrayValue& newLineItemsArray, ExceptionCode& ec)
+{
+ if (!canCompletePaymentMethodSelection()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto& window = *downcast<Document>(scriptExecutionContext())->domWindow();
+ auto newTotal = createLineItem(window, newTotalDictionary);
+ if (!newTotal) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ if (!PaymentRequestValidator(window).validateTotal(*newTotal)) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto newLineItems = createLineItems(window, newLineItemsArray);
+ if (!newLineItems) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ m_state = State::Active;
+ PaymentRequest::TotalAndLineItems totalAndLineItems;
+ totalAndLineItems.total = *newTotal;
+ totalAndLineItems.lineItems = *newLineItems;
+ paymentCoordinator().completePaymentMethodSelection(totalAndLineItems);
+}
+
+void ApplePaySession::completePayment(unsigned short status, ExceptionCode& ec)
+{
+ if (!canCompletePayment()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ auto authorizationStatus = toPaymentAuthorizationStatus(status);
+ if (!authorizationStatus) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ paymentCoordinator().completePaymentSession(*authorizationStatus);
+ m_state = State::Completed;
+ unsetPendingActivity(this);
+}
+
+void ApplePaySession::validateMerchant(const URL& validationURL)
+{
+ if (m_state == State::Aborted) {
+ // ApplePaySession::abort has been called.
+ return;
+ }
+
+ ASSERT(m_merchantValidationState == MerchantValidationState::Idle);
+ ASSERT(m_state == State::Active);
+
+ if (validationURL.isNull()) {
+ // Something went wrong when getting the validation URL.
+ // FIXME: Maybe we should send an error event here instead?
+ return;
+ }
+
+ m_merchantValidationState = MerchantValidationState::ValidatingMerchant;
+
+ RefPtr<ApplePayValidateMerchantEvent> event = ApplePayValidateMerchantEvent::create(eventNames().validatemerchantEvent, validationURL);
+ dispatchEvent(*event);
+}
+
+void ApplePaySession::didAuthorizePayment(const Payment& payment)
+{
+ ASSERT(m_state == State::Active);
+
+ m_state = State::Authorized;
+
+ RefPtr<ApplePayPaymentAuthorizedEvent> event = ApplePayPaymentAuthorizedEvent::create(eventNames().paymentauthorizedEvent, payment);
+ dispatchEvent(*event);
+}
+
+void ApplePaySession::didSelectShippingMethod(const PaymentRequest::ShippingMethod& shippingMethod)
+{
+ ASSERT(m_state == State::Active);
+
+ if (!hasEventListeners(eventNames().shippingmethodselectedEvent)) {
+ paymentCoordinator().completeShippingMethodSelection(PaymentAuthorizationStatus::Success, { });
+ return;
+ }
+
+ m_state = State::ShippingMethodSelected;
+ RefPtr<ApplePayShippingMethodSelectedEvent> event = ApplePayShippingMethodSelectedEvent::create(eventNames().shippingmethodselectedEvent, shippingMethod);
+ dispatchEvent(*event);
+}
+
+void ApplePaySession::didSelectShippingContact(const PaymentContact& shippingContact)
+{
+ ASSERT(m_state == State::Active);
+
+ if (!hasEventListeners(eventNames().shippingcontactselectedEvent)) {
+ paymentCoordinator().completeShippingContactSelection(PaymentAuthorizationStatus::Success, { }, { });
+ return;
+ }
+
+ m_state = State::ShippingContactSelected;
+ RefPtr<ApplePayShippingContactSelectedEvent> event = ApplePayShippingContactSelectedEvent::create(eventNames().shippingcontactselectedEvent, shippingContact);
+ dispatchEvent(*event);
+}
+
+void ApplePaySession::didSelectPaymentMethod(const PaymentMethod& paymentMethod)
+{
+ ASSERT(m_state == State::Active);
+
+ if (!hasEventListeners(eventNames().paymentmethodselectedEvent)) {
+ paymentCoordinator().completePaymentMethodSelection({ });
+ return;
+ }
+
+ m_state = State::PaymentMethodSelected;
+ RefPtr<ApplePayPaymentMethodSelectedEvent> event = ApplePayPaymentMethodSelectedEvent::create(eventNames().paymentmethodselectedEvent, paymentMethod);
+ dispatchEvent(*event);
+}
+
+void ApplePaySession::didCancelPayment()
+{
+ ASSERT(canCancel());
+
+ m_state = State::Canceled;
+
+ RefPtr<Event> event = Event::create(eventNames().cancelEvent, false, false);
+ dispatchEvent(*event);
+
+ didReachFinalState();
+}
+
+const char* ApplePaySession::activeDOMObjectName() const
+{
+ return "ApplePaySession";
+}
+
+bool ApplePaySession::canSuspendForDocumentSuspension() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Completed:
+ case State::Canceled:
+ return true;
+
+ case State::Active:
+ case State::Authorized:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ case State::PaymentMethodSelected:
+ return false;
+ }
+}
+
+void ApplePaySession::stop()
+{
+ if (!canAbort())
+ return;
+
+ m_state = State::Aborted;
+ paymentCoordinator().abortPaymentSession();
+
+ didReachFinalState();
+}
+
+PaymentCoordinator& ApplePaySession::paymentCoordinator() const
+{
+ return downcast<Document>(scriptExecutionContext())->frame()->mainFrame().paymentCoordinator();
+}
+
+bool ApplePaySession::canBegin() const
+{
+ switch (m_state) {
+ case State::Idle:
+ return true;
+
+ case State::Active:
+ case State::Aborted:
+ case State::Authorized:
+ case State::Completed:
+ case State::Canceled:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ case State::PaymentMethodSelected:
+ return false;
+ }
+}
+
+bool ApplePaySession::canAbort() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Completed:
+ case State::Canceled:
+ return false;
+
+ case State::Active:
+ case State::Authorized:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ case State::PaymentMethodSelected:
+ return true;
+ }
+}
+
+bool ApplePaySession::canCancel() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Completed:
+ case State::Canceled:
+ return false;
+
+ case State::Active:
+ case State::Authorized:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ case State::PaymentMethodSelected:
+ return true;
+ }
+}
+
+bool ApplePaySession::canCompleteMerchantValidation() const
+{
+ if (m_state != State::Active)
+ return false;
+
+ if (m_merchantValidationState != MerchantValidationState::ValidatingMerchant)
+ return false;
+
+ return true;
+}
+
+bool ApplePaySession::canCompleteShippingMethodSelection() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Active:
+ case State::Completed:
+ case State::Canceled:
+ case State::Authorized:
+ case State::PaymentMethodSelected:
+ case State::ShippingContactSelected:
+ return false;
+
+ case State::ShippingMethodSelected:
+ return true;
+ }
+}
+
+bool ApplePaySession::canCompleteShippingContactSelection() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Active:
+ case State::Completed:
+ case State::Canceled:
+ case State::Authorized:
+ case State::PaymentMethodSelected:
+ case State::ShippingMethodSelected:
+ return false;
+
+ case State::ShippingContactSelected:
+ return true;
+ }
+}
+
+bool ApplePaySession::canCompletePaymentMethodSelection() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Active:
+ case State::Completed:
+ case State::Canceled:
+ case State::Authorized:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ return false;
+
+ case State::PaymentMethodSelected:
+ return true;
+ }
+}
+
+bool ApplePaySession::canCompletePayment() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Aborted:
+ case State::Active:
+ case State::Completed:
+ case State::Canceled:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ case State::PaymentMethodSelected:
+ return false;
+
+ case State::Authorized:
+ return true;
+ }
+}
+
+bool ApplePaySession::isFinalState() const
+{
+ switch (m_state) {
+ case State::Idle:
+ case State::Active:
+ case State::ShippingMethodSelected:
+ case State::ShippingContactSelected:
+ case State::PaymentMethodSelected:
+ case State::Authorized:
+ return false;
+
+ case State::Completed:
+ case State::Aborted:
+ case State::Canceled:
+ return true;
+ }
+}
+
+void ApplePaySession::didReachFinalState()
+{
+ ASSERT(isFinalState());
+ unsetPendingActivity(this);
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePaySessionh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePaySession.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,141 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "ActiveDOMObject.h"
+#include "EventTarget.h"
+#include "ExceptionCode.h"
+#include "PaymentRequest.h"
+#include <wtf/Ref.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+class ArrayValue;
+class DeferredWrapper;
+class Dictionary;
+class Document;
+class Payment;
+class PaymentContact;
+class PaymentCoordinator;
+class PaymentMethod;
+class URL;
+
+class ApplePaySession final : public RefCounted<ApplePaySession>, public ActiveDOMObject, public EventTargetWithInlineData {
+public:
+ static RefPtr<ApplePaySession> create(Document&, unsigned version, const Dictionary&, ExceptionCode&);
+ virtual ~ApplePaySession();
+
+ // DOM API.
+ static const unsigned short STATUS_SUCCESS = 0;
+ static const unsigned short STATUS_FAILURE = 1;
+ static const unsigned short STATUS_INVALID_BILLING_POSTAL_ADDRESS = 2;
+ static const unsigned short STATUS_INVALID_SHIPPING_POSTAL_ADDRESS = 3;
+ static const unsigned short STATUS_INVALID_SHIPPING_CONTACT = 4;
+ static const unsigned short STATUS_PIN_REQUIRED = 5;
+ static const unsigned short STATUS_PIN_INCORRECT = 6;
+ static const unsigned short STATUS_PIN_LOCKOUT = 7;
+
+ static bool supportsVersion(ScriptExecutionContext&, unsigned version, ExceptionCode&);
+ static bool canMakePayments(ScriptExecutionContext&, ExceptionCode&);
+ static void canMakePaymentsWithActiveCard(ScriptExecutionContext&, const String& merchantIdentifier, DeferredWrapper&&, ExceptionCode&);
+
+ void begin(ExceptionCode&);
+ void abort(ExceptionCode&);
+ void completeMerchantValidation(const Dictionary& merchantSessionDictionary, ExceptionCode&);
+ void completeShippingMethodSelection(unsigned short status, const Dictionary& newTotal, const ArrayValue& newLineItems, ExceptionCode&);
+ void completeShippingContactSelection(unsigned short status, const ArrayValue& newShippingMethods, const Dictionary& newTotal, const ArrayValue& newLineItems, ExceptionCode&);
+ void completePaymentMethodSelection(const Dictionary& newTotal, const ArrayValue& newLineItems, ExceptionCode&);
+ void completePayment(unsigned short status, ExceptionCode&);
+
+ const PaymentRequest& paymentRequest() const { return m_paymentRequest; }
+
+ void validateMerchant(const URL&);
+ void didAuthorizePayment(const Payment&);
+ void didSelectShippingMethod(const PaymentRequest::ShippingMethod&);
+ void didSelectShippingContact(const PaymentContact&);
+ void didSelectPaymentMethod(const PaymentMethod&);
+ void didCancelPayment();
+
+ using RefCounted<ApplePaySession>::ref;
+ using RefCounted<ApplePaySession>::deref;
+
+private:
+ ApplePaySession(Document&, PaymentRequest&&);
+
+ // ActiveDOMObject.
+ const char* activeDOMObjectName() const override;
+ bool canSuspendForDocumentSuspension() const override;
+ void stop() override;
+
+ // EventTargetWithInlineData.
+ EventTargetInterface eventTargetInterface() const override { return ApplePaySessionEventTargetInterfaceType; }
+ ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
+ void refEventTarget() override { ref(); }
+ void derefEventTarget() override { deref(); }
+
+ PaymentCoordinator& paymentCoordinator() const;
+
+ bool canBegin() const;
+ bool canAbort() const;
+ bool canCancel() const;
+ bool canCompleteMerchantValidation() const;
+ bool canCompleteShippingMethodSelection() const;
+ bool canCompleteShippingContactSelection() const;
+ bool canCompletePaymentMethodSelection() const;
+ bool canCompletePayment() const;
+
+ bool isFinalState() const;
+ void didReachFinalState();
+
+ enum class State {
+ Idle,
+
+ Active,
+ ShippingMethodSelected,
+ ShippingContactSelected,
+ PaymentMethodSelected,
+ Authorized,
+ Completed,
+
+ Aborted,
+ Canceled,
+ } m_state;
+
+ enum class MerchantValidationState {
+ Idle,
+ ValidatingMerchant,
+ ValidationComplete,
+ } m_merchantValidationState;
+
+ const PaymentRequest m_paymentRequest;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePaySessionidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePaySession.idl (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePaySession.idl         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePaySession.idl        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ ActiveDOMObject,
+ Conditional=APPLE_PAY,
+ Constructor(unsigned long version, Dictionary paymentRequest),
+ ConstructorCallWith=Document,
+ ConstructorRaisesException,
+ EnabledBySetting=ApplePay,
+] interface ApplePaySession : EventTarget {
+ const unsigned short STATUS_SUCCESS = 0;
+ const unsigned short STATUS_FAILURE = 1;
+ const unsigned short STATUS_INVALID_BILLING_POSTAL_ADDRESS = 2;
+ const unsigned short STATUS_INVALID_SHIPPING_POSTAL_ADDRESS = 3;
+ const unsigned short STATUS_INVALID_SHIPPING_CONTACT = 4;
+ const unsigned short STATUS_PIN_REQUIRED = 5;
+ const unsigned short STATUS_PIN_INCORRECT = 6;
+ const unsigned short STATUS_PIN_LOCKOUT = 7;
+
+ [CallWith=ScriptExecutionContext, RaisesException] static boolean supportsVersion(unsigned long version);
+ [CallWith=ScriptExecutionContext, RaisesException] static boolean canMakePayments();
+ [CallWith=ScriptExecutionContext, RaisesException] static Promise canMakePaymentsWithActiveCard(DOMString merchantIdentifier);
+
+ [RaisesException] void begin();
+ [RaisesException] void abort();
+ [RaisesException] void completeMerchantValidation(Dictionary merchantSession);
+ [Custom, RaisesException] void completeShippingMethodSelection(unsigned short status, Dictionary newTotal, sequence<Dictionary> newLineItems);
+ [Custom, RaisesException] void completeShippingContactSelection(unsigned short status, sequence<Dictionary> newShippingMethods, Dictionary newTotal, sequence<Dictionary> newLineItems);
+ [Custom, RaisesException] void completePaymentMethodSelection(Dictionary newTotal, sequence<Dictionary> newLineItems);
+ [RaisesException] void completePayment(unsigned short status);
+
+ attribute EventHandler onvalidatemerchant;
+ attribute EventHandler onpaymentmethodselected;
+ attribute EventHandler onpaymentauthorized;
+ attribute EventHandler onshippingmethodselected;
+ attribute EventHandler onshippingcontactselected;
+ attribute EventHandler oncancel;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayShippingContactSelectedEventcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ApplePayShippingContactSelectedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayShippingContactSelectedEvent::ApplePayShippingContactSelectedEvent(const AtomicString& type, const PaymentContact& shippingContact)
+ : Event(type, false, false)
+ , m_shippingContact(shippingContact)
+{
+}
+
+ApplePayShippingContactSelectedEvent::~ApplePayShippingContactSelectedEvent()
+{
+}
+
+EventInterface ApplePayShippingContactSelectedEvent::eventInterface() const
+{
+ return ApplePayShippingContactSelectedEventInterfaceType;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayShippingContactSelectedEventh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "Event.h"
+#include "PaymentContact.h"
+
+namespace WebCore {
+
+class ApplePayShippingContactSelectedEvent final : public Event {
+public:
+ static Ref<ApplePayShippingContactSelectedEvent> create(const AtomicString& type, const PaymentContact& shippingContact)
+ {
+ return adoptRef(*new ApplePayShippingContactSelectedEvent(type, shippingContact));
+ }
+
+ virtual ~ApplePayShippingContactSelectedEvent();
+
+ const PaymentContact& shippingContact() const { return m_shippingContact; }
+
+private:
+ ApplePayShippingContactSelectedEvent(const AtomicString& type, const PaymentContact&);
+
+ // Event.
+ EventInterface eventInterface() const override;
+
+ const PaymentContact m_shippingContact;
+};
+
+}
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayShippingContactSelectedEventidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.idl (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.idl         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayShippingContactSelectedEvent.idl        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=APPLE_PAY,
+ NoInterfaceObject,
+] interface ApplePayShippingContactSelectedEvent : Event {
+ [CachedAttribute, CustomGetter] readonly attribute Object shippingContact;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayShippingMethodSelectedEventcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ApplePayShippingMethodSelectedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayShippingMethodSelectedEvent::ApplePayShippingMethodSelectedEvent(const AtomicString& type, const PaymentRequest::ShippingMethod& shippingMethod)
+ : Event(type, false, false)
+ , m_shippingMethod(shippingMethod)
+{
+}
+
+ApplePayShippingMethodSelectedEvent::~ApplePayShippingMethodSelectedEvent()
+{
+}
+
+EventInterface ApplePayShippingMethodSelectedEvent::eventInterface() const
+{
+ return ApplePayShippingMethodSelectedEventInterfaceType;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayShippingMethodSelectedEventh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "Event.h"
+#include "PaymentRequest.h"
+
+namespace WebCore {
+
+class ApplePayShippingMethodSelectedEvent final : public Event {
+public:
+ static Ref<ApplePayShippingMethodSelectedEvent> create(const AtomicString& type, const PaymentRequest::ShippingMethod& shippingMethod)
+ {
+ return adoptRef(*new ApplePayShippingMethodSelectedEvent(type, shippingMethod));
+ }
+
+ virtual ~ApplePayShippingMethodSelectedEvent();
+
+ const PaymentRequest::ShippingMethod& shippingMethod() const { return m_shippingMethod; }
+
+private:
+ ApplePayShippingMethodSelectedEvent(const AtomicString& type, const PaymentRequest::ShippingMethod&);
+
+ // Event.
+ EventInterface eventInterface() const override;
+
+ const PaymentRequest::ShippingMethod m_shippingMethod;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayShippingMethodSelectedEventidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayShippingMethodSelectedEvent.idl        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=APPLE_PAY,
+ NoInterfaceObject,
+] interface ApplePayShippingMethodSelectedEvent : Event {
+ [CachedAttribute, CustomGetter] readonly attribute Object shippingMethod;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ApplePayValidateMerchantEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayValidateMerchantEvent::ApplePayValidateMerchantEvent(const AtomicString& type, const URL& validationURL)
+ : Event(type, false, false)
+ , m_validationURL(validationURL)
+{
+}
+
+ApplePayValidateMerchantEvent::~ApplePayValidateMerchantEvent()
+{
+}
+
+EventInterface ApplePayValidateMerchantEvent::eventInterface() const
+{
+ return ApplePayValidateMerchantEventInterfaceType;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "Event.h"
+#include "URL.h"
+
+namespace WebCore {
+
+class ApplePayValidateMerchantEvent final : public Event {
+public:
+ static Ref<ApplePayValidateMerchantEvent> create(const AtomicString& type, const URL& validationURL)
+ {
+ return adoptRef(*new ApplePayValidateMerchantEvent(type, validationURL));
+ }
+
+ virtual ~ApplePayValidateMerchantEvent();
+
+ const String& validationURL() const { return m_validationURL.string(); }
+
+private:
+ ApplePayValidateMerchantEvent(const AtomicString& type, const URL& validationURL);
+
+ // Event.
+ EventInterface eventInterface() const override;
+
+ const URL m_validationURL;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayApplePayValidateMerchantEventidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.idl (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.idl         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/ApplePayValidateMerchantEvent.idl        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=APPLE_PAY,
+ NoInterfaceObject,
+] interface ApplePayValidateMerchantEvent : Event {
+ [InitializedByEventConstructor] readonly attribute DOMString validationURL;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymenth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/Payment.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/Payment.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/Payment.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include <wtf/RetainPtr.h>
+
+namespace JSC {
+class ExecState;
+class JSValue;
+}
+
+OBJC_CLASS PKPayment;
+
+namespace WebCore {
+
+class Payment {
+public:
+ Payment()
+ {
+ }
+
+ explicit Payment(PKPayment *pkPayment)
+ : m_pkPayment(pkPayment)
+ {
+ }
+
+ ~Payment()
+ {
+ }
+
+ JSC::JSValue toJS(JSC::ExecState&) const;
+
+ PKPayment *pkPayment() const { return m_pkPayment.get(); }
+
+private:
+ RetainPtr<PKPayment> m_pkPayment;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentAuthorizationStatush"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/PaymentAuthorizationStatus.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentAuthorizationStatus.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/PaymentAuthorizationStatus.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+enum class PaymentAuthorizationStatus {
+ Success,
+ Failure,
+ InvalidBillingPostalAddress,
+ InvalidShippingPostalAddress,
+ InvalidShippingContact,
+ PINRequired,
+ PINIncorrect,
+ PINLockout,
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentContacth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/PaymentContact.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentContact.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/PaymentContact.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include <WebCore/ExceptionCode.h>
+#include <wtf/Forward.h>
+#include <wtf/RetainPtr.h>
+
+namespace JSC {
+class ExecState;
+class JSValue;
+}
+
+OBJC_CLASS NSDictionary;
+OBJC_CLASS PKContact;
+
+namespace WebCore {
+
+class PaymentContact {
+public:
+ PaymentContact()
+ {
+ }
+
+ explicit PaymentContact(PKContact *pkContact)
+ : m_pkContact(pkContact)
+ {
+ }
+
+ ~PaymentContact()
+ {
+ }
+
+ static Optional<PaymentContact> fromJS(JSC::ExecState&, JSC::JSValue, String& errorMessage);
+ JSC::JSValue toJS(JSC::ExecState&) const;
+
+ PKContact *pkContact() const { return m_pkContact.get(); }
+
+private:
+ RetainPtr<PKContact> m_pkContact;
+};
+
+RetainPtr<NSDictionary> toDictionary(PKContact *);
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentMerchantSessionh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/PaymentMerchantSession.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentMerchantSession.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/PaymentMerchantSession.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+// FIXME: This should be a wrapper class around a PKPaymentMerchantSession.
+struct PaymentMerchantSession {
+ String merchantIdentifier;
+ String sessionIdentifier;
+ String nonce;
+ String domainName;
+ uint64_t epochTimestamp;
+ String signature;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentMethodh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/PaymentMethod.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentMethod.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/PaymentMethod.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include <wtf/RetainPtr.h>
+
+namespace JSC {
+class ExecState;
+class JSValue;
+}
+
+OBJC_CLASS NSDictionary;
+OBJC_CLASS PKPaymentMethod;
+
+namespace WebCore {
+
+class PaymentMethod {
+public:
+ PaymentMethod()
+ {
+ }
+
+ explicit PaymentMethod(PKPaymentMethod *pkPaymentMethod)
+ : m_pkPaymentMethod(pkPaymentMethod)
+ {
+ }
+
+ JSC::JSValue toJS(JSC::ExecState&) const;
+
+ PKPaymentMethod *pkPaymentMethod() const { return m_pkPaymentMethod.get(); }
+
+private:
+ RetainPtr<PKPaymentMethod> m_pkPaymentMethod;
+};
+
+RetainPtr<NSDictionary> toDictionary(PKPaymentMethod *);
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentRequestValidatorcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.cpp         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,151 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "PaymentRequestValidator.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include "DOMWindow.h"
+#include "PageConsoleClient.h"
+#include "PaymentRequest.h"
+#include <unicode/ucurr.h>
+#include <unicode/uloc.h>
+
+namespace WebCore {
+
+PaymentRequestValidator::PaymentRequestValidator(DOMWindow& window)
+ : m_window(window)
+{
+}
+
+PaymentRequestValidator::~PaymentRequestValidator()
+{
+}
+
+bool PaymentRequestValidator::validate(const PaymentRequest& paymentRequest) const
+{
+ if (!validateCountryCode(paymentRequest.countryCode()))
+ return false;
+ if (!validateCurrencyCode(paymentRequest.currencyCode()))
+ return false;
+ if (!validateSupportedNetworks(paymentRequest.supportedNetworks()))
+ return false;
+ if (!validateMerchantCapabilities(paymentRequest.merchantCapabilities()))
+ return false;
+ if (!validateTotal(paymentRequest.total()))
+ return false;
+
+ return true;
+}
+
+bool PaymentRequestValidator::validateTotal(const PaymentRequest::LineItem& total) const
+{
+ if (!total.label) {
+ m_window.printErrorMessage("Missing total label.");
+ return false;
+ }
+
+ if (!total.amount) {
+ m_window.printErrorMessage("Missing total amount.");
+ return false;
+ }
+
+ if (*total.amount <= 0) {
+ m_window.printErrorMessage("Total amount must be greater than zero.");
+ return false;
+ }
+
+ if (*total.amount > 1000000) {
+ m_window.printErrorMessage("Total amount is too big.");
+ return false;
+ }
+
+ return true;
+}
+
+bool PaymentRequestValidator::validateCountryCode(const String& countryCode) const
+{
+ if (!countryCode) {
+ m_window.printErrorMessage("Missing country code.");
+ return false;
+ }
+
+ for (auto *countryCodePtr = uloc_getISOCountries(); *countryCodePtr; ++countryCodePtr) {
+ if (countryCode == *countryCodePtr)
+ return true;
+ }
+
+ auto message = makeString("\"" + countryCode, "\" is not a valid country code.");
+ m_window.printErrorMessage(message);
+
+ return false;
+}
+
+bool PaymentRequestValidator::validateCurrencyCode(const String& currencyCode) const
+{
+ if (!currencyCode) {
+ m_window.printErrorMessage("Missing currency code.");
+ return false;
+ }
+
+ UErrorCode errorCode = U_ZERO_ERROR;
+ auto currencyCodes = std::unique_ptr<UEnumeration, void (*)(UEnumeration*)>(ucurr_openISOCurrencies(UCURR_ALL, &errorCode), uenum_close);
+
+ int32_t length;
+ while (auto *currencyCodePtr = uenum_next(currencyCodes.get(), &length, &errorCode)) {
+ if (currencyCodePtr == currencyCode)
+ return true;
+ }
+
+ auto message = makeString("\"" + currencyCode, "\" is not a valid currency code.");
+ m_window.printErrorMessage(message);
+
+ return false;
+}
+
+bool PaymentRequestValidator::validateMerchantCapabilities(const PaymentRequest::MerchantCapabilities& merchantCapabilities) const
+{
+ if (!merchantCapabilities.supports3DS && !merchantCapabilities.supportsEMV && !merchantCapabilities.supportsCredit && !merchantCapabilities.supportsDebit) {
+ m_window.printErrorMessage("Missing merchant capabilities");
+ return false;
+ }
+
+ return true;
+}
+
+bool PaymentRequestValidator::validateSupportedNetworks(const PaymentRequest::SupportedNetworks& supportedNetworks) const
+{
+ if (!supportedNetworks.amex && !supportedNetworks.chinaUnionPay && !supportedNetworks.discover && !supportedNetworks.interac && !supportedNetworks.masterCard && !supportedNetworks.privateLabel &&!supportedNetworks.visa) {
+ m_window.printErrorMessage("Missing supported networks");
+ return false;
+ }
+
+ return true;
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepayPaymentRequestValidatorh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.h (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.h         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/PaymentRequestValidator.h        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(APPLE_PAY)
+
+#include "PaymentRequest.h"
+
+namespace WebCore {
+
+class DOMWindow;
+
+class PaymentRequestValidator {
+public:
+ explicit PaymentRequestValidator(DOMWindow&);
+ ~PaymentRequestValidator();
+
+ bool validate(const PaymentRequest&) const;
+ bool validateTotal(const PaymentRequest::LineItem&) const;
+
+private:
+ bool validateCountryCode(const String&) const;
+ bool validateCurrencyCode(const String&) const;
+ bool validateMerchantCapabilities(const PaymentRequest::MerchantCapabilities&) const;
+ bool validateSupportedNetworks(const PaymentRequest::SupportedNetworks&) const;
+
+ DOMWindow& m_window;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepaycocoaPaymentCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm (202308 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm        2016-06-22 00:08:10 UTC (rev 202308)
+++ trunk/Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -24,11 +24,10 @@
</span><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #import "config.h"
</span><ins>+#import "Payment.h"
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(APPLE_PAY)
</span><span class="cx">
</span><del>-#import "Payment.h"
-
</del><span class="cx"> #import "PaymentContact.h"
</span><span class="cx"> #import "PaymentMethod.h"
</span><span class="cx"> #import <PassKit/PassKit.h>
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepaycocoaPaymentContactCocoamm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/cocoa/PaymentContactCocoa.mm        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,169 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "PaymentContact.h"
+
+#if ENABLE(APPLE_PAY)
+
+#import "JSMainThreadExecState.h"
+#import "SoftLinking.h"
+#import <Contacts/Contacts.h>
+#import <PassKit/PassKit.h>
+#import <runtime/JSONObject.h>
+
+SOFT_LINK_FRAMEWORK(Contacts)
+SOFT_LINK_CLASS(Contacts, CNMutablePostalAddress)
+SOFT_LINK_CLASS(Contacts, CNPhoneNumber)
+
+#if PLATFORM(MAC)
+SOFT_LINK_PRIVATE_FRAMEWORK(PassKit)
+#else
+SOFT_LINK_FRAMEWORK(PassKit)
+#endif
+
+SOFT_LINK_CLASS(PassKit, PKContact)
+
+namespace WebCore {
+
+static bool isValidPaymentContactPropertyName(NSString* propertyName)
+{
+ static NSSet *validPropertyNames = [[NSSet alloc] initWithObjects:@"familyName", @"givenName", @"emailAddress", @"phoneNumber", @"addressLines", @"locality", @"postalCode", @"administrativeArea", @"country", @"countryCode", nil ];
+
+ return [validPropertyNames containsObject:propertyName];
+}
+
+static RetainPtr<PKContact> fromDictionary(NSDictionary *dictionary, String& errorMessage)
+{
+ for (NSString *propertyName in dictionary) {
+ if (!isValidPaymentContactPropertyName(propertyName)) {
+ errorMessage = makeString("\"" + String(propertyName), "\" is not a valid payment contact property name.");
+ return nullptr;
+ }
+ }
+
+ auto result = adoptNS([allocPKContactInstance() init]);
+
+ NSString *familyName = dynamic_objc_cast<NSString>(dictionary[@"familyName"]);
+ NSString *givenName = dynamic_objc_cast<NSString>(dictionary[@"givenName"]);
+
+ if (familyName || givenName) {
+ auto name = adoptNS([[NSPersonNameComponents alloc] init]);
+ [name setFamilyName:familyName];
+ [name setGivenName:givenName];
+ [result setName:name.get()];
+ }
+
+ [result setEmailAddress:dynamic_objc_cast<NSString>(dictionary[@"emailAddress"])];
+
+ if (NSString *phoneNumber = dynamic_objc_cast<NSString>(dictionary[@"phoneNumber"]))
+ [result setPhoneNumber:adoptNS([allocCNPhoneNumberInstance() initWithStringValue:phoneNumber]).get()];
+
+ NSArray *addressLines = dynamic_objc_cast<NSArray>(dictionary[@"addressLines"]);
+ if (addressLines.count) {
+ auto address = adoptNS([allocCNMutablePostalAddressInstance() init]);
+
+ [address setStreet:[addressLines componentsJoinedByString:@"\n"]];
+
+ if (NSString *locality = dynamic_objc_cast<NSString>(dictionary[@"locality"]))
+ [address setCity:locality];
+ if (NSString *postalCode = dynamic_objc_cast<NSString>(dictionary[@"postalCode"]))
+ [address setPostalCode:postalCode];
+ if (NSString *administrativeArea = dynamic_objc_cast<NSString>(dictionary[@"administrativeArea"]))
+ [address setState:administrativeArea];
+ if (NSString *country = dynamic_objc_cast<NSString>(dictionary[@"country"]))
+ [address setCountry:country];
+ if (NSString *countryCode = dynamic_objc_cast<NSString>(dictionary[@"countryCode"]))
+ [address setISOCountryCode:countryCode];
+
+ [result setPostalAddress:address.get()];
+ }
+
+ return result;
+}
+
+Optional<PaymentContact> PaymentContact::fromJS(JSC::ExecState& state, JSC::JSValue value, String& errorMessage)
+{
+ // FIXME: Don't round-trip using NSString.
+ auto jsonString = JSONStringify(&state, value, 0);
+ if (!jsonString)
+ return Nullopt;
+
+ auto dictionary = dynamic_objc_cast<NSDictionary>([NSJSONSerialization JSONObjectWithData:[(NSString *)jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]);
+ if (!dictionary || ![dictionary isKindOfClass:[NSDictionary class]])
+ return Nullopt;
+
+ auto pkContact = fromDictionary(dictionary, errorMessage);
+ if (!pkContact)
+ return Nullopt;
+
+ return PaymentContact(pkContact.get());
+}
+
+// FIXME: This should use the PassKit SPI.
+RetainPtr<NSDictionary> toDictionary(PKContact *contact)
+{
+ ASSERT(contact);
+ (void)contact;
+
+ auto result = adoptNS([[NSMutableDictionary alloc] init]);
+
+ if (contact.phoneNumber)
+ [result setObject:contact.phoneNumber.stringValue forKey:@"phoneNumber"];
+ if (contact.emailAddress)
+ [result setObject:contact.emailAddress forKey:@"emailAddress"];
+ if (contact.name.givenName)
+ [result setObject:contact.name.givenName forKey:@"givenName"];
+ if (contact.name.familyName)
+ [result setObject:contact.name.familyName forKey:@"familyName"];
+ if (contact.postalAddress.street.length)
+ [result setObject:[contact.postalAddress.street componentsSeparatedByString:@"\n"] forKey:@"addressLines"];
+ if (contact.postalAddress.city)
+ [result setObject:contact.postalAddress.city forKey:@"locality"];
+ if (contact.postalAddress.city)
+ [result setObject:contact.postalAddress.postalCode forKey:@"postalCode"];
+ if (contact.postalAddress.city)
+ [result setObject:contact.postalAddress.state forKey:@"administrativeArea"];
+ if (contact.postalAddress.city)
+ [result setObject:contact.postalAddress.country forKey:@"country"];
+ if (contact.postalAddress.city)
+ [result setObject:contact.postalAddress.ISOCountryCode forKey:@"countryCode"];
+
+ return result;
+}
+
+JSC::JSValue PaymentContact::toJS(JSC::ExecState& exec) const
+{
+ auto dictionary = toDictionary(m_pkContact.get());
+
+ // FIXME: Don't round-trip using NSString.
+ auto jsonString = adoptNS([[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:dictionary.get() options:0 error:nullptr] encoding:NSUTF8StringEncoding]);
+ return JSONParse(&exec, jsonString.get());
+}
+
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreModulesapplepaycocoaPaymentMethodCocoammfromrev202308trunkSourceWebCoreModulesapplepaycocoaPaymentCocoamm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm (from rev 202308, trunk/Source/WebCore/Modules/applepay/cocoa/PaymentCocoa.mm) (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm         (rev 0)
+++ trunk/Source/WebCore/Modules/applepay/cocoa/PaymentMethodCocoa.mm        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "PaymentMethod.h"
+
+#if ENABLE(APPLE_PAY)
+
+#import <PassKit/PassKit.h>
+#import <runtime/JSONObject.h>
+
+namespace WebCore {
+
+RetainPtr<NSDictionary> toDictionary(PKPaymentMethod *paymentMethod)
+{
+ auto result = adoptNS([[NSMutableDictionary alloc] init]);
+
+ if (NSString *displayName = paymentMethod.displayName)
+ [result setObject:displayName forKey:@"displayName"];
+
+ if (NSString *network = paymentMethod.network)
+ [result setObject:network forKey:@"network"];
+
+ return result;
+}
+
+JSC::JSValue PaymentMethod::toJS(JSC::ExecState& exec) const
+{
+ auto dictionary = toDictionary(m_pkPaymentMethod.get());
+
+ // FIXME: Don't round-trip using NSString.
+ auto jsonString = adoptNS([[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:dictionary.get() options:0 error:nullptr] encoding:NSUTF8StringEncoding]);
+ return JSONParse(&exec, jsonString.get());
+}
+
+}
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (202308 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-06-22 00:08:10 UTC (rev 202308)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -796,7 +796,26 @@
</span><span class="cx">                 1A874ADF19085E9100B03171 /* WAKViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A874ADE19085E9100B03171 /* WAKViewInternal.h */; };
</span><span class="cx">                 1A88A90417553CD7000C74F9 /* FileIconLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A88A90217553CD7000C74F9 /* FileIconLoader.cpp */; };
</span><span class="cx">                 1A88A90517553CD7000C74F9 /* FileIconLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A88A90317553CD7000C74F9 /* FileIconLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                1A8A64321D19E69B00D0E00F /* PaymentCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A58E86A1D19D94600C0EA73 /* PaymentCocoa.mm */; };
</del><ins>+                1A8A643A1D19FC5300D0E00F /* Payment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64371D19FC5300D0E00F /* Payment.h */; };
+                1A8A643B1D19FC5300D0E00F /* PaymentContact.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64381D19FC5300D0E00F /* PaymentContact.h */; };
+                1A8A643C1D19FC5300D0E00F /* PaymentMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64391D19FC5300D0E00F /* PaymentMethod.h */; };
+                1A8A64511D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A643D1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.cpp */; };
+                1A8A64521D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A643E1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h */; };
+                1A8A64541D19FCFC00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A64401D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp */; };
+                1A8A64561D19FCFC00D0E00F /* ApplePayPaymentMethodSelectedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64421D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.h */; };
+                1A8A64581D19FCFC00D0E00F /* ApplePaySession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A64441D19FCFB00D0E00F /* ApplePaySession.cpp */; };
+                1A8A64591D19FCFC00D0E00F /* ApplePaySession.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64451D19FCFB00D0E00F /* ApplePaySession.h */; };
+                1A8A645B1D19FCFC00D0E00F /* ApplePayShippingContactSelectedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A64471D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.cpp */; };
+                1A8A645C1D19FCFC00D0E00F /* ApplePayShippingContactSelectedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64481D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.h */; };
+                1A8A645F1D19FCFC00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A644B1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp */; };
+                1A8A64601D19FCFC00D0E00F /* ApplePayShippingMethodSelectedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A644C1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.h */; };
+                1A8A64621D19FCFC00D0E00F /* ApplePayValidateMerchantEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A644E1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.cpp */; };
+                1A8A64631D19FCFC00D0E00F /* ApplePayValidateMerchantEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A644F1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.h */; };
+                1A8A64671D19FDFF00D0E00F /* PaymentRequestValidator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A64651D19FDFF00D0E00F /* PaymentRequestValidator.cpp */; };
+                1A8A64681D19FDFF00D0E00F /* PaymentRequestValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8A64661D19FDFF00D0E00F /* PaymentRequestValidator.h */; };
+                1A8A646C1D19FF8700D0E00F /* PaymentCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A64691D19FF8700D0E00F /* PaymentCocoa.mm */; };
+                1A8A646D1D19FF8700D0E00F /* PaymentContactCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A646A1D19FF8700D0E00F /* PaymentContactCocoa.mm */; };
+                1A8A646E1D19FF8700D0E00F /* PaymentMethodCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8A646B1D19FF8700D0E00F /* PaymentMethodCocoa.mm */; };
</ins><span class="cx">                 1A8F6B020DB53006001DB794 /* SubstituteResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6B010DB53006001DB794 /* SubstituteResource.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1A8F6BBC0DB55CDC001DB794 /* ApplicationCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */; };
</span><span class="cx">                 1A8F6BBD0DB55CDC001DB794 /* ApplicationCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -921,6 +940,25 @@
</span><span class="cx">                 1AE82F900CAAFA9D002237AE /* JSDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE82F8E0CAAFA9D002237AE /* JSDatabase.h */; };
</span><span class="cx">                 1AE82FEC0CAB07EE002237AE /* JSSQLResultSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE82FEA0CAB07EE002237AE /* JSSQLResultSet.cpp */; };
</span><span class="cx">                 1AE82FED0CAB07EE002237AE /* JSSQLResultSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */; };
</span><ins>+                1AE96A881D1A0CEB00B86768 /* PaymentAuthorizationStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */; };
+                1AE96A891D1A0CEB00B86768 /* PaymentMerchantSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A871D1A0CEB00B86768 /* PaymentMerchantSession.h */; };
+                1AE96A8A1D1A0DDD00B86768 /* JSApplePayPaymentAuthorizedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A7A1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.cpp */; };
+                1AE96A8B1D1A0DDD00B86768 /* JSApplePayPaymentAuthorizedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A7B1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.h */; };
+                1AE96A8C1D1A0DDD00B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A7C1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp */; };
+                1AE96A8D1D1A0DDD00B86768 /* JSApplePayPaymentMethodSelectedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A7D1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.h */; };
+                1AE96A8E1D1A0DDD00B86768 /* JSApplePaySession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A7E1D1A0A8000B86768 /* JSApplePaySession.cpp */; };
+                1AE96A8F1D1A0DDD00B86768 /* JSApplePaySession.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A7F1D1A0A8000B86768 /* JSApplePaySession.h */; };
+                1AE96A901D1A0DDD00B86768 /* JSApplePayShippingContactSelectedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A801D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.cpp */; };
+                1AE96A911D1A0DDD00B86768 /* JSApplePayShippingContactSelectedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A811D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.h */; };
+                1AE96A921D1A0DDD00B86768 /* JSApplePayShippingMethodSelectedEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A821D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.cpp */; };
+                1AE96A931D1A0DDD00B86768 /* JSApplePayShippingMethodSelectedEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A831D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.h */; };
+                1AE96A941D1A0DDD00B86768 /* JSApplePayValidateMerchantEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A841D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.cpp */; };
+                1AE96A951D1A0DDD00B86768 /* JSApplePayValidateMerchantEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AE96A851D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.h */; };
+                1AE96A961D1A100700B86768 /* JSApplePayPaymentAuthorizedEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A741D1A04D300B86768 /* JSApplePayPaymentAuthorizedEventCustom.cpp */; };
+                1AE96A971D1A100700B86768 /* JSApplePayPaymentMethodSelectedEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A751D1A04D300B86768 /* JSApplePayPaymentMethodSelectedEventCustom.cpp */; };
+                1AE96A981D1A100700B86768 /* JSApplePaySessionCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A761D1A04D300B86768 /* JSApplePaySessionCustom.cpp */; };
+                1AE96A991D1A100700B86768 /* JSApplePayShippingContactSelectedEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A771D1A04D300B86768 /* JSApplePayShippingContactSelectedEventCustom.cpp */; };
+                1AE96A9A1D1A100700B86768 /* JSApplePayShippingMethodSelectedEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE96A781D1A04D300B86768 /* JSApplePayShippingMethodSelectedEventCustom.cpp */; };
</ins><span class="cx">                 1AEF4E67170E160300AB2799 /* CachedFontClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEF4E66170E160300AB2799 /* CachedFontClient.h */; };
</span><span class="cx">                 1AEF4E69170E174800AB2799 /* CachedSVGDocumentClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEF4E68170E174800AB2799 /* CachedSVGDocumentClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1AF326790D78B9440068F0C4 /* EditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF326770D78B9440068F0C4 /* EditorClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -8221,7 +8259,6 @@
</span><span class="cx">                 1A58E8621D19D3BF00C0EA73 /* PaymentCoordinatorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentCoordinatorClient.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A58E8631D19D4DF00C0EA73 /* PaymentRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PaymentRequest.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 1A58E8641D19D4DF00C0EA73 /* PaymentRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentRequest.h; sourceTree = "<group>"; };
</span><del>-                1A58E86A1D19D94600C0EA73 /* PaymentCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PaymentCocoa.mm; path = Modules/applepay/cocoa/PaymentCocoa.mm; sourceTree = SOURCE_ROOT; };
</del><span class="cx">                 1A58E86B1D19E42D00C0EA73 /* PaymentCoordinator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PaymentCoordinator.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 1A58E86C1D19E42D00C0EA73 /* PaymentCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentCoordinator.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A71D5790F33819000F9CE4E /* IdentifierRep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IdentifierRep.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -8269,6 +8306,32 @@
</span><span class="cx">                 1A874ADE19085E9100B03171 /* WAKViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WAKViewInternal.h; path = ../../WAKViewInternal.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A88A90217553CD7000C74F9 /* FileIconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileIconLoader.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 1A88A90317553CD7000C74F9 /* FileIconLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileIconLoader.h; sourceTree = "<group>"; };
</span><ins>+                1A8A64371D19FC5300D0E00F /* Payment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Payment.h; sourceTree = "<group>"; };
+                1A8A64381D19FC5300D0E00F /* PaymentContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentContact.h; sourceTree = "<group>"; };
+                1A8A64391D19FC5300D0E00F /* PaymentMethod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentMethod.h; sourceTree = "<group>"; };
+                1A8A643D1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayPaymentAuthorizedEvent.cpp; sourceTree = "<group>"; };
+                1A8A643E1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentAuthorizedEvent.h; sourceTree = "<group>"; };
+                1A8A643F1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentAuthorizedEvent.idl; sourceTree = "<group>"; };
+                1A8A64401D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayPaymentMethodSelectedEvent.cpp; sourceTree = "<group>"; };
+                1A8A64421D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentMethodSelectedEvent.h; sourceTree = "<group>"; };
+                1A8A64431D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentMethodSelectedEvent.idl; sourceTree = "<group>"; };
+                1A8A64441D19FCFB00D0E00F /* ApplePaySession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePaySession.cpp; sourceTree = "<group>"; };
+                1A8A64451D19FCFB00D0E00F /* ApplePaySession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePaySession.h; sourceTree = "<group>"; };
+                1A8A64461D19FCFB00D0E00F /* ApplePaySession.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePaySession.idl; sourceTree = "<group>"; };
+                1A8A64471D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayShippingContactSelectedEvent.cpp; sourceTree = "<group>"; };
+                1A8A64481D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayShippingContactSelectedEvent.h; sourceTree = "<group>"; };
+                1A8A64491D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayShippingContactSelectedEvent.idl; sourceTree = "<group>"; };
+                1A8A644B1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayShippingMethodSelectedEvent.cpp; sourceTree = "<group>"; };
+                1A8A644C1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayShippingMethodSelectedEvent.h; sourceTree = "<group>"; };
+                1A8A644D1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayShippingMethodSelectedEvent.idl; sourceTree = "<group>"; };
+                1A8A644E1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayValidateMerchantEvent.cpp; sourceTree = "<group>"; };
+                1A8A644F1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayValidateMerchantEvent.h; sourceTree = "<group>"; };
+                1A8A64501D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayValidateMerchantEvent.idl; sourceTree = "<group>"; };
+                1A8A64651D19FDFF00D0E00F /* PaymentRequestValidator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PaymentRequestValidator.cpp; sourceTree = "<group>"; };
+                1A8A64661D19FDFF00D0E00F /* PaymentRequestValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentRequestValidator.h; sourceTree = "<group>"; };
+                1A8A64691D19FF8700D0E00F /* PaymentCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PaymentCocoa.mm; path = Modules/applepay/cocoa/PaymentCocoa.mm; sourceTree = SOURCE_ROOT; };
+                1A8A646A1D19FF8700D0E00F /* PaymentContactCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PaymentContactCocoa.mm; path = Modules/applepay/cocoa/PaymentContactCocoa.mm; sourceTree = SOURCE_ROOT; };
+                1A8A646B1D19FF8700D0E00F /* PaymentMethodCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PaymentMethodCocoa.mm; path = Modules/applepay/cocoa/PaymentMethodCocoa.mm; sourceTree = SOURCE_ROOT; };
</ins><span class="cx">                 1A8F6B010DB53006001DB794 /* SubstituteResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubstituteResource.h; sourceTree = "<group>"; };
</span><span class="cx">                 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCache.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCache.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -8419,6 +8482,25 @@
</span><span class="cx">                 1AE82F8E0CAAFA9D002237AE /* JSDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDatabase.h; sourceTree = "<group>"; };
</span><span class="cx">                 1AE82FEA0CAB07EE002237AE /* JSSQLResultSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSet.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLResultSet.h; sourceTree = "<group>"; };
</span><ins>+                1AE96A741D1A04D300B86768 /* JSApplePayPaymentAuthorizedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentAuthorizedEventCustom.cpp; sourceTree = "<group>"; };
+                1AE96A751D1A04D300B86768 /* JSApplePayPaymentMethodSelectedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentMethodSelectedEventCustom.cpp; sourceTree = "<group>"; };
+                1AE96A761D1A04D300B86768 /* JSApplePaySessionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePaySessionCustom.cpp; sourceTree = "<group>"; };
+                1AE96A771D1A04D300B86768 /* JSApplePayShippingContactSelectedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingContactSelectedEventCustom.cpp; sourceTree = "<group>"; };
+                1AE96A781D1A04D300B86768 /* JSApplePayShippingMethodSelectedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingMethodSelectedEventCustom.cpp; sourceTree = "<group>"; };
+                1AE96A7A1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentAuthorizedEvent.cpp; sourceTree = "<group>"; };
+                1AE96A7B1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayPaymentAuthorizedEvent.h; sourceTree = "<group>"; };
+                1AE96A7C1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentMethodSelectedEvent.cpp; sourceTree = "<group>"; };
+                1AE96A7D1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayPaymentMethodSelectedEvent.h; sourceTree = "<group>"; };
+                1AE96A7E1D1A0A8000B86768 /* JSApplePaySession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePaySession.cpp; sourceTree = "<group>"; };
+                1AE96A7F1D1A0A8000B86768 /* JSApplePaySession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePaySession.h; sourceTree = "<group>"; };
+                1AE96A801D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingContactSelectedEvent.cpp; sourceTree = "<group>"; };
+                1AE96A811D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingContactSelectedEvent.h; sourceTree = "<group>"; };
+                1AE96A821D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingMethodSelectedEvent.cpp; sourceTree = "<group>"; };
+                1AE96A831D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingMethodSelectedEvent.h; sourceTree = "<group>"; };
+                1AE96A841D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayValidateMerchantEvent.cpp; sourceTree = "<group>"; };
+                1AE96A851D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayValidateMerchantEvent.h; sourceTree = "<group>"; };
+                1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentAuthorizationStatus.h; sourceTree = "<group>"; };
+                1AE96A871D1A0CEB00B86768 /* PaymentMerchantSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentMerchantSession.h; sourceTree = "<group>"; };
</ins><span class="cx">                 1AEF4E66170E160300AB2799 /* CachedFontClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFontClient.h; sourceTree = "<group>"; };
</span><span class="cx">                 1AEF4E68170E174800AB2799 /* CachedSVGDocumentClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGDocumentClient.h; sourceTree = "<group>"; };
</span><span class="cx">                 1AF326770D78B9440068F0C4 /* EditorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditorClient.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -16031,6 +16113,7 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 1221E0581C02B409006A1A00 /* Animation */,
</span><ins>+                                1AE96A791D1A0A5C00B86768 /* ApplePay */,
</ins><span class="cx">                                 A83B79100CCB001B000B0825 /* Core */,
</span><span class="cx">                                 E1FF8F61180745C600132674 /* Crypto */,
</span><span class="cx">                                 A83B790E0CCAFF97000B0825 /* CSS */,
</span><span class="lines">@@ -16169,11 +16252,36 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 1A58E8691D19D8C000C0EA73 /* cocoa */,
</span><ins>+                                1A8A643D1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.cpp */,
+                                1A8A643E1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h */,
+                                1A8A643F1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.idl */,
+                                1A8A64401D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp */,
+                                1A8A64421D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.h */,
+                                1A8A64431D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.idl */,
+                                1A8A64441D19FCFB00D0E00F /* ApplePaySession.cpp */,
+                                1A8A64451D19FCFB00D0E00F /* ApplePaySession.h */,
+                                1A8A64461D19FCFB00D0E00F /* ApplePaySession.idl */,
+                                1A8A64471D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.cpp */,
+                                1A8A64481D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.h */,
+                                1A8A64491D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.idl */,
+                                1A8A644B1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp */,
+                                1A8A644C1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.h */,
+                                1A8A644D1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.idl */,
+                                1A8A644E1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.cpp */,
+                                1A8A644F1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.h */,
+                                1A8A64501D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.idl */,
+                                1A8A64371D19FC5300D0E00F /* Payment.h */,
+                                1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */,
+                                1A8A64381D19FC5300D0E00F /* PaymentContact.h */,
</ins><span class="cx">                                 1A58E86B1D19E42D00C0EA73 /* PaymentCoordinator.cpp */,
</span><span class="cx">                                 1A58E86C1D19E42D00C0EA73 /* PaymentCoordinator.h */,
</span><span class="cx">                                 1A58E8621D19D3BF00C0EA73 /* PaymentCoordinatorClient.h */,
</span><ins>+                                1AE96A871D1A0CEB00B86768 /* PaymentMerchantSession.h */,
+                                1A8A64391D19FC5300D0E00F /* PaymentMethod.h */,
</ins><span class="cx">                                 1A58E8631D19D4DF00C0EA73 /* PaymentRequest.cpp */,
</span><span class="cx">                                 1A58E8641D19D4DF00C0EA73 /* PaymentRequest.h */,
</span><ins>+                                1A8A64651D19FDFF00D0E00F /* PaymentRequestValidator.cpp */,
+                                1A8A64661D19FDFF00D0E00F /* PaymentRequestValidator.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = applepay;
</span><span class="cx">                         sourceTree = "<group>";
</span><span class="lines">@@ -16181,7 +16289,9 @@
</span><span class="cx">                 1A58E8691D19D8C000C0EA73 /* cocoa */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                1A58E86A1D19D94600C0EA73 /* PaymentCocoa.mm */,
</del><ins>+                                1A8A64691D19FF8700D0E00F /* PaymentCocoa.mm */,
+                                1A8A646A1D19FF8700D0E00F /* PaymentContactCocoa.mm */,
+                                1A8A646B1D19FF8700D0E00F /* PaymentMethodCocoa.mm */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = cocoa;
</span><span class="cx">                         path = applepay/cocoa;
</span><span class="lines">@@ -16274,6 +16384,25 @@
</span><span class="cx">                         tabWidth = 8;
</span><span class="cx">                         usesTabs = 0;
</span><span class="cx">                 };
</span><ins>+                1AE96A791D1A0A5C00B86768 /* ApplePay */ = {
+                        isa = PBXGroup;
+                        children = (
+                                1AE96A7A1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.cpp */,
+                                1AE96A7B1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.h */,
+                                1AE96A7C1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp */,
+                                1AE96A7D1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.h */,
+                                1AE96A7E1D1A0A8000B86768 /* JSApplePaySession.cpp */,
+                                1AE96A7F1D1A0A8000B86768 /* JSApplePaySession.h */,
+                                1AE96A801D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.cpp */,
+                                1AE96A811D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.h */,
+                                1AE96A821D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.cpp */,
+                                1AE96A831D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.h */,
+                                1AE96A841D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.cpp */,
+                                1AE96A851D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.h */,
+                        );
+                        name = ApplePay;
+                        sourceTree = "<group>";
+                };
</ins><span class="cx">                 1AF62EE114DA22A70041556C /* scrolling */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -16963,6 +17092,8 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 439046CB12DA25E17BAF80A2 /* MathMLOperatorDictionary.cpp */,
</span><span class="cx">                                 439046CC12DA25E17BAF80A2 /* MathMLOperatorDictionary.h */,
</span><ins>+                                439046D512DA25E812AF80AC /* MathOperator.cpp */,
+                                439046D612DA25E812AF80AC /* MathOperator.h */,
</ins><span class="cx">                                 439046C312DA25E800AF80A2 /* RenderMathMLBlock.cpp */,
</span><span class="cx">                                 439046C412DA25E800AF80A2 /* RenderMathMLBlock.h */,
</span><span class="cx">                                 439046C512DA25E800AF80A2 /* RenderMathMLFenced.cpp */,
</span><span class="lines">@@ -16987,8 +17118,6 @@
</span><span class="cx">                                 439046D812DA25E800AF80A9 /* RenderMathMLToken.h */,
</span><span class="cx">                                 439046D512DA25E800AF80A2 /* RenderMathMLUnderOver.cpp */,
</span><span class="cx">                                 439046D612DA25E800AF80A2 /* RenderMathMLUnderOver.h */,
</span><del>-                                439046D512DA25E812AF80AC /* MathOperator.cpp */,
-                                439046D612DA25E812AF80AC /* MathOperator.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = mathml;
</span><span class="cx">                         sourceTree = "<group>";
</span><span class="lines">@@ -18013,7 +18142,6 @@
</span><span class="cx">                 65BF02180974806300C43196 /* page */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                5C7C88D71D0F1F2B009D2F6D /* SocketProvider.h */,
</del><span class="cx">                                 316FE1060E6E1D8400BF6088 /* animation */,
</span><span class="cx">                                 5D5975B5196362BE00D00878 /* cocoa */,
</span><span class="cx">                                 CE17AD141C58522F005F4799 /* csp */,
</span><span class="lines">@@ -18181,6 +18309,7 @@
</span><span class="cx">                                 14C9A5E90B3D105F005A0232 /* Settings.cpp */,
</span><span class="cx">                                 F587863A02DE3A1401EA4122 /* Settings.h */,
</span><span class="cx">                                 BC59DEF8169DEDC30016AC34 /* Settings.in */,
</span><ins>+                                5C7C88D71D0F1F2B009D2F6D /* SocketProvider.h */,
</ins><span class="cx">                                 626CDE0C1140424C001E5A68 /* SpatialNavigation.cpp */,
</span><span class="cx">                                 626CDE0D1140424C001E5A68 /* SpatialNavigation.h */,
</span><span class="cx">                                 62C1217A11AB9E76003C462C /* SuspendableTimer.cpp */,
</span><span class="lines">@@ -22501,6 +22630,11 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 1221E0721C03E4C2006A1A00 /* JSAnimationTimelineCustom.cpp */,
</span><ins>+                                1AE96A741D1A04D300B86768 /* JSApplePayPaymentAuthorizedEventCustom.cpp */,
+                                1AE96A751D1A04D300B86768 /* JSApplePayPaymentMethodSelectedEventCustom.cpp */,
+                                1AE96A761D1A04D300B86768 /* JSApplePaySessionCustom.cpp */,
+                                1AE96A771D1A04D300B86768 /* JSApplePayShippingContactSelectedEventCustom.cpp */,
+                                1AE96A781D1A04D300B86768 /* JSApplePayShippingMethodSelectedEventCustom.cpp */,
</ins><span class="cx">                                 BC2ED6BB0C6BD2F000920BFF /* JSAttrCustom.cpp */,
</span><span class="cx">                                 FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */,
</span><span class="cx">                                 BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */,
</span><span class="lines">@@ -23007,8 +23141,8 @@
</span><span class="cx">                                 5179CE25195C821D0019C198 /* GamepadProvider.cpp */,
</span><span class="cx">                                 5179CE23195C81420019C198 /* GamepadProvider.h */,
</span><span class="cx">                                 5179CE29195C91860019C198 /* GamepadProviderClient.h */,
</span><ins>+                                CD4BE5291CE13425009D87DA /* GenericTaskQueue.cpp */,
</ins><span class="cx">                                 CD62FB941AF018E70012ED7D /* GenericTaskQueue.h */,
</span><del>-                                CD4BE5291CE13425009D87DA /* GenericTaskQueue.cpp */,
</del><span class="cx">                                 A8748BDF12CBF2DC001FBA41 /* HashTools.h */,
</span><span class="cx">                                 BC3BC29B0E91AB0F00835588 /* HostWindow.h */,
</span><span class="cx">                                 862F129F18C1DCE4005C54AF /* HysteresisActivity.h */,
</span><span class="lines">@@ -23366,8 +23500,8 @@
</span><span class="cx">                                 CDE3A85517F6020400C5BE20 /* AudioTrackPrivateAVFObjC.mm */,
</span><span class="cx">                                 CD54A760180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.cpp */,
</span><span class="cx">                                 CD54A761180F9F7000B076C9 /* AudioTrackPrivateMediaSourceAVFObjC.h */,
</span><ins>+                                07C8AD121D073D630087C5CE /* AVFoundationMIMETypeCache.h */,
</ins><span class="cx">                                 07C8AD111D073D630087C5CE /* AVFoundationMIMETypeCache.mm */,
</span><del>-                                07C8AD121D073D630087C5CE /* AVFoundationMIMETypeCache.h */,
</del><span class="cx">                                 CDE595941BF166D100A1CBE8 /* CDMSessionAVContentKeySession.h */,
</span><span class="cx">                                 CDE595931BF166AD00A1CBE8 /* CDMSessionAVContentKeySession.mm */,
</span><span class="cx">                                 CDDE02EA18B3ED6D00CF7FF1 /* CDMSessionAVFoundationObjC.h */,
</span><span class="lines">@@ -25082,11 +25216,12 @@
</span><span class="cx">                         isa = PBXHeadersBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                51714EAD1CF65951004723C4 /* GCObservation.h in Headers */,
</ins><span class="cx">                                 417DA6DA13734E6E007C57FB /* Internals.h in Headers */,
</span><span class="cx">                                 A7BF7EE014C9175A0014489D /* InternalSettings.h in Headers */,
</span><span class="cx">                                 53E29E5F167A8A1900586D3D /* InternalSettingsGenerated.h in Headers */,
</span><ins>+                                51714EB11CF665CE004723C4 /* JSGCObservation.h in Headers */,
</ins><span class="cx">                                 417DA71E13735DFA007C57FB /* JSInternals.h in Headers */,
</span><del>-                                51714EB11CF665CE004723C4 /* JSGCObservation.h in Headers */,
</del><span class="cx">                                 A740B5A514C935AB00A77FA4 /* JSInternalSettings.h in Headers */,
</span><span class="cx">                                 53ED3FDF167A88E7006762E6 /* JSInternalSettingsGenerated.h in Headers */,
</span><span class="cx">                                 A740B59514C935AB00A77FA4 /* JSMallocStatistics.h in Headers */,
</span><span class="lines">@@ -25096,7 +25231,6 @@
</span><span class="cx">                                 CDC26B41160A8CCE0026757B /* MockCDM.h in Headers */,
</span><span class="cx">                                 A1BF6B831AA96C7D00AF4A8A /* MockContentFilter.h in Headers */,
</span><span class="cx">                                 A1B5B29F1AAA846F008B6042 /* MockContentFilterSettings.h in Headers */,
</span><del>-                                51714EAD1CF65951004723C4 /* GCObservation.h in Headers */,
</del><span class="cx">                                 2D6F3E911C1ECB2F0061DBD4 /* MockPageOverlay.h in Headers */,
</span><span class="cx">                                 2D97F04819DD4140001EE9C3 /* MockPageOverlayClient.h in Headers */,
</span><span class="cx">                                 AA5F3B8D16CC33D100455EB0 /* PlatformSpeechSynthesizerMock.h in Headers */,
</span><span class="lines">@@ -25159,7 +25293,12 @@
</span><span class="cx">                                 31DCD29D1AB4FBDE0072E817 /* AnimationTrigger.h in Headers */,
</span><span class="cx">                                 0F580FAF149800D400FB5BD8 /* AnimationUtilities.h in Headers */,
</span><span class="cx">                                 93309DD7099E64920056E581 /* AppendNodeCommand.h in Headers */,
</span><del>-                                51714EA81CF4E4B1004723C4 /* IDBActiveDOMObject.h in Headers */,
</del><ins>+                                1A8A64521D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h in Headers */,
+                                1A8A64561D19FCFC00D0E00F /* ApplePayPaymentMethodSelectedEvent.h in Headers */,
+                                1A8A64591D19FCFC00D0E00F /* ApplePaySession.h in Headers */,
+                                1A8A645C1D19FCFC00D0E00F /* ApplePayShippingContactSelectedEvent.h in Headers */,
+                                1A8A64601D19FCFC00D0E00F /* ApplePayShippingMethodSelectedEvent.h in Headers */,
+                                1A8A64631D19FCFC00D0E00F /* ApplePayValidateMerchantEvent.h in Headers */,
</ins><span class="cx">                                 1A8F6BBD0DB55CDC001DB794 /* ApplicationCache.h in Headers */,
</span><span class="cx">                                 1A8F6BBF0DB55CDC001DB794 /* ApplicationCacheGroup.h in Headers */,
</span><span class="cx">                                 24F54EAD101FE914000AE741 /* ApplicationCacheHost.h in Headers */,
</span><span class="lines">@@ -25250,6 +25389,7 @@
</span><span class="cx">                                 BCA8C81E11E3D36900812FB7 /* BackForwardController.h in Headers */,
</span><span class="cx">                                 BCA8CA6011E4E6D100812FB7 /* BackForwardList.h in Headers */,
</span><span class="cx">                                 BC124EE80C2641CD009E2349 /* BarProp.h in Headers */,
</span><ins>+                                460BB6161D0A1BF000221812 /* Base64Utilities.h in Headers */,
</ins><span class="cx">                                 379E61CA126CA5C400B63E8D /* BaseButtonInputType.h in Headers */,
</span><span class="cx">                                 379E61CC126CA5C400B63E8D /* BaseCheckableInputType.h in Headers */,
</span><span class="cx">                                 F5E0C65C1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.h in Headers */,
</span><span class="lines">@@ -25356,7 +25496,6 @@
</span><span class="cx">                                 97B8FFD116AE7F960038388D /* CharacterReferenceParserInlines.h in Headers */,
</span><span class="cx">                                 B2C3DA2A0D006C1D00EF6F26 /* CharsetData.h in Headers */,
</span><span class="cx">                                 F55B3DB21251F12D003EF269 /* CheckboxInputType.h in Headers */,
</span><del>-                                93F925430F7EF5B8007E37C9 /* RadioButtonGroups.h in Headers */,
</del><span class="cx">                                 D619A308144E00BE004BC302 /* ChildListMutationScope.h in Headers */,
</span><span class="cx">                                 A81872200977D3C0005826D9 /* ChildNodeList.h in Headers */,
</span><span class="cx">                                 14D823520AF92A790004F057 /* Chrome.h in Headers */,
</span><span class="lines">@@ -25455,6 +25594,7 @@
</span><span class="cx">                                 51A052331058774F00CC9E95 /* CredentialStorage.h in Headers */,
</span><span class="cx">                                 2D481F02146B5C5500AA7834 /* CrossfadeGeneratedImage.h in Headers */,
</span><span class="cx">                                 E1C416120F6562FD0092D2FB /* CrossOriginAccessControl.h in Headers */,
</span><ins>+                                41ABE67B1D0580DB006D862D /* CrossOriginPreflightChecker.h in Headers */,
</ins><span class="cx">                                 E1C415DA0F655D6F0092D2FB /* CrossOriginPreflightResultCache.h in Headers */,
</span><span class="cx">                                 E169803D1133542D00894115 /* CRuntimeObject.h in Headers */,
</span><span class="cx">                                 975CA28B130365F800E99AD9 /* Crypto.h in Headers */,
</span><span class="lines">@@ -25558,7 +25698,6 @@
</span><span class="cx">                                 A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */,
</span><span class="cx">                                 371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */,
</span><span class="cx">                                 A80E73520A199C77007FB8C5 /* CSSSelector.h in Headers */,
</span><del>-                                37B327D31D17096A005737FA /* PIPSPI.h in Headers */,
</del><span class="cx">                                 E4C1789B0EE6903800824D69 /* CSSSelectorList.h in Headers */,
</span><span class="cx">                                 A80E6CE80A1989CA007FB8C5 /* CSSShadowValue.h in Headers */,
</span><span class="cx">                                 A80E6E0F0A19911C007FB8C5 /* CSSStyleDeclaration.h in Headers */,
</span><span class="lines">@@ -25568,7 +25707,6 @@
</span><span class="cx">                                 BC80C9880CD294EE00A0B7B3 /* CSSTimingFunctionValue.h in Headers */,
</span><span class="cx">                                 9AB1F38018E2489A00534743 /* CSSToLengthConversionData.h in Headers */,
</span><span class="cx">                                 A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */,
</span><del>-                                930841341CDDB15500B0958C /* JSDOMConvert.h in Headers */,
</del><span class="cx">                                 371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
</span><span class="cx">                                 DD7CDF250A23CF9800069928 /* CSSUnknownRule.h in Headers */,
</span><span class="cx">                                 BC7D8FF01BD03B6400FFE540 /* CSSUnsetValue.h in Headers */,
</span><span class="lines">@@ -25651,7 +25789,6 @@
</span><span class="cx">                                 5CD9F5681AA0F74600DA45FF /* DFABytecodeInterpreter.h in Headers */,
</span><span class="cx">                                 26A807851B18F97700E219BE /* DFACombiner.h in Headers */,
</span><span class="cx">                                 26A517FE1AB92238006335DF /* DFAMinimizer.h in Headers */,
</span><del>-                                41ABE67B1D0580DB006D862D /* CrossOriginPreflightChecker.h in Headers */,
</del><span class="cx">                                 267725FF1A5B3AD9003C24DD /* DFANode.h in Headers */,
</span><span class="cx">                                 CD19A2681A13E700008D650E /* DiagnosticLoggingClient.h in Headers */,
</span><span class="cx">                                 46FCB6181A70820E00C5A21E /* DiagnosticLoggingKeys.h in Headers */,
</span><span class="lines">@@ -25828,12 +25965,12 @@
</span><span class="cx">                                 85BA4D0F0AA688680088052D /* DOMHTMLDListElement.h in Headers */,
</span><span class="cx">                                 85E711A50AC5D5350053270F /* DOMHTMLDListElementInternal.h in Headers */,
</span><span class="cx">                                 85BCBC130ABBA87D00381160 /* DOMHTMLDocument.h in Headers */,
</span><ins>+                                1AE96A881D1A0CEB00B86768 /* PaymentAuthorizationStatus.h in Headers */,
</ins><span class="cx">                                 85E711A60AC5D5350053270F /* DOMHTMLDocumentInternal.h in Headers */,
</span><span class="cx">                                 85DF2EED0AA387CB00AD64C5 /* DOMHTMLElement.h in Headers */,
</span><span class="cx">                                 85E711A70AC5D5350053270F /* DOMHTMLElementInternal.h in Headers */,
</span><span class="cx">                                 8540756A0AD6CBF900620C57 /* DOMHTMLEmbedElement.h in Headers */,
</span><span class="cx">                                 855247D00AD850B80012093B /* DOMHTMLEmbedElementInternal.h in Headers */,
</span><del>-                                1A58E8651D19D4EB00C0EA73 /* PaymentRequest.h in Headers */,
</del><span class="cx">                                 85BA4CDF0AA6861B0088052D /* DOMHTMLFieldSetElement.h in Headers */,
</span><span class="cx">                                 85E711A80AC5D5350053270F /* DOMHTMLFieldSetElementInternal.h in Headers */,
</span><span class="cx">                                 85ECBEEF0AA7626900544F0B /* DOMHTMLFontElement.h in Headers */,
</span><span class="lines">@@ -26107,6 +26244,7 @@
</span><span class="cx">                                 E12EDB7B0B308A78002704B6 /* EventTarget.h in Headers */,
</span><span class="cx">                                 97AA3CA5145237CC003E1DA6 /* EventTargetHeaders.h in Headers */,
</span><span class="cx">                                 97AA3CA6145237CC003E1DA6 /* EventTargetInterfaces.h in Headers */,
</span><ins>+                                262EC41A1D078FB900BA78FC /* EventTrackingRegions.h in Headers */,
</ins><span class="cx">                                 BC60D8F30D2A11E000B9918F /* ExceptionBase.h in Headers */,
</span><span class="cx">                                 935FBCF209BA143B00E230B1 /* ExceptionCode.h in Headers */,
</span><span class="cx">                                 973DC640145A9409002842C2 /* ExceptionCodeDescription.h in Headers */,
</span><span class="lines">@@ -26135,10 +26273,10 @@
</span><span class="cx">                                 84730D851248F0B300D3A9C9 /* FEMorphology.h in Headers */,
</span><span class="cx">                                 84730D871248F0B300D3A9C9 /* FEOffset.h in Headers */,
</span><span class="cx">                                 84730D891248F0B300D3A9C9 /* FESpecularLighting.h in Headers */,
</span><ins>+                                41AD753A1CEF6BD100A31486 /* FetchOptions.h in Headers */,
</ins><span class="cx">                                 84730D8B1248F0B300D3A9C9 /* FETile.h in Headers */,
</span><span class="cx">                                 84730D8D1248F0B300D3A9C9 /* FETurbulence.h in Headers */,
</span><span class="cx">                                 FD31609512B026F700C1A359 /* FFTConvolver.h in Headers */,
</span><del>-                                1A58E86E1D19E42D00C0EA73 /* PaymentCoordinator.h in Headers */,
</del><span class="cx">                                 FD31609712B026F700C1A359 /* FFTFrame.h in Headers */,
</span><span class="cx">                                 976D6C81122B8A3D001FD1F7 /* File.h in Headers */,
</span><span class="cx">                                 066C772B0AB603B700238CC4 /* FileChooser.h in Headers */,
</span><span class="lines">@@ -26294,7 +26432,6 @@
</span><span class="cx">                                 A8CFF7AB0A156978000A4234 /* HTMLAnchorElement.h in Headers */,
</span><span class="cx">                                 A871D45D0A127CBC00B12A68 /* HTMLAppletElement.h in Headers */,
</span><span class="cx">                                 A8EA7D2E0A19385500A8EF5F /* HTMLAreaElement.h in Headers */,
</span><del>-                                1A4DA4221CDD3A8300F4473C /* LinkIconCollector.h in Headers */,
</del><span class="cx">                                 7C5F28FC1A827D8400C0F31F /* HTMLAttachmentElement.h in Headers */,
</span><span class="cx">                                 E44613A20CD6331000FADA75 /* HTMLAudioElement.h in Headers */,
</span><span class="cx">                                 A871DC1F0A15205700B12A68 /* HTMLBaseElement.h in Headers */,
</span><span class="lines">@@ -26343,7 +26480,6 @@
</span><span class="cx">                                 A8EA7D2D0A19385500A8EF5F /* HTMLImageElement.h in Headers */,
</span><span class="cx">                                 A8EA7D2B0A19385500A8EF5F /* HTMLImageLoader.h in Headers */,
</span><span class="cx">                                 A81369CC097374F600D74463 /* HTMLInputElement.h in Headers */,
</span><del>-                                460BB6161D0A1BF000221812 /* Base64Utilities.h in Headers */,
</del><span class="cx">                                 97BC849B12370A4B000C6161 /* HTMLInputStream.h in Headers */,
</span><span class="cx">                                 93309DE6099E64920056E581 /* HTMLInterchange.h in Headers */,
</span><span class="cx">                                 A81369E4097374F600D74463 /* HTMLKeygenElement.h in Headers */,
</span><span class="lines">@@ -26428,6 +26564,7 @@
</span><span class="cx">                                 51E1ECBE0C91C90400DC255B /* IconDatabaseClient.h in Headers */,
</span><span class="cx">                                 513F14540AB634C400094DDF /* IconLoader.h in Headers */,
</span><span class="cx">                                 51E1ECC10C91C90400DC255B /* IconRecord.h in Headers */,
</span><ins>+                                51714EA81CF4E4B1004723C4 /* IDBActiveDOMObject.h in Headers */,
</ins><span class="cx">                                 51BA4ACC1BBC5BDD00DF3D6D /* IDBBackingStore.h in Headers */,
</span><span class="cx">                                 C585A66311D4FAC5004C3E4B /* IDBBindingUtilities.h in Headers */,
</span><span class="cx">                                 517B25AA1CC82B2A0061C011 /* IDBConnectionProxy.h in Headers */,
</span><span class="lines">@@ -26520,6 +26657,7 @@
</span><span class="cx">                                 AA4C3A770B2B1679002334A2 /* InlineStyleSheetOwner.h in Headers */,
</span><span class="cx">                                 BCEA485A097D93020094C9E4 /* InlineTextBox.h in Headers */,
</span><span class="cx">                                 1C010701192594DF008A4201 /* InlineTextBoxStyle.h in Headers */,
</span><ins>+                                1AE96A8D1D1A0DDD00B86768 /* JSApplePayPaymentMethodSelectedEvent.h in Headers */,
</ins><span class="cx">                                 510A58E51BAA40B100C19282 /* InProcessIDBServer.h in Headers */,
</span><span class="cx">                                 37E3524D12450C6600BAF5D9 /* InputType.h in Headers */,
</span><span class="cx">                                 C348612415FDE21E007A1CC9 /* InputTypeNames.h in Headers */,
</span><span class="lines">@@ -26662,6 +26800,7 @@
</span><span class="cx">                                 1AC2260D0DB69F190089B669 /* JSDOMApplicationCache.h in Headers */,
</span><span class="cx">                                 93B70D6409EB0C7C009D8468 /* JSDOMBinding.h in Headers */,
</span><span class="cx">                                 413C2C341BC29A8F0075204C /* JSDOMConstructor.h in Headers */,
</span><ins>+                                930841341CDDB15500B0958C /* JSDOMConvert.h in Headers */,
</ins><span class="cx">                                 BC60D7C10D29A46300B9918F /* JSDOMCoreException.h in Headers */,
</span><span class="cx">                                 FC9E0E4D16419C1E00392BE3 /* JSDOMCSSNamespace.h in Headers */,
</span><span class="cx">                                 40ECAE7E16B8B67200C36103 /* JSDOMError.h in Headers */,
</span><span class="lines">@@ -27157,7 +27296,6 @@
</span><span class="cx">                                 E1C36D350EB0A094007410BC /* JSWorkerGlobalScopeBase.h in Headers */,
</span><span class="cx">                                 E1C362EF0EAF2AA9007410BC /* JSWorkerLocation.h in Headers */,
</span><span class="cx">                                 E1271A580EEECDE400F61213 /* JSWorkerNavigator.h in Headers */,
</span><del>-                                5E4EAB041D07166A0006A184 /* MediaEndpointSessionDescription.h in Headers */,
</del><span class="cx">                                 7C4C96DD1AD4483500365A60 /* JSWritableStream.h in Headers */,
</span><span class="cx">                                 8358CB701C53277500E0C2D8 /* JSXMLDocument.h in Headers */,
</span><span class="cx">                                 BC348BD40DB7F804004ABAB9 /* JSXMLHttpRequest.h in Headers */,
</span><span class="lines">@@ -27217,6 +27355,8 @@
</span><span class="cx">                                 FFEFAB2A18380DA000514534 /* LineLayoutState.h in Headers */,
</span><span class="cx">                                 FFDBC047183D27B700407109 /* LineWidth.h in Headers */,
</span><span class="cx">                                 A7AD2F880EC89D07008AB002 /* LinkHash.h in Headers */,
</span><ins>+                                1A4DA4221CDD3A8300F4473C /* LinkIconCollector.h in Headers */,
+                                1A250E0D1CDD632000D0BE63 /* LinkIconType.h in Headers */,
</ins><span class="cx">                                 98CE432A129E00E5005821DC /* LinkLoader.h in Headers */,
</span><span class="cx">                                 984264F112D5280A000D88A4 /* LinkLoaderClient.h in Headers */,
</span><span class="cx">                                 985BB96E13A94058007A0B69 /* LinkRelAttribute.h in Headers */,
</span><span class="lines">@@ -27249,6 +27389,7 @@
</span><span class="cx">                                 44A28AAF12DFB8BF00AE923B /* MathMLNames.h in Headers */,
</span><span class="cx">                                 439046E012DA25E17BAF80A2 /* MathMLOperatorDictionary.h in Headers */,
</span><span class="cx">                                 FA654A6C1108ABED002615E0 /* MathMLTextElement.h in Headers */,
</span><ins>+                                439046EA12DA25E812AF80AC /* MathOperator.h in Headers */,
</ins><span class="cx">                                 49D5DC2C0F423A73008F20FD /* Matrix3DTransformOperation.h in Headers */,
</span><span class="cx">                                 49E911C70EF86D47009D0CAF /* MatrixTransformOperation.h in Headers */,
</span><span class="cx">                                 5CBC8DAD1AAA302200E1C803 /* MediaAccessibilitySoftLink.h in Headers */,
</span><span class="lines">@@ -27274,11 +27415,11 @@
</span><span class="cx">                                 5EBB89371C77782900C65D41 /* MediaEndpointConfiguration.h in Headers */,
</span><span class="cx">                                 5E16A2E41BFA650B0029A21E /* MediaEndpointPeerConnection.h in Headers */,
</span><span class="cx">                                 5EBB89321C77782300C65D41 /* MediaEndpointSessionConfiguration.h in Headers */,
</span><ins>+                                5E4EAB041D07166A0006A184 /* MediaEndpointSessionDescription.h in Headers */,
</ins><span class="cx">                                 E44613AD0CD6331000FADA75 /* MediaError.h in Headers */,
</span><span class="cx">                                 4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */,
</span><span class="cx">                                 07A6D1EC1491137700051D0C /* MediaFragmentURIParser.h in Headers */,
</span><span class="cx">                                 A8EA800E0A19516E00A8EF5F /* MediaList.h in Headers */,
</span><del>-                                5E5E2B141CFC3E75000C0D85 /* RTCRtpTransceiver.h in Headers */,
</del><span class="cx">                                 5EBB89311C7777FF00C65D41 /* MediaPayload.h in Headers */,
</span><span class="cx">                                 07E3DFD11A9E786500764CA8 /* MediaPlaybackTarget.h in Headers */,
</span><span class="cx">                                 079216551AA560AA00A3C049 /* MediaPlaybackTargetClient.h in Headers */,
</span><span class="lines">@@ -27455,6 +27596,7 @@
</span><span class="cx">                                 F40EA8AB1B867E4400CE5581 /* NSScrollingInputFilterSPI.h in Headers */,
</span><span class="cx">                                 2DCB837919F99BBA00A7FBE4 /* NSSharingServicePickerSPI.h in Headers */,
</span><span class="cx">                                 2DCB837A19F99BBA00A7FBE4 /* NSSharingServiceSPI.h in Headers */,
</span><ins>+                                1AE96A951D1A0DDD00B86768 /* JSApplePayValidateMerchantEvent.h in Headers */,
</ins><span class="cx">                                 933C7A751C0FBC440034FB97 /* NSSpellCheckerSPI.h in Headers */,
</span><span class="cx">                                 CE1252531A1BEC0600864480 /* NSStringSPI.h in Headers */,
</span><span class="cx">                                 2D77AC2B1BF2B9870072470A /* NSTextFinderSPI.h in Headers */,
</span><span class="lines">@@ -27475,7 +27617,6 @@
</span><span class="cx">                                 E16982551134629D00894115 /* ObjCRuntimeObject.h in Headers */,
</span><span class="cx">                                 7E5D7A77161D3F8F00896C34 /* OESElementIndexUint.h in Headers */,
</span><span class="cx">                                 9001774112E0347800648462 /* OESStandardDerivatives.h in Headers */,
</span><del>-                                1A58E8661D19D4F000C0EA73 /* PaymentCoordinatorClient.h in Headers */,
</del><span class="cx">                                 6EBF0E4912A8926100DB1709 /* OESTextureFloat.h in Headers */,
</span><span class="cx">                                 3146FE6E184420A8001A937C /* OESTextureFloatLinear.h in Headers */,
</span><span class="cx">                                 A31C4E4F16E02AB4002F7957 /* OESTextureHalfFloat.h in Headers */,
</span><span class="lines">@@ -27533,6 +27674,13 @@
</span><span class="cx">                                 2D5002FC1B56D7990020AAF7 /* PathUtilities.h in Headers */,
</span><span class="cx">                                 A8FA6E5D0E4CFDED00D5CF49 /* Pattern.h in Headers */,
</span><span class="cx">                                 B22279710D00BF220071B782 /* PatternAttributes.h in Headers */,
</span><ins>+                                1A8A643A1D19FC5300D0E00F /* Payment.h in Headers */,
+                                1A8A643B1D19FC5300D0E00F /* PaymentContact.h in Headers */,
+                                1A58E86E1D19E42D00C0EA73 /* PaymentCoordinator.h in Headers */,
+                                1A58E8661D19D4F000C0EA73 /* PaymentCoordinatorClient.h in Headers */,
+                                1A8A643C1D19FC5300D0E00F /* PaymentMethod.h in Headers */,
+                                1A58E8651D19D4EB00C0EA73 /* PaymentRequest.h in Headers */,
+                                1A8A64681D19FDFF00D0E00F /* PaymentRequestValidator.h in Headers */,
</ins><span class="cx">                                 B27535650B053814002CE64F /* PDFDocumentImage.h in Headers */,
</span><span class="cx">                                 5E2C43511BCEE2F60001E2BC /* PeerConnectionBackend.h in Headers */,
</span><span class="cx">                                 5E2C43521BCEE2F60001E2BC /* PeerConnectionStates.h in Headers */,
</span><span class="lines">@@ -27548,6 +27696,7 @@
</span><span class="cx">                                 49D5DC2E0F423A73008F20FD /* PerspectiveTransformOperation.h in Headers */,
</span><span class="cx">                                 51B454EA1B4DAE7D0085EAA6 /* PingHandle.h in Headers */,
</span><span class="cx">                                 D0FF2A5E11F8C45A007E74E0 /* PingLoader.h in Headers */,
</span><ins>+                                37B327D31D17096A005737FA /* PIPSPI.h in Headers */,
</ins><span class="cx">                                 CD7D33441C7A123F00041293 /* PixelBufferConformerCV.h in Headers */,
</span><span class="cx">                                 499B3EDD128DB50200E726C2 /* PlatformCAAnimation.h in Headers */,
</span><span class="cx">                                 0F5E200618E771FC003EC3E5 /* PlatformCAAnimationCocoa.h in Headers */,
</span><span class="lines">@@ -27580,6 +27729,7 @@
</span><span class="cx">                                 074E82BB18A69F0E007EF54C /* PlatformTimeRanges.h in Headers */,
</span><span class="cx">                                 52B0D4BE1C57FD1E0077CE53 /* PlatformView.h in Headers */,
</span><span class="cx">                                 935C476B09AC4D4F00A6AAB4 /* PlatformWheelEvent.h in Headers */,
</span><ins>+                                1AE96A911D1A0DDD00B86768 /* JSApplePayShippingContactSelectedEvent.h in Headers */,
</ins><span class="cx">                                 31D591B316697A6C00E6BF02 /* PlugInClient.h in Headers */,
</span><span class="cx">                                 A9C6E4F40D745E48006442E9 /* PluginData.h in Headers */,
</span><span class="cx">                                 97205ABC1239292700B17380 /* PluginDocument.h in Headers */,
</span><span class="lines">@@ -27633,8 +27783,10 @@
</span><span class="cx">                                 CE1252391A166FA000864480 /* QuickLookSPI.h in Headers */,
</span><span class="cx">                                 072AE1E8183C0741000A5988 /* QuickTimePluginReplacement.h in Headers */,
</span><span class="cx">                                 379E371713736A6600B9E919 /* QuotedPrintable.h in Headers */,
</span><ins>+                                1AE96A891D1A0CEB00B86768 /* PaymentMerchantSession.h in Headers */,
</ins><span class="cx">                                 5A574F29131DB96D00471B88 /* QuotesData.h in Headers */,
</span><span class="cx">                                 B22279720D00BF220071B782 /* RadialGradientAttributes.h in Headers */,
</span><ins>+                                93F925430F7EF5B8007E37C9 /* RadioButtonGroups.h in Headers */,
</ins><span class="cx">                                 F55B3DCC1251F12D003EF269 /* RadioInputType.h in Headers */,
</span><span class="cx">                                 B658FFA61522EFAA00DD5595 /* RadioNodeList.h in Headers */,
</span><span class="cx">                                 93F1991808245E59001E9ABC /* Range.h in Headers */,
</span><span class="lines">@@ -27675,6 +27827,7 @@
</span><span class="cx">                                 BCE4413412F748E2009B84B8 /* RenderCombineText.h in Headers */,
</span><span class="cx">                                 9392F1420AD185F400691BD4 /* RenderCounter.h in Headers */,
</span><span class="cx">                                 BCEA486E097D93020094C9E4 /* RenderDeprecatedFlexibleBox.h in Headers */,
</span><ins>+                                836DAA061CEAB80D00A2B707 /* RenderDescendantIterator.h in Headers */,
</ins><span class="cx">                                 D302754A12A5FE84004BD828 /* RenderDetailsMarker.h in Headers */,
</span><span class="cx">                                 A76E5F7F135E0DCF00A69837 /* RenderedDocumentMarker.h in Headers */,
</span><span class="cx">                                 9B32CDA913DF7FA900F34D13 /* RenderedPosition.h in Headers */,
</span><span class="lines">@@ -27718,7 +27871,6 @@
</span><span class="cx">                                 439046E812DA25E800AF80A2 /* RenderMathMLScripts.h in Headers */,
</span><span class="cx">                                 439046EC12DA25E800AF80A9 /* RenderMathMLToken.h in Headers */,
</span><span class="cx">                                 439046EA12DA25E800AF80A2 /* RenderMathMLUnderOver.h in Headers */,
</span><del>-                                439046EA12DA25E812AF80AC /* MathOperator.h in Headers */,
</del><span class="cx">                                 E4C279590CF9741900E97B98 /* RenderMedia.h in Headers */,
</span><span class="cx">                                 DEBCCDD216646E8200A452E1 /* RenderMediaControlElements.h in Headers */,
</span><span class="cx">                                 41FA303F1316C29C00C0BFC5 /* RenderMediaControls.h in Headers */,
</span><span class="lines">@@ -27730,6 +27882,7 @@
</span><span class="cx">                                 8AC822FD180FC03300FB64D5 /* RenderNamedFlowFragment.h in Headers */,
</span><span class="cx">                                 BC85F23D151915E000BC17BE /* RenderNamedFlowThread.h in Headers */,
</span><span class="cx">                                 BCEA4880097D93020094C9E4 /* RenderObject.h in Headers */,
</span><ins>+                                838867351D13BA5F003697D0 /* RenderObjectEnums.h in Headers */,
</ins><span class="cx">                                 BCFA930810333193007B25D1 /* RenderOverflow.h in Headers */,
</span><span class="cx">                                 A43BF59D1149292800C643CA /* RenderProgress.h in Headers */,
</span><span class="cx">                                 B5B65874186FDE4C009C26E8 /* RenderPtr.h in Headers */,
</span><span class="lines">@@ -27835,6 +27988,7 @@
</span><span class="cx">                                 7EE6846F12D26E3800E79415 /* ResourceRequestCFNet.h in Headers */,
</span><span class="cx">                                 7EE6847012D26E3800E79415 /* ResourceResponse.h in Headers */,
</span><span class="cx">                                 514C767F0CE923A1007EF3CD /* ResourceResponseBase.h in Headers */,
</span><ins>+                                CBC2D2301CE5B8A100D1880B /* ResourceTimingInformation.h in Headers */,
</ins><span class="cx">                                 A5071E851C56D0DC009951BE /* ResourceUsageData.h in Headers */,
</span><span class="cx">                                 ADBAD6EF1BCDD95700381325 /* ResourceUsageOverlay.h in Headers */,
</span><span class="cx">                                 A5071E871C56D0E1009951BE /* ResourceUsageThread.h in Headers */,
</span><span class="lines">@@ -27875,6 +28029,7 @@
</span><span class="cx">                                 5E2C43631BCEE32B0001E2BC /* RTCRtpReceiver.h in Headers */,
</span><span class="cx">                                 5E2C43611BCEE3230001E2BC /* RTCRtpSender.h in Headers */,
</span><span class="cx">                                 5E2C435F1BCEE31E0001E2BC /* RTCRtpSenderReceiverBase.h in Headers */,
</span><ins>+                                5E5E2B141CFC3E75000C0D85 /* RTCRtpTransceiver.h in Headers */,
</ins><span class="cx">                                 078E092617D14D1C00420AA1 /* RTCSessionDescription.h in Headers */,
</span><span class="cx">                                 078E094317D16E1C00420AA1 /* RTCSessionDescriptionDescriptor.h in Headers */,
</span><span class="cx">                                 078E094417D16E1C00420AA1 /* RTCSessionDescriptionRequest.h in Headers */,
</span><span class="lines">@@ -27924,7 +28079,6 @@
</span><span class="cx">                                 BC8B854B0E7C7F5600AB6984 /* ScrollbarTheme.h in Headers */,
</span><span class="cx">                                 BC14028B0E83680800319717 /* ScrollbarThemeComposite.h in Headers */,
</span><span class="cx">                                 44C991860F3D1EBE00586670 /* ScrollbarThemeIOS.h in Headers */,
</span><del>-                                7C83DE861D04CC5D00FEBCF3 /* SpringSolver.h in Headers */,
</del><span class="cx">                                 BC8B853E0E7C7F1100AB6984 /* ScrollbarThemeMac.h in Headers */,
</span><span class="cx">                                 0FE71406142170B800DB33BA /* ScrollbarThemeMock.h in Headers */,
</span><span class="cx">                                 5D925B680F64D4DD00B847F0 /* ScrollBehavior.h in Headers */,
</span><span class="lines">@@ -28018,6 +28172,7 @@
</span><span class="cx">                                 4B6FA6F40C39E48C00087011 /* SmartReplace.h in Headers */,
</span><span class="cx">                                 E4AFD00C0DAF335400F5F55C /* SMILTime.h in Headers */,
</span><span class="cx">                                 E4AFD00E0DAF335500F5F55C /* SMILTimeContainer.h in Headers */,
</span><ins>+                                5C7C88D81D0F1F4A009D2F6D /* SocketProvider.h in Headers */,
</ins><span class="cx">                                 51ABAE1B103C18FF008C5260 /* SocketStreamError.h in Headers */,
</span><span class="cx">                                 510D4A34103165EE0049EA54 /* SocketStreamErrorBase.h in Headers */,
</span><span class="cx">                                 51ABAE1E103C1913008C5260 /* SocketStreamHandle.h in Headers */,
</span><span class="lines">@@ -28047,6 +28202,7 @@
</span><span class="cx">                                 93309E14099E64920056E581 /* SplitTextNodeCommand.h in Headers */,
</span><span class="cx">                                 93309E16099E64920056E581 /* SplitTextNodeContainingElementCommand.h in Headers */,
</span><span class="cx">                                 84730D931248F0B300D3A9C9 /* SpotLightSource.h in Headers */,
</span><ins>+                                7C83DE861D04CC5D00FEBCF3 /* SpringSolver.h in Headers */,
</ins><span class="cx">                                 97BC6A3B1505F081001B74AC /* SQLCallbackWrapper.h in Headers */,
</span><span class="cx">                                 97BC6A3C1505F081001B74AC /* SQLError.h in Headers */,
</span><span class="cx">                                 97BC6A3F1505F081001B74AC /* SQLException.h in Headers */,
</span><span class="lines">@@ -28132,7 +28288,6 @@
</span><span class="cx">                                 A8EA800C0A19516E00A8EF5F /* StyleSheet.h in Headers */,
</span><span class="cx">                                 E4F9EEF3156DA00700D23E7E /* StyleSheetContents.h in Headers */,
</span><span class="cx">                                 A8EA800A0A19516E00A8EF5F /* StyleSheetList.h in Headers */,
</span><del>-                                71C916081D1483A300ACA47D /* UserInterfaceLayoutDirection.h in Headers */,
</del><span class="cx">                                 BC5EB5E50E81BF6D00B25965 /* StyleSurroundData.h in Headers */,
</span><span class="cx">                                 BC5EB8100E81F2CE00B25965 /* StyleTransformData.h in Headers */,
</span><span class="cx">                                 E4DEAA1817A93DC3000E0430 /* StyleTreeResolver.h in Headers */,
</span><span class="lines">@@ -28143,7 +28298,9 @@
</span><span class="cx">                                 F55B3DD41251F12D003EF269 /* SubmitInputType.h in Headers */,
</span><span class="cx">                                 656D37480ADBA5DE00A4554D /* SubresourceLoader.h in Headers */,
</span><span class="cx">                                 659A7D130B6DB4D9001155B3 /* SubstituteData.h in Headers */,
</span><ins>+                                1AE96A931D1A0DDD00B86768 /* JSApplePayShippingMethodSelectedEvent.h in Headers */,
</ins><span class="cx">                                 1A8F6B020DB53006001DB794 /* SubstituteResource.h in Headers */,
</span><ins>+                                1AE96A8B1D1A0DDD00B86768 /* JSApplePayPaymentAuthorizedEvent.h in Headers */,
</ins><span class="cx">                                 E1FF8F601807442100132674 /* SubtleCrypto.h in Headers */,
</span><span class="cx">                                 93B2D8160F9920D2006AE6B2 /* SuddenTermination.h in Headers */,
</span><span class="cx">                                 97C078501165D5BE003A32EF /* SuffixTree.h in Headers */,
</span><span class="lines">@@ -28175,7 +28332,6 @@
</span><span class="cx">                                 08FE0BC5127E2AC1000C4FB5 /* SVGAnimatedPreserveAspectRatio.h in Headers */,
</span><span class="cx">                                 088A0E05126EF1DB00978F7A /* SVGAnimatedProperty.h in Headers */,
</span><span class="cx">                                 088A0E06126EF1DB00978F7A /* SVGAnimatedPropertyDescription.h in Headers */,
</span><del>-                                5C7C88D81D0F1F4A009D2F6D /* SocketProvider.h in Headers */,
</del><span class="cx">                                 088A0E07126EF1DB00978F7A /* SVGAnimatedPropertyMacros.h in Headers */,
</span><span class="cx">                                 088A0E08126EF1DB00978F7A /* SVGAnimatedPropertyTearOff.h in Headers */,
</span><span class="cx">                                 08C859C01274575400A5728D /* SVGAnimatedRect.h in Headers */,
</span><span class="lines">@@ -28193,7 +28349,6 @@
</span><span class="cx">                                 439D334513A6911C00C20F4F /* SVGAnimatorFactory.h in Headers */,
</span><span class="cx">                                 08FB3F8413BC754C0099FC18 /* SVGAttributeToPropertyMap.h in Headers */,
</span><span class="cx">                                 B222799C0D00BF220071B782 /* SVGCircleElement.h in Headers */,
</span><del>-                                262EC41A1D078FB900BA78FC /* EventTrackingRegions.h in Headers */,
</del><span class="cx">                                 B222799F0D00BF220071B782 /* SVGClipPathElement.h in Headers */,
</span><span class="cx">                                 B22279A20D00BF220071B782 /* SVGColor.h in Headers */,
</span><span class="cx">                                 B22279A50D00BF220071B782 /* SVGComponentTransferFunctionElement.h in Headers */,
</span><span class="lines">@@ -28217,7 +28372,6 @@
</span><span class="cx">                                 B22279D40D00BF220071B782 /* SVGFEDiffuseLightingElement.h in Headers */,
</span><span class="cx">                                 B22279D70D00BF220071B782 /* SVGFEDisplacementMapElement.h in Headers */,
</span><span class="cx">                                 B22279DA0D00BF220071B782 /* SVGFEDistantLightElement.h in Headers */,
</span><del>-                                1A250E0D1CDD632000D0BE63 /* LinkIconType.h in Headers */,
</del><span class="cx">                                 4358E8861360A33B00E4748C /* SVGFEDropShadowElement.h in Headers */,
</span><span class="cx">                                 B22279DD0D00BF220071B782 /* SVGFEFloodElement.h in Headers */,
</span><span class="cx">                                 B22279E00D00BF220071B782 /* SVGFEFuncAElement.h in Headers */,
</span><span class="lines">@@ -28264,7 +28418,6 @@
</span><span class="cx">                                 0854B0211255E4E600B9CDD0 /* SVGInlineTextBox.h in Headers */,
</span><span class="cx">                                 B2227A300D00BF220071B782 /* SVGLangSpace.h in Headers */,
</span><span class="cx">                                 B2227A330D00BF220071B782 /* SVGLength.h in Headers */,
</span><del>-                                836DAA061CEAB80D00A2B707 /* RenderDescendantIterator.h in Headers */,
</del><span class="cx">                                 7134496E146941B300720312 /* SVGLengthContext.h in Headers */,
</span><span class="cx">                                 B2227A360D00BF220071B782 /* SVGLengthList.h in Headers */,
</span><span class="cx">                                 B2227A390D00BF220071B782 /* SVGLinearGradientElement.h in Headers */,
</span><span class="lines">@@ -28293,6 +28446,7 @@
</span><span class="cx">                                 71537A01146BD9D7008BD615 /* SVGPathData.h in Headers */,
</span><span class="cx">                                 B2227A590D00BF220071B782 /* SVGPathElement.h in Headers */,
</span><span class="cx">                                 8476C9F011DF6A5800555B02 /* SVGPathParser.h in Headers */,
</span><ins>+                                1AE96A8F1D1A0DDD00B86768 /* JSApplePaySession.h in Headers */,
</ins><span class="cx">                                 B2227A5B0D00BF220071B782 /* SVGPathSeg.h in Headers */,
</span><span class="cx">                                 B2227A5E0D00BF220071B782 /* SVGPathSegArc.h in Headers */,
</span><span class="cx">                                 83C1D425178D5AB400141E68 /* SVGPathSegArcAbs.h in Headers */,
</span><span class="lines">@@ -28316,7 +28470,6 @@
</span><span class="cx">                                 83C1D432178D5AB500141E68 /* SVGPathSegLinetoRel.h in Headers */,
</span><span class="cx">                                 B2227A7D0D00BF220071B782 /* SVGPathSegLinetoVertical.h in Headers */,
</span><span class="cx">                                 83C1D433178D5AB500141E68 /* SVGPathSegLinetoVerticalAbs.h in Headers */,
</span><del>-                                CBC2D2301CE5B8A100D1880B /* ResourceTimingInformation.h in Headers */,
</del><span class="cx">                                 83C1D434178D5AB500141E68 /* SVGPathSegLinetoVerticalRel.h in Headers */,
</span><span class="cx">                                 B2227A810D00BF220071B782 /* SVGPathSegList.h in Headers */,
</span><span class="cx">                                 8476C9E611DF6A0B00555B02 /* SVGPathSegListBuilder.h in Headers */,
</span><span class="lines">@@ -28358,7 +28511,6 @@
</span><span class="cx">                                 E4AFD0100DAF335500F5F55C /* SVGSMILElement.h in Headers */,
</span><span class="cx">                                 0880F70E1282B46D00948505 /* SVGStaticListPropertyTearOff.h in Headers */,
</span><span class="cx">                                 0813A4EA1284132600992511 /* SVGStaticPropertyTearOff.h in Headers */,
</span><del>-                                41AD753A1CEF6BD100A31486 /* FetchOptions.h in Headers */,
</del><span class="cx">                                 B2227AA90D00BF220071B782 /* SVGStopElement.h in Headers */,
</span><span class="cx">                                 B2227AAC0D00BF220071B782 /* SVGStringList.h in Headers */,
</span><span class="cx">                                 B2227AB80D00BF220071B782 /* SVGStyleElement.h in Headers */,
</span><span class="lines">@@ -28488,7 +28640,6 @@
</span><span class="cx">                                 498770F31242C535002226BA /* TilingData.h in Headers */,
</span><span class="cx">                                 F55B3DDC1251F12D003EF269 /* TimeInputType.h in Headers */,
</span><span class="cx">                                 7553CFE8108F473F00EA281E /* TimelineRecordFactory.h in Headers */,
</span><del>-                                515F79541CFCA3D500CCED93 /* WebCoreCrossThreadCopier.h in Headers */,
</del><span class="cx">                                 9305B24D098F1B6B00C28855 /* Timer.h in Headers */,
</span><span class="cx">                                 E44613B00CD6331000FADA75 /* TimeRanges.h in Headers */,
</span><span class="cx">                                 2D7ED0AB1BAE99170043B3E5 /* TimerEventBasedMock.h in Headers */,
</span><span class="lines">@@ -28546,6 +28697,7 @@
</span><span class="cx">                                 BCACF3BD1072921A00C0C8A3 /* UserContentURLPattern.h in Headers */,
</span><span class="cx">                                 2542F4DB1166C25A00E89A86 /* UserGestureIndicator.h in Headers */,
</span><span class="cx">                                 9920398318B95BC600B39AF9 /* UserInputBridge.h in Headers */,
</span><ins>+                                71C916081D1483A300ACA47D /* UserInterfaceLayoutDirection.h in Headers */,
</ins><span class="cx">                                 078E092E17D14D1C00420AA1 /* UserMediaClient.h in Headers */,
</span><span class="cx">                                 078E092F17D14D1C00420AA1 /* UserMediaController.h in Headers */,
</span><span class="cx">                                 07297FA81C1881C5003F0735 /* UserMediaPermissionCheck.h in Headers */,
</span><span class="lines">@@ -28564,7 +28716,6 @@
</span><span class="cx">                                 7C74D43C1882400400E5ED57 /* UTextProviderUTF16.h in Headers */,
</span><span class="cx">                                 1FAFBF1915A5FA7400083A20 /* UTIUtilities.h in Headers */,
</span><span class="cx">                                 2E3BBF081162DA1100B9409A /* UUID.h in Headers */,
</span><del>-                                838867351D13BA5F003697D0 /* RenderObjectEnums.h in Headers */,
</del><span class="cx">                                 F5A154281279534D00D0B0C0 /* ValidationMessage.h in Headers */,
</span><span class="cx">                                 F513A3EA15FF4841001526DB /* ValidationMessageClient.h in Headers */,
</span><span class="cx">                                 15C7708D100D3C6B005BA267 /* ValidityState.h in Headers */,
</span><span class="lines">@@ -28616,6 +28767,7 @@
</span><span class="cx">                                 A56C5B9B189F34570082D13C /* WebConsoleAgent.h in Headers */,
</span><span class="cx">                                 419BE7591BC7F42B00E1C85B /* WebCoreBuiltinNames.h in Headers */,
</span><span class="cx">                                 2D3EF44A1917915C00034184 /* WebCoreCALayerExtras.h in Headers */,
</span><ins>+                                515F79541CFCA3D500CCED93 /* WebCoreCrossThreadCopier.h in Headers */,
</ins><span class="cx">                                 93F199A808245E59001E9ABC /* WebCoreFrameView.h in Headers */,
</span><span class="cx">                                 CDC69DDA16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.h in Headers */,
</span><span class="cx">                                 CDC69DD61632026C007C38DF /* WebCoreFullScreenWarningView.h in Headers */,
</span><span class="lines">@@ -28945,6 +29097,8 @@
</span><span class="cx">                         isa = PBXResourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                2D50A4B71CE10E0000198049 /* AttachmentPlaceholder.png in Resources */,
+                                2D50A4B81CE10E0000198049 /* AttachmentPlaceholder@2x.png in Resources */,
</ins><span class="cx">                                 A11E8C051B1E28F40003A7C7 /* copyCursor.png in Resources */,
</span><span class="cx">                                 D02B64B214089E56006EFA21 /* DictationPhraseWithAlternativesDot.png in Resources */,
</span><span class="cx">                                 D02B64B314089E56006EFA21 /* DictationPhraseWithAlternativesDot@2x.png in Resources */,
</span><span class="lines">@@ -28953,7 +29107,6 @@
</span><span class="cx">                                 BCAD180A131C7A0D00990406 /* Localizable.strings in Resources */,
</span><span class="cx">                                 311C08BD18EB7CAF00B65615 /* mediaControlsApple.css in Resources */,
</span><span class="cx">                                 311C08BE18EB7CAF00B65615 /* mediaControlsApple.js in Resources */,
</span><del>-                                2D50A4B71CE10E0000198049 /* AttachmentPlaceholder.png in Resources */,
</del><span class="cx">                                 311C08BF18EB7CAF00B65615 /* mediaControlsiOS.css in Resources */,
</span><span class="cx">                                 311C08C018EB7CAF00B65615 /* mediaControlsiOS.js in Resources */,
</span><span class="cx">                                 7A1D7FCB18F85F0F00C385AD /* mediaControlsLocalizedStrings.js in Resources */,
</span><span class="lines">@@ -28965,7 +29118,6 @@
</span><span class="cx">                                 A11E8C081B1E29020003A7C7 /* northSouthResizeCursor.png in Resources */,
</span><span class="cx">                                 A11E8C091B1E29070003A7C7 /* northWestSouthEastResizeCursor.png in Resources */,
</span><span class="cx">                                 BE8C753110681324001E93F5 /* SpellingDot.png in Resources */,
</span><del>-                                2D50A4B81CE10E0000198049 /* AttachmentPlaceholder@2x.png in Resources */,
</del><span class="cx">                                 01E6C2E41194B2820050821C /* SpellingDot@2x.png in Resources */,
</span><span class="cx">                                 1C2417BA1992C04100EF9938 /* SpellingDot@3x.png in Resources */,
</span><span class="cx">                                 93153BDC141959BC00FCF5BE /* textAreaResizeCorner.png in Resources */,
</span><span class="lines">@@ -29072,18 +29224,18 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                51714EAC1CF65951004723C4 /* GCObservation.cpp in Sources */,
</ins><span class="cx">                                 417DA6D913734E6E007C57FB /* Internals.cpp in Sources */,
</span><span class="cx">                                 E179F0DA1B9774FE00ED0A27 /* Internals.mm in Sources */,
</span><span class="cx">                                 A7BF7EDF14C9175A0014489D /* InternalSettings.cpp in Sources */,
</span><span class="cx">                                 53E29E5E167A8A1900586D3D /* InternalSettingsGenerated.cpp in Sources */,
</span><ins>+                                51714EB01CF665CE004723C4 /* JSGCObservation.cpp in Sources */,
</ins><span class="cx">                                 417DA71D13735DFA007C57FB /* JSInternals.cpp in Sources */,
</span><span class="cx">                                 A740B5A714C935AF00A77FA4 /* JSInternalSettings.cpp in Sources */,
</span><del>-                                51714EAC1CF65951004723C4 /* GCObservation.cpp in Sources */,
</del><span class="cx">                                 53ED3FDE167A88E7006762E6 /* JSInternalSettingsGenerated.cpp in Sources */,
</span><span class="cx">                                 A740B59714C935AF00A77FA4 /* JSMallocStatistics.cpp in Sources */,
</span><span class="cx">                                 CD5393D3175E018600C07123 /* JSMemoryInfo.cpp in Sources */,
</span><span class="cx">                                 A19AEA221AAA808A00B52B25 /* JSMockContentFilterSettings.cpp in Sources */,
</span><del>-                                51714EB01CF665CE004723C4 /* JSGCObservation.cpp in Sources */,
</del><span class="cx">                                 A1E5B31F1AAD1DA4006EBEFB /* JSMockContentFilterSettingsCustom.cpp in Sources */,
</span><span class="cx">                                 2D4150DE1C1F868C000A3BA2 /* JSMockPageOverlay.cpp in Sources */,
</span><span class="cx">                                 EBF5121C1696496C0056BD25 /* JSTypeConversions.cpp in Sources */,
</span><span class="lines">@@ -29107,6 +29259,7 @@
</span><span class="cx">                                 37F57ABB1A50727300876F98 /* AccessibilityARIAGridRow.cpp in Sources */,
</span><span class="cx">                                 2914E3071CAB5A440049966F /* AccessibilityAttachment.cpp in Sources */,
</span><span class="cx">                                 37F57ABC1A50727700876F98 /* AccessibilityImageMapLink.cpp in Sources */,
</span><ins>+                                F52A8FD71D0A8D0E0073CF42 /* AccessibilityLabel.cpp in Sources */,
</ins><span class="cx">                                 37F57ABD1A50727A00876F98 /* AccessibilityList.cpp in Sources */,
</span><span class="cx">                                 37F57ABE1A50727E00876F98 /* AccessibilityListBox.cpp in Sources */,
</span><span class="cx">                                 37F57ABF1A50728100876F98 /* AccessibilityListBoxOption.cpp in Sources */,
</span><span class="lines">@@ -29142,7 +29295,6 @@
</span><span class="cx">                                 CE7B2DB41586ABAD0098B3FA /* AlternativeTextUIController.mm in Sources */,
</span><span class="cx">                                 FD31603D12B0267600C1A359 /* AnalyserNode.cpp in Sources */,
</span><span class="cx">                                 31A795C81888BCB500382F90 /* ANGLEInstancedArrays.cpp in Sources */,
</span><del>-                                460BB6151D0A1BF000221812 /* Base64Utilities.cpp in Sources */,
</del><span class="cx">                                 490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */,
</span><span class="cx">                                 49E912AA0EFAC906009D0CAF /* Animation.cpp in Sources */,
</span><span class="cx">                                 316FE1110E6E1DA700BF6088 /* AnimationBase.cpp in Sources */,
</span><span class="lines">@@ -29151,6 +29303,12 @@
</span><span class="cx">                                 49E912AC0EFAC906009D0CAF /* AnimationList.cpp in Sources */,
</span><span class="cx">                                 1221E0631C02D623006A1A00 /* AnimationTimeline.cpp in Sources */,
</span><span class="cx">                                 93309DD6099E64920056E581 /* AppendNodeCommand.cpp in Sources */,
</span><ins>+                                1A8A64511D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.cpp in Sources */,
+                                1A8A64541D19FCFC00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp in Sources */,
+                                1A8A64581D19FCFC00D0E00F /* ApplePaySession.cpp in Sources */,
+                                1A8A645B1D19FCFC00D0E00F /* ApplePayShippingContactSelectedEvent.cpp in Sources */,
+                                1A8A645F1D19FCFC00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp in Sources */,
+                                1A8A64621D19FCFC00D0E00F /* ApplePayValidateMerchantEvent.cpp in Sources */,
</ins><span class="cx">                                 1A8F6BBC0DB55CDC001DB794 /* ApplicationCache.cpp in Sources */,
</span><span class="cx">                                 1A8F6BBE0DB55CDC001DB794 /* ApplicationCacheGroup.cpp in Sources */,
</span><span class="cx">                                 24F54EAC101FE914000AE741 /* ApplicationCacheHost.cpp in Sources */,
</span><span class="lines">@@ -29215,6 +29373,7 @@
</span><span class="cx">                                 A8CFF0500A154F09000A4234 /* AutoTableLayout.cpp in Sources */,
</span><span class="cx">                                 070363E1181A1CDC00C074A5 /* AVAudioCaptureSource.mm in Sources */,
</span><span class="cx">                                 070363E3181A1CDC00C074A5 /* AVCaptureDeviceManager.mm in Sources */,
</span><ins>+                                0719427F1D088F21002AA51D /* AVFoundationMIMETypeCache.mm in Sources */,
</ins><span class="cx">                                 070363E5181A1CDC00C074A5 /* AVMediaCaptureSource.mm in Sources */,
</span><span class="cx">                                 CD336F6117F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.mm in Sources */,
</span><span class="cx">                                 070363E7181A1CDC00C074A5 /* AVVideoCaptureSource.mm in Sources */,
</span><span class="lines">@@ -29225,6 +29384,7 @@
</span><span class="cx">                                 BCA8C81F11E3D36900812FB7 /* BackForwardController.cpp in Sources */,
</span><span class="cx">                                 BCA8CA5F11E4E6D100812FB7 /* BackForwardList.cpp in Sources */,
</span><span class="cx">                                 BC124EE70C2641CD009E2349 /* BarProp.cpp in Sources */,
</span><ins>+                                460BB6151D0A1BF000221812 /* Base64Utilities.cpp in Sources */,
</ins><span class="cx">                                 379E61C9126CA5C300B63E8D /* BaseButtonInputType.cpp in Sources */,
</span><span class="cx">                                 379E61CB126CA5C400B63E8D /* BaseCheckableInputType.cpp in Sources */,
</span><span class="cx">                                 F5E0C65B1643C42C00D6CB69 /* BaseChooserOnlyDateAndTimeInputType.cpp in Sources */,
</span><span class="lines">@@ -29312,7 +29472,6 @@
</span><span class="cx">                                 6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */,
</span><span class="cx">                                 9326DC0C09DAD5D600AFC847 /* CharsetData.cpp in Sources */,
</span><span class="cx">                                 F55B3DB11251F12D003EF269 /* CheckboxInputType.cpp in Sources */,
</span><del>-                                93F925440F7EF5B8007E37C9 /* RadioButtonGroups.cpp in Sources */,
</del><span class="cx">                                 D619A307144E00BE004BC302 /* ChildListMutationScope.cpp in Sources */,
</span><span class="cx">                                 A81872250977D3C0005826D9 /* ChildNodeList.cpp in Sources */,
</span><span class="cx">                                 14D8238B0AF92DF60004F057 /* Chrome.cpp in Sources */,
</span><span class="lines">@@ -29391,6 +29550,7 @@
</span><span class="cx">                                 E1B4CD2510B322E200BFFD7E /* CredentialStorageMac.mm in Sources */,
</span><span class="cx">                                 2D481F00146B5C4C00AA7834 /* CrossfadeGeneratedImage.cpp in Sources */,
</span><span class="cx">                                 E1C416170F6563180092D2FB /* CrossOriginAccessControl.cpp in Sources */,
</span><ins>+                                41ABE67C1D0580E0006D862D /* CrossOriginPreflightChecker.cpp in Sources */,
</ins><span class="cx">                                 E1C415DE0F655D7C0092D2FB /* CrossOriginPreflightResultCache.cpp in Sources */,
</span><span class="cx">                                 E16980491133644700894115 /* CRuntimeObject.cpp in Sources */,
</span><span class="cx">                                 975CA28A130365F800E99AD9 /* Crypto.cpp in Sources */,
</span><span class="lines">@@ -29455,6 +29615,7 @@
</span><span class="cx">                                 CD7DBB2818CA19A400C11066 /* CSSGridLineNamesValue.cpp in Sources */,
</span><span class="cx">                                 CD3E252318046BCD00E27F56 /* CSSGridTemplateAreasValue.cpp in Sources */,
</span><span class="cx">                                 FBF89045169E9F1F0052D86E /* CSSGroupingRule.cpp in Sources */,
</span><ins>+                                1AE96A9A1D1A100700B86768 /* JSApplePayShippingMethodSelectedEventCustom.cpp in Sources */,
</ins><span class="cx">                                 BC23E76C0DAE88A9009FDC91 /* CSSImageGeneratorValue.cpp in Sources */,
</span><span class="cx">                                 9393E5FF151A99F200066F06 /* CSSImageSetValue.cpp in Sources */,
</span><span class="cx">                                 A80E6CFE0A1989CA007FB8C5 /* CSSImageValue.cpp in Sources */,
</span><span class="lines">@@ -29668,7 +29829,6 @@
</span><span class="cx">                                 85DF2C5D0AA341F600AD64C5 /* DOMHTMLFormElement.mm in Sources */,
</span><span class="cx">                                 85DF81960AA77E4B00486AD7 /* DOMHTMLFrameElement.mm in Sources */,
</span><span class="cx">                                 85DF81980AA77E4B00486AD7 /* DOMHTMLFrameSetElement.mm in Sources */,
</span><del>-                                83A4A9F91CE7FD8100709B00 /* JSXMLDocumentCustom.cpp in Sources */,
</del><span class="cx">                                 85992EBB0AA5069500AC0785 /* DOMHTMLHeadElement.mm in Sources */,
</span><span class="cx">                                 85183B450AA6926100F19FA3 /* DOMHTMLHeadingElement.mm in Sources */,
</span><span class="cx">                                 85ECBEF20AA7626900544F0B /* DOMHTMLHRElement.mm in Sources */,
</span><span class="lines">@@ -29761,12 +29921,12 @@
</span><span class="cx">                                 15FCC9FC1B4DF7F200E72326 /* DOMURLMediaStream.cpp in Sources */,
</span><span class="cx">                                 BC1A37BF097C715F0019F3D8 /* DOMUtility.mm in Sources */,
</span><span class="cx">                                 15C770A5100D41CD005BA267 /* DOMValidityState.mm in Sources */,
</span><del>-                                41ABE67C1D0580E0006D862D /* CrossOriginPreflightChecker.cpp in Sources */,
</del><span class="cx">                                 31C0FF4A0E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.mm in Sources */,
</span><span class="cx">                                 3106037A143281CD00ABF4BA /* DOMWebKitCSSFilterValue.mm in Sources */,
</span><span class="cx">                                 498391510F1E76B400C23782 /* DOMWebKitCSSMatrix.mm in Sources */,
</span><span class="cx">                                 8AD0A59714C88358000D83C5 /* DOMWebKitCSSRegionRule.mm in Sources */,
</span><span class="cx">                                 31611E620E1C4E1400F6A579 /* DOMWebKitCSSTransformValue.mm in Sources */,
</span><ins>+                                1AE96A981D1A100700B86768 /* JSApplePaySessionCustom.cpp in Sources */,
</ins><span class="cx">                                 3F2B33EC165AF15600E3987C /* DOMWebKitCSSViewportRule.mm in Sources */,
</span><span class="cx">                                 8A195933147EA16E00D1EA61 /* DOMWebKitNamedFlow.mm in Sources */,
</span><span class="cx">                                 31C0FF4D0E4CEFDD007D6FE5 /* DOMWebKitTransitionEvent.mm in Sources */,
</span><span class="lines">@@ -29818,7 +29978,6 @@
</span><span class="cx">                                 FE6938B61045D67E008EABB6 /* EventHandlerIOS.mm in Sources */,
</span><span class="cx">                                 93C09A7F0B064EEF005ABD4D /* EventHandlerMac.mm in Sources */,
</span><span class="cx">                                 AD4495F3141FC08900541EDF /* EventListenerMap.cpp in Sources */,
</span><del>-                                F52A8FD71D0A8D0E0073CF42 /* AccessibilityLabel.cpp in Sources */,
</del><span class="cx">                                 C400D10918F1C8F60090D863 /* EventLoopInput.cpp in Sources */,
</span><span class="cx">                                 99CC0B5018BE9849006CEBCC /* EventLoopInputDispatcher.cpp in Sources */,
</span><span class="cx">                                 26F40D4A14904A6300CA67C4 /* EventLoopIOS.mm in Sources */,
</span><span class="lines">@@ -29865,7 +30024,6 @@
</span><span class="cx">                                 84730D8C1248F0B300D3A9C9 /* FETurbulence.cpp in Sources */,
</span><span class="cx">                                 FD31609412B026F700C1A359 /* FFTConvolver.cpp in Sources */,
</span><span class="cx">                                 FD31609612B026F700C1A359 /* FFTFrame.cpp in Sources */,
</span><del>-                                1A58E8671D19D80E00C0EA73 /* PaymentRequest.cpp in Sources */,
</del><span class="cx">                                 FD3160C012B0272A00C1A359 /* FFTFrameMac.cpp in Sources */,
</span><span class="cx">                                 976D6C80122B8A3D001FD1F7 /* File.cpp in Sources */,
</span><span class="cx">                                 934FE9E50B5CA539003E4A73 /* FileChooser.cpp in Sources */,
</span><span class="lines">@@ -29961,6 +30119,7 @@
</span><span class="cx">                                 4FB390AD15EF61F3007AD51F /* GeneratedImage.cpp in Sources */,
</span><span class="cx">                                 830030F51B7D33B500ED3AAC /* GenericCachedHTMLCollection.cpp in Sources */,
</span><span class="cx">                                 0720B0A014D3323500642955 /* GenericEventQueue.cpp in Sources */,
</span><ins>+                                CD4BE52A1CE136EF009D87DA /* GenericTaskQueue.cpp in Sources */,
</ins><span class="cx">                                 9746AF2314F4DDE6003E7A70 /* Geolocation.cpp in Sources */,
</span><span class="cx">                                 9746AF2614F4DDE6003E7A70 /* GeolocationController.cpp in Sources */,
</span><span class="cx">                                 0FB6252E18DE1B1500A07C05 /* GeometryUtilities.cpp in Sources */,
</span><span class="lines">@@ -30147,6 +30306,7 @@
</span><span class="cx">                                 5185FC961BB4C4E80012898F /* IDBKeyData.cpp in Sources */,
</span><span class="cx">                                 5185FC981BB4C4E80012898F /* IDBKeyPath.cpp in Sources */,
</span><span class="cx">                                 5185FC9A1BB4C4E80012898F /* IDBKeyRange.cpp in Sources */,
</span><ins>+                                1AE96A8A1D1A0DDD00B86768 /* JSApplePayPaymentAuthorizedEvent.cpp in Sources */,
</ins><span class="cx">                                 5185FC9D1BB4C4E80012898F /* IDBKeyRangeData.cpp in Sources */,
</span><span class="cx">                                 5185FC9F1BB4C4E80012898F /* IDBObjectStore.cpp in Sources */,
</span><span class="cx">                                 5160712E1BD8307800DBC4F2 /* IDBObjectStoreInfo.cpp in Sources */,
</span><span class="lines">@@ -30196,7 +30356,6 @@
</span><span class="cx">                                 DB23C2CB0A508D29002489EB /* IndentOutdentCommand.cpp in Sources */,
</span><span class="cx">                                 517138EF1BED1D1A000D5F01 /* IndexKey.cpp in Sources */,
</span><span class="cx">                                 51EEAA731BEFFAB100218008 /* IndexValueEntry.cpp in Sources */,
</span><del>-                                836C14431CDEAFD80073493F /* JSXPathNSResolverCustom.cpp in Sources */,
</del><span class="cx">                                 517138F71BF128BB000D5F01 /* IndexValueStore.cpp in Sources */,
</span><span class="cx">                                 A8CFF5E60A155A05000A4234 /* InlineBox.cpp in Sources */,
</span><span class="cx">                                 B57CB52D182A3EED0079A647 /* InlineElementBox.cpp in Sources */,
</span><span class="lines">@@ -30215,7 +30374,6 @@
</span><span class="cx">                                 93309DEF099E64920056E581 /* InsertParagraphSeparatorCommand.cpp in Sources */,
</span><span class="cx">                                 93309DF1099E64920056E581 /* InsertTextCommand.cpp in Sources */,
</span><span class="cx">                                 B885E8D411E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp in Sources */,
</span><del>-                                838869EC1CE81EA300D16A9E /* JSTextCustom.cpp in Sources */,
</del><span class="cx">                                 7A1F2B52126C61B20006A7E6 /* InspectorClient.cpp in Sources */,
</span><span class="cx">                                 1C81B95B0E97330800266E07 /* InspectorController.cpp in Sources */,
</span><span class="cx">                                 82AB1743124B99EC00C5069D /* InspectorCSSAgent.cpp in Sources */,
</span><span class="lines">@@ -30238,7 +30396,6 @@
</span><span class="cx">                                 7C522D4B15B477E8009B7C95 /* InspectorOverlay.cpp in Sources */,
</span><span class="cx">                                 4F6FDD641341DEDD001F8EE3 /* InspectorPageAgent.cpp in Sources */,
</span><span class="cx">                                 99CC0B6618BE9F15006CEBCC /* InspectorReplayAgent.cpp in Sources */,
</span><del>-                                A56D02A31D0BAD680095E5D3 /* JSErrorEventCustom.cpp in Sources */,
</del><span class="cx">                                 82AB1773125C826700C5069D /* InspectorStyleSheet.cpp in Sources */,
</span><span class="cx">                                 754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */,
</span><span class="cx">                                 F350B73513F1377D00880C43 /* InstrumentingAgents.cpp in Sources */,
</span><span class="lines">@@ -30404,6 +30561,7 @@
</span><span class="cx">                                 65DF31F909D1CC60000BE325 /* JSElement.cpp in Sources */,
</span><span class="cx">                                 BC2ED5550C6B9BD300920BFF /* JSElementCustom.cpp in Sources */,
</span><span class="cx">                                 2ECF7ADC10162B3800427DE7 /* JSErrorEvent.cpp in Sources */,
</span><ins>+                                A56D02A31D0BAD680095E5D3 /* JSErrorEventCustom.cpp in Sources */,
</ins><span class="cx">                                 F3D461481161D53200CA0D09 /* JSErrorHandler.cpp in Sources */,
</span><span class="cx">                                 14E8378409F85D1C00B85AE4 /* JSEvent.cpp in Sources */,
</span><span class="cx">                                 BCEFAF4E0C317E6900FA81F6 /* JSEventCustom.cpp in Sources */,
</span><span class="lines">@@ -30486,6 +30644,8 @@
</span><span class="cx">                                 BC926F800C0552470082776B /* JSHTMLFrameSetElement.cpp in Sources */,
</span><span class="cx">                                 BCD41ABB0C060DE800C0E446 /* JSHTMLFrameSetElementCustom.cpp in Sources */,
</span><span class="cx">                                 A80E7B140A19D606007FB8C5 /* JSHTMLHeadElement.cpp in Sources */,
</span><ins>+                                1AE96A921D1A0DDD00B86768 /* JSApplePayShippingMethodSelectedEvent.cpp in Sources */,
+                                1AE96A901D1A0DDD00B86768 /* JSApplePayShippingContactSelectedEvent.cpp in Sources */,
</ins><span class="cx">                                 1AE2AA2E0A1CDAB400B42B25 /* JSHTMLHeadingElement.cpp in Sources */,
</span><span class="cx">                                 1AE2AA300A1CDAB400B42B25 /* JSHTMLHRElement.cpp in Sources */,
</span><span class="cx">                                 1A85B18F0A1B18A200D8C87C /* JSHTMLHtmlElement.cpp in Sources */,
</span><span class="lines">@@ -30615,6 +30775,7 @@
</span><span class="cx">                                 65DF31FB09D1CC60000BE325 /* JSMutationEvent.cpp in Sources */,
</span><span class="cx">                                 C6F0902C14327D4F00685849 /* JSMutationObserver.cpp in Sources */,
</span><span class="cx">                                 C6F0917F143A2BB900685849 /* JSMutationObserverCustom.cpp in Sources */,
</span><ins>+                                1AE96A8C1D1A0DDD00B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp in Sources */,
</ins><span class="cx">                                 C6F08FC91431000D00685849 /* JSMutationRecord.cpp in Sources */,
</span><span class="cx">                                 BCD9C2C00C17B69E005C90A2 /* JSNamedNodeMap.cpp in Sources */,
</span><span class="cx">                                 BCD9C2630C17AA67005C90A2 /* JSNamedNodeMapCustom.cpp in Sources */,
</span><span class="lines">@@ -30671,6 +30832,7 @@
</span><span class="cx">                                 4129DF851BB5B80700322A16 /* JSReadableStreamPrivateConstructors.cpp in Sources */,
</span><span class="cx">                                 7C4C96DE1AD4483500365A50 /* JSReadableStreamReader.cpp in Sources */,
</span><span class="cx">                                 7E4C96DC1AD4483500365A51 /* JSReadableStreamSource.cpp in Sources */,
</span><ins>+                                1AE96A8E1D1A0DDD00B86768 /* JSApplePaySession.cpp in Sources */,
</ins><span class="cx">                                 418C39601C8F0AAE0051C8A3 /* JSReadableStreamSourceCustom.cpp in Sources */,
</span><span class="cx">                                 BCFE2F110C1B58370020235F /* JSRect.cpp in Sources */,
</span><span class="cx">                                 4998AECD13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.cpp in Sources */,
</span><span class="lines">@@ -30870,6 +31032,7 @@
</span><span class="cx">                                 71DCB7011568197600862271 /* JSSVGZoomAndPan.cpp in Sources */,
</span><span class="cx">                                 B2FA3E180AB75A6F000E5AC4 /* JSSVGZoomEvent.cpp in Sources */,
</span><span class="cx">                                 65DF320309D1CC60000BE325 /* JSText.cpp in Sources */,
</span><ins>+                                838869EC1CE81EA300D16A9E /* JSTextCustom.cpp in Sources */,
</ins><span class="cx">                                 933A14B80B7D1D5200A53FFD /* JSTextEvent.cpp in Sources */,
</span><span class="cx">                                 BCEF45F50E687B5C001C1287 /* JSTextMetrics.cpp in Sources */,
</span><span class="cx">                                 070756941422668D00414161 /* JSTextTrack.cpp in Sources */,
</span><span class="lines">@@ -30959,6 +31122,7 @@
</span><span class="cx">                                 E1271A590EEECDE400F61213 /* JSWorkerNavigator.cpp in Sources */,
</span><span class="cx">                                 7C4C96DC1AD4483500365A60 /* JSWritableStream.cpp in Sources */,
</span><span class="cx">                                 8358CB6F1C53277200E0C2D8 /* JSXMLDocument.cpp in Sources */,
</span><ins>+                                83A4A9F91CE7FD8100709B00 /* JSXMLDocumentCustom.cpp in Sources */,
</ins><span class="cx">                                 BC348BD30DB7F804004ABAB9 /* JSXMLHttpRequest.cpp in Sources */,
</span><span class="cx">                                 BC348BBE0DB7F531004ABAB9 /* JSXMLHttpRequestCustom.cpp in Sources */,
</span><span class="cx">                                 83D35AF11C718D9000F70D5A /* JSXMLHttpRequestEventTarget.cpp in Sources */,
</span><span class="lines">@@ -30969,6 +31133,7 @@
</span><span class="cx">                                 BC60DB490D2A3D1E00B9918F /* JSXPathException.cpp in Sources */,
</span><span class="cx">                                 1A762C750A074F2600989F5B /* JSXPathExpression.cpp in Sources */,
</span><span class="cx">                                 1A762C770A074F2600989F5B /* JSXPathNSResolver.cpp in Sources */,
</span><ins>+                                836C14431CDEAFD80073493F /* JSXPathNSResolverCustom.cpp in Sources */,
</ins><span class="cx">                                 1A762C790A074F2600989F5B /* JSXPathResult.cpp in Sources */,
</span><span class="cx">                                 A1C7FAA2133A5D3500D6732D /* JSXPathResultCustom.cpp in Sources */,
</span><span class="cx">                                 BCEFE1EA0DCA5F6400739219 /* JSXSLTProcessor.cpp in Sources */,
</span><span class="lines">@@ -31012,6 +31177,7 @@
</span><span class="cx">                                 FFB698CF183402BB00158A31 /* LineInfo.cpp in Sources */,
</span><span class="cx">                                 FFDBC048183D27B700407109 /* LineWidth.cpp in Sources */,
</span><span class="cx">                                 A7AD2F870EC89D07008AB002 /* LinkHash.cpp in Sources */,
</span><ins>+                                1A4DA4211CDD3A8300F4473C /* LinkIconCollector.cpp in Sources */,
</ins><span class="cx">                                 98CE4326129E00BD005821DC /* LinkLoader.cpp in Sources */,
</span><span class="cx">                                 985BB96D13A94058007A0B69 /* LinkRelAttribute.cpp in Sources */,
</span><span class="cx">                                 BC7FA6200D1F0CBD00DB22A9 /* LiveNodeList.cpp in Sources */,
</span><span class="lines">@@ -31044,6 +31210,7 @@
</span><span class="cx">                                 439046DF12DA25E17BAF80A2 /* MathMLOperatorDictionary.cpp in Sources */,
</span><span class="cx">                                 FED48390CED66C3255F72C59 /* MathMLSelectElement.cpp in Sources */,
</span><span class="cx">                                 FA654A6B1108ABED002615E0 /* MathMLTextElement.cpp in Sources */,
</span><ins>+                                439046E912DA25E812AF80AC /* MathOperator.cpp in Sources */,
</ins><span class="cx">                                 49D5DC2B0F423A73008F20FD /* Matrix3DTransformOperation.cpp in Sources */,
</span><span class="cx">                                 49E911C60EF86D47009D0CAF /* MatrixTransformOperation.cpp in Sources */,
</span><span class="cx">                                 5CBC8DAC1AAA302200E1C803 /* MediaAccessibilitySoftLink.cpp in Sources */,
</span><span class="lines">@@ -31052,12 +31219,12 @@
</span><span class="cx">                                 417253AA1354BBBC00360F2A /* MediaControlElements.cpp in Sources */,
</span><span class="cx">                                 DEBCCDD516646EB200A452E1 /* MediaControlElementTypes.cpp in Sources */,
</span><span class="cx">                                 CD27F6E7145770D30078207D /* MediaController.cpp in Sources */,
</span><del>-                                5E5E2B131CFC3E70000C0D85 /* RTCRtpTransceiver.cpp in Sources */,
</del><span class="cx">                                 1F3C3BEA135CAF3C00B8C1AC /* MediaControls.cpp in Sources */,
</span><span class="cx">                                 4157AF8112F1FB0400A8C6F5 /* MediaControlsApple.cpp in Sources */,
</span><span class="cx">                                 CDAB6D2817C7DE6C00C60B34 /* MediaControlsHost.cpp in Sources */,
</span><span class="cx">                                 159AE82B1B3A402F0037478B /* MediaDeviceInfo.cpp in Sources */,
</span><span class="cx">                                 5EA725D21ACABD4700EAD17B /* MediaDevices.cpp in Sources */,
</span><ins>+                                1AE96A971D1A100700B86768 /* JSApplePayPaymentMethodSelectedEventCustom.cpp in Sources */,
</ins><span class="cx">                                 07394EC81BAB2CCD00BE99CD /* MediaDevicesRequest.cpp in Sources */,
</span><span class="cx">                                 97205AB71239291000B17380 /* MediaDocument.cpp in Sources */,
</span><span class="cx">                                 FD6F252C13F5EF0E0065165F /* MediaElementAudioSourceNode.cpp in Sources */,
</span><span class="lines">@@ -31065,6 +31232,7 @@
</span><span class="cx">                                 5EBB89341C77782900C65D41 /* MediaEndpoint.cpp in Sources */,
</span><span class="cx">                                 5EBB89361C77782900C65D41 /* MediaEndpointConfiguration.cpp in Sources */,
</span><span class="cx">                                 5E16A2E51BFA650F0029A21E /* MediaEndpointPeerConnection.cpp in Sources */,
</span><ins>+                                5E4EAB051D07166E0006A184 /* MediaEndpointSessionDescription.cpp in Sources */,
</ins><span class="cx">                                 4E1959210A39DABA00220FE5 /* MediaFeatureNames.cpp in Sources */,
</span><span class="cx">                                 07A6D1EB1491137700051D0C /* MediaFragmentURIParser.cpp in Sources */,
</span><span class="cx">                                 CDB859F7160D48A400E5B07F /* MediaKeyEvent.cpp in Sources */,
</span><span class="lines">@@ -31256,6 +31424,12 @@
</span><span class="cx">                                 2D5002FB1B56D7990020AAF7 /* PathUtilities.cpp in Sources */,
</span><span class="cx">                                 A8FA6E5E0E4CFDED00D5CF49 /* Pattern.cpp in Sources */,
</span><span class="cx">                                 A80A38FE0E50CC8200A25EBC /* PatternCG.cpp in Sources */,
</span><ins>+                                1A8A646C1D19FF8700D0E00F /* PaymentCocoa.mm in Sources */,
+                                1A8A646D1D19FF8700D0E00F /* PaymentContactCocoa.mm in Sources */,
+                                1A58E86D1D19E42D00C0EA73 /* PaymentCoordinator.cpp in Sources */,
+                                1A8A646E1D19FF8700D0E00F /* PaymentMethodCocoa.mm in Sources */,
+                                1A58E8671D19D80E00C0EA73 /* PaymentRequest.cpp in Sources */,
+                                1A8A64671D19FDFF00D0E00F /* PaymentRequestValidator.cpp in Sources */,
</ins><span class="cx">                                 B27535640B053814002CE64F /* PDFDocumentImage.cpp in Sources */,
</span><span class="cx">                                 2D6E468417D660F500ECF8BB /* PDFDocumentImageMac.mm in Sources */,
</span><span class="cx">                                 8A7CC97012076F8A001D4588 /* PendingScript.cpp in Sources */,
</span><span class="lines">@@ -31271,7 +31445,6 @@
</span><span class="cx">                                 CD7D33431C7A123F00041293 /* PixelBufferConformerCV.cpp in Sources */,
</span><span class="cx">                                 0FDF45A71BD1C6FD00E4FA8C /* PlatformCAAnimation.cpp in Sources */,
</span><span class="cx">                                 4958782112A57DDF007238AC /* PlatformCAAnimationCocoa.mm in Sources */,
</span><del>-                                1A58E86D1D19E42D00C0EA73 /* PaymentCoordinator.cpp in Sources */,
</del><span class="cx">                                 0F13164016ED0CDE0035CC04 /* PlatformCAFiltersCocoa.mm in Sources */,
</span><span class="cx">                                 2D70BA1518074F860001908A /* PlatformCALayer.cpp in Sources */,
</span><span class="cx">                                 4958782212A57DDF007238AC /* PlatformCALayerCocoa.mm in Sources */,
</span><span class="lines">@@ -31326,6 +31499,7 @@
</span><span class="cx">                                 072AE1E6183C0741000A5988 /* QuickTimePluginReplacement.mm in Sources */,
</span><span class="cx">                                 379E371613736A6600B9E919 /* QuotedPrintable.cpp in Sources */,
</span><span class="cx">                                 5A574F28131DB96D00471B88 /* QuotesData.cpp in Sources */,
</span><ins>+                                93F925440F7EF5B8007E37C9 /* RadioButtonGroups.cpp in Sources */,
</ins><span class="cx">                                 F55B3DCB1251F12D003EF269 /* RadioInputType.cpp in Sources */,
</span><span class="cx">                                 B658FFA51522EFAA00DD5595 /* RadioNodeList.cpp in Sources */,
</span><span class="cx">                                 93F19AB908245E59001E9ABC /* Range.cpp in Sources */,
</span><span class="lines">@@ -31400,7 +31574,6 @@
</span><span class="cx">                                 5B7A208D2E12979B4AE19DE6 /* RenderMathMLSpace.cpp in Sources */,
</span><span class="cx">                                 439046EB12DA25E800AF80A9 /* RenderMathMLToken.cpp in Sources */,
</span><span class="cx">                                 439046E912DA25E800AF80A2 /* RenderMathMLUnderOver.cpp in Sources */,
</span><del>-                                439046E912DA25E812AF80AC /* MathOperator.cpp in Sources */,
</del><span class="cx">                                 E4C279580CF9741900E97B98 /* RenderMedia.cpp in Sources */,
</span><span class="cx">                                 DE49B309165F2FE10010338D /* RenderMediaControlElements.cpp in Sources */,
</span><span class="cx">                                 41FA303E1316C29C00C0BFC5 /* RenderMediaControls.cpp in Sources */,
</span><span class="lines">@@ -31416,9 +31589,7 @@
</span><span class="cx">                                 5A574F24131DB93900471B88 /* RenderQuote.cpp in Sources */,
</span><span class="cx">                                 D70AD65713E1342B005B50B4 /* RenderRegion.cpp in Sources */,
</span><span class="cx">                                 BCE93F471517C6D5008CCF74 /* RenderRegionSet.cpp in Sources */,
</span><del>-                                515F79531CFCA3D000CCED93 /* WebCoreCrossThreadCopier.cpp in Sources */,
</del><span class="cx">                                 A871DFE20A15376B00B12A68 /* RenderReplaced.cpp in Sources */,
</span><del>-                                CD4BE52A1CE136EF009D87DA /* GenericTaskQueue.cpp in Sources */,
</del><span class="cx">                                 BCA846D60DC67A350026C309 /* RenderReplica.cpp in Sources */,
</span><span class="cx">                                 1479FAED109AE37500DED655 /* RenderRuby.cpp in Sources */,
</span><span class="cx">                                 1479FAEF109AE37500DED655 /* RenderRubyBase.cpp in Sources */,
</span><span class="lines">@@ -31483,6 +31654,7 @@
</span><span class="cx">                                 6B693A341C51A95D00B03BEF /* ResourceLoadObserver.cpp in Sources */,
</span><span class="cx">                                 7A929CA61C598A9E004DF226 /* ResourceLoadStatistics.cpp in Sources */,
</span><span class="cx">                                 7AD3CDD91C8A002F00F12698 /* ResourceLoadStatisticsStore.cpp in Sources */,
</span><ins>+                                1AE96A961D1A100700B86768 /* JSApplePayPaymentAuthorizedEventCustom.cpp in Sources */,
</ins><span class="cx">                                 5C9B860C1C21E3C900110F36 /* ResourceLoadTiming.mm in Sources */,
</span><span class="cx">                                 514C767C0CE923A1007EF3CD /* ResourceRequestBase.cpp in Sources */,
</span><span class="cx">                                 7EE6846E12D26E3800E79415 /* ResourceRequestCFNet.cpp in Sources */,
</span><span class="lines">@@ -31492,6 +31664,7 @@
</span><span class="cx">                                 514C767E0CE923A1007EF3CD /* ResourceResponseBase.cpp in Sources */,
</span><span class="cx">                                 7EE6847112D26E3800E79415 /* ResourceResponseCFNet.cpp in Sources */,
</span><span class="cx">                                 A1F78D0C1C25424C00245446 /* ResourceResponseCocoa.mm in Sources */,
</span><ins>+                                CBC2D22F1CE5B89D00D1880B /* ResourceTimingInformation.cpp in Sources */,
</ins><span class="cx">                                 A5071E8B1C56FB31009951BE /* ResourceUsageData.cpp in Sources */,
</span><span class="cx">                                 ADBAD6EE1BCDD95500381325 /* ResourceUsageOverlay.cpp in Sources */,
</span><span class="cx">                                 ADFE2B551BD5F61200DAB457 /* ResourceUsageOverlayCocoa.mm in Sources */,
</span><span class="lines">@@ -31512,7 +31685,6 @@
</span><span class="cx">                                 073794F919F5864E00E5A045 /* RTCDataChannelHandlerMock.cpp in Sources */,
</span><span class="cx">                                 078E090717D14CEE00420AA1 /* RTCDTMFSender.cpp in Sources */,
</span><span class="cx">                                 073794FB19F5864E00E5A045 /* RTCDTMFSenderHandlerMock.cpp in Sources */,
</span><del>-                                0719427F1D088F21002AA51D /* AVFoundationMIMETypeCache.mm in Sources */,
</del><span class="cx">                                 078E090817D14CEE00420AA1 /* RTCDTMFToneChangeEvent.cpp in Sources */,
</span><span class="cx">                                 078E090917D14CEE00420AA1 /* RTCIceCandidate.cpp in Sources */,
</span><span class="cx">                                 073BE34F17D18183002BD431 /* RTCIceCandidateDescriptor.cpp in Sources */,
</span><span class="lines">@@ -31524,6 +31696,7 @@
</span><span class="cx">                                 073794F119EE37BB00E5A045 /* RTCPeerConnectionHandlerMock.cpp in Sources */,
</span><span class="cx">                                 5E2C43621BCEE32B0001E2BC /* RTCRtpReceiver.cpp in Sources */,
</span><span class="cx">                                 5E2C43601BCEE3230001E2BC /* RTCRtpSender.cpp in Sources */,
</span><ins>+                                5E5E2B131CFC3E70000C0D85 /* RTCRtpTransceiver.cpp in Sources */,
</ins><span class="cx">                                 078E090C17D14CEE00420AA1 /* RTCSessionDescription.cpp in Sources */,
</span><span class="cx">                                 073BE34E17D180B2002BD431 /* RTCSessionDescriptionDescriptor.cpp in Sources */,
</span><span class="cx">                                 078E090E17D14CEE00420AA1 /* RTCStatsReport.cpp in Sources */,
</span><span class="lines">@@ -31531,6 +31704,7 @@
</span><span class="cx">                                 5E2C43671BCEE3770001E2BC /* RTCTrackEvent.cpp in Sources */,
</span><span class="cx">                                 5824ABA21AE81116009074B7 /* RubyElement.cpp in Sources */,
</span><span class="cx">                                 5824ABA61AE81384009074B7 /* RubyTextElement.cpp in Sources */,
</span><ins>+                                1AE96A991D1A100700B86768 /* JSApplePayShippingContactSelectedEventCustom.cpp in Sources */,
</ins><span class="cx">                                 A79BADA1161E7F3F00C2E652 /* RuleFeature.cpp in Sources */,
</span><span class="cx">                                 A79BADA3161E7F3F00C2E652 /* RuleSet.cpp in Sources */,
</span><span class="cx">                                 2D76BB8419456F8100CFD29A /* RunLoopObserver.cpp in Sources */,
</span><span class="lines">@@ -31725,7 +31899,6 @@
</span><span class="cx">                                 E4D58EB817B4ED8900CBDCA8 /* StyleFontSizeFunctions.cpp in Sources */,
</span><span class="cx">                                 BCEF447D0E674806001C1287 /* StyleGeneratedImage.cpp in Sources */,
</span><span class="cx">                                 A10DC76A14747BAB005E2471 /* StyleGridData.cpp in Sources */,
</span><del>-                                5E4EAB051D07166E0006A184 /* MediaEndpointSessionDescription.cpp in Sources */,
</del><span class="cx">                                 A110DB9D14F5DF8700A03B93 /* StyleGridItemData.cpp in Sources */,
</span><span class="cx">                                 BC2273030E82F1E600E7F975 /* StyleInheritedData.cpp in Sources */,
</span><span class="cx">                                 E47127CA163438A100ED6F5A /* StyleInvalidationAnalysis.cpp in Sources */,
</span><span class="lines">@@ -31735,7 +31908,6 @@
</span><span class="cx">                                 A80E6DFB0A199067007FB8C5 /* StyleProperties.cpp in Sources */,
</span><span class="cx">                                 E1B25106152A0BAF0069B779 /* StylePropertyShorthand.cpp in Sources */,
</span><span class="cx">                                 83C05A5A1A686212007E5DEA /* StylePropertyShorthandFunctions.cpp in Sources */,
</span><del>-                                1A8A64321D19E69B00D0E00F /* PaymentCocoa.mm in Sources */,
</del><span class="cx">                                 BC2272E30E82EE9B00E7F975 /* StyleRareInheritedData.cpp in Sources */,
</span><span class="cx">                                 BC2272BC0E82EAAE00E7F975 /* StyleRareNonInheritedData.cpp in Sources */,
</span><span class="cx">                                 E461802F1C8DD4D20026C02C /* StyleRelations.cpp in Sources */,
</span><span class="lines">@@ -31781,7 +31953,6 @@
</span><span class="cx">                                 4331AC7813B6870000A9E5AE /* SVGAnimatedNumberList.cpp in Sources */,
</span><span class="cx">                                 431A2F9D13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.cpp in Sources */,
</span><span class="cx">                                 08B5F25513B5FFF2002959EC /* SVGAnimatedPath.cpp in Sources */,
</span><del>-                                1A4DA4211CDD3A8300F4473C /* LinkIconCollector.cpp in Sources */,
</del><span class="cx">                                 43B9336A13B261B1004584BF /* SVGAnimatedPointList.cpp in Sources */,
</span><span class="cx">                                 431A302113B89DCC007791E4 /* SVGAnimatedPreserveAspectRatio.cpp in Sources */,
</span><span class="cx">                                 836FBCEC178C117F00B21A15 /* SVGAnimatedProperty.cpp in Sources */,
</span><span class="lines">@@ -32040,6 +32211,7 @@
</span><span class="cx">                                 AA4739D11757AFEC00E76767 /* UIRequestEvent.cpp in Sources */,
</span><span class="cx">                                 518864E01BBAF57100E540C9 /* UniqueIDBDatabase.cpp in Sources */,
</span><span class="cx">                                 5198F7A41BBDB79300E2CC5F /* UniqueIDBDatabaseConnection.cpp in Sources */,
</span><ins>+                                1AE96A941D1A0DDD00B86768 /* JSApplePayValidateMerchantEvent.cpp in Sources */,
</ins><span class="cx">                                 5198F7A81BBDD38500E2CC5F /* UniqueIDBDatabaseTransaction.cpp in Sources */,
</span><span class="cx">                                 D086FE9909D53AAB005BC74D /* UnlinkCommand.cpp in Sources */,
</span><span class="cx">                                 FD1762DF176686D900D836A8 /* UpSampler.cpp in Sources */,
</span><span class="lines">@@ -32114,6 +32286,7 @@
</span><span class="cx">                                 A56C5B9A189F34570082D13C /* WebConsoleAgent.cpp in Sources */,
</span><span class="cx">                                 CD7E05221651C28200C1201F /* WebCoreAVFResourceLoader.mm in Sources */,
</span><span class="cx">                                 2D3EF44B1917915C00034184 /* WebCoreCALayerExtras.mm in Sources */,
</span><ins>+                                515F79531CFCA3D000CCED93 /* WebCoreCrossThreadCopier.cpp in Sources */,
</ins><span class="cx">                                 CDC69DDB16371FD4007C38DF /* WebCoreFullScreenPlaceholderView.mm in Sources */,
</span><span class="cx">                                 CDC69DD71632026C007C38DF /* WebCoreFullScreenWarningView.mm in Sources */,
</span><span class="cx">                                 CD127DED14F3097D00E84779 /* WebCoreFullScreenWindow.mm in Sources */,
</span><span class="lines">@@ -32187,7 +32360,6 @@
</span><span class="cx">                                 1A1414B513A0F0500019996C /* WebKitFontFamilyNames.cpp in Sources */,
</span><span class="cx">                                 D7613A501474F13F00DB8606 /* WebKitNamedFlow.cpp in Sources */,
</span><span class="cx">                                 7C48A6D0191C9D6500026674 /* WebKitNamespace.cpp in Sources */,
</span><del>-                                CBC2D22F1CE5B89D00D1880B /* ResourceTimingInformation.cpp in Sources */,
</del><span class="cx">                                 A5DEBDA316FB908700836FE0 /* WebKitPlaybackTargetAvailabilityEvent.cpp in Sources */,
</span><span class="cx">                                 31C0FF240E4CEB6E007D6FE5 /* WebKitTransitionEvent.cpp in Sources */,
</span><span class="cx">                                 0FCF332E0F2B9A25004B6795 /* WebLayer.mm in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePayPaymentAuthorizedEventCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp         (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSApplePayPaymentAuthorizedEventCustom.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSApplePayPaymentAuthorizedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include <runtime/JSCJSValueInlines.h>
+
+namespace WebCore {
+
+JSC::JSValue JSApplePayPaymentAuthorizedEvent::payment(JSC::ExecState& exec) const
+{
+ if (!m_payment)
+ m_payment.set(exec.vm(), this, wrapped().payment().toJS(exec));
+
+ return m_payment.get();
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePayPaymentMethodSelectedEventCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp         (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSApplePayPaymentMethodSelectedEventCustom.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSApplePayPaymentMethodSelectedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include <runtime/JSCJSValueInlines.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSApplePayPaymentMethodSelectedEvent::paymentMethod(ExecState& exec) const
+{
+ if (!m_paymentMethod)
+ m_paymentMethod.set(exec.vm(), this, wrapped().paymentMethod().toJS(exec));
+
+ return m_paymentMethod.get();
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePaySessionCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp         (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,133 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSApplePaySession.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include "ArrayValue.h"
+#include "Dictionary.h"
+#include "JSDOMBinding.h"
+#include "JSDOMConvert.h"
+#include <runtime/Error.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSApplePaySession::completeShippingMethodSelection(ExecState& state)
+{
+ JSValue thisValue = state.thisValue();
+ JSApplePaySession* castedThis = jsDynamicCast<JSApplePaySession*>(thisValue);
+ if (UNLIKELY(!castedThis))
+ return JSValue::decode(throwThisTypeError(state, "ApplePaySession", "completeShippingMethodSelection"));
+
+ ASSERT_GC_OBJECT_INHERITS(castedThis, JSApplePaySession::info());
+ auto& impl = castedThis->wrapped();
+ if (UNLIKELY(state.argumentCount() < 3))
+ return JSValue::decode(throwVMError(&state, createNotEnoughArgumentsError(&state)));
+
+ ExceptionCode ec = 0;
+ uint16_t status = convert<uint16_t>(state, state.argument(0), NormalConversion);
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+
+ Dictionary newTotal = { &state, state.argument(1) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+
+ ArrayValue newLineItems { &state, state.argument(2) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+ impl.completeShippingMethodSelection(status, newTotal, newLineItems, ec);
+ setDOMException(&state, ec);
+
+ return jsUndefined();
+}
+
+JSValue JSApplePaySession::completeShippingContactSelection(ExecState& state)
+{
+ JSValue thisValue = state.thisValue();
+ JSApplePaySession* castedThis = jsDynamicCast<JSApplePaySession*>(thisValue);
+ if (UNLIKELY(!castedThis))
+ return JSValue::decode(throwThisTypeError(state, "ApplePaySession", "completeShippingContactSelection"));
+
+ ASSERT_GC_OBJECT_INHERITS(castedThis, JSApplePaySession::info());
+ auto& impl = castedThis->wrapped();
+ if (UNLIKELY(state.argumentCount() < 4))
+ return JSValue::decode(throwVMError(&state, createNotEnoughArgumentsError(&state)));
+
+ ExceptionCode ec = 0;
+ uint16_t status = convert<uint16_t>(state, state.argument(0), NormalConversion);
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+
+ ArrayValue newShippingMethods { &state, state.argument(1) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+
+ Dictionary newTotal = { &state, state.argument(2) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+
+ ArrayValue newLineItems { &state, state.argument(3) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+ impl.completeShippingContactSelection(status, newShippingMethods, newTotal, newLineItems, ec);
+ setDOMException(&state, ec);
+
+ return jsUndefined();
+}
+
+JSValue JSApplePaySession::completePaymentMethodSelection(ExecState& state)
+{
+ JSValue thisValue = state.thisValue();
+ JSApplePaySession* castedThis = jsDynamicCast<JSApplePaySession*>(thisValue);
+ if (UNLIKELY(!castedThis))
+ return JSValue::decode(throwThisTypeError(state, "ApplePaySession", "completePaymentMethodSelection"));
+
+ ASSERT_GC_OBJECT_INHERITS(castedThis, JSApplePaySession::info());
+ auto& impl = castedThis->wrapped();
+ if (UNLIKELY(state.argumentCount() < 2))
+ return JSValue::decode(throwVMError(&state, createNotEnoughArgumentsError(&state)));
+
+ ExceptionCode ec = 0;
+ Dictionary newTotal = { &state, state.argument(0) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+
+ ArrayValue newLineItems { &state, state.argument(1) };
+ if (UNLIKELY(state.hadException()))
+ return jsUndefined();
+ impl.completePaymentMethodSelection(newTotal, newLineItems, ec);
+ setDOMException(&state, ec);
+
+ return jsUndefined();
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePayShippingContactSelectedEventCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp         (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSApplePayShippingContactSelectedEventCustom.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSApplePayShippingContactSelectedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include <runtime/JSCJSValueInlines.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSApplePayShippingContactSelectedEvent::shippingContact(ExecState& exec) const
+{
+ if (!m_shippingContact)
+ m_shippingContact.set(exec.vm(), this, wrapped().shippingContact().toJS(exec));
+
+ return m_shippingContact.get();
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePayShippingMethodSelectedEventCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp (0 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp         (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSApplePayShippingMethodSelectedEventCustom.cpp        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSApplePayShippingMethodSelectedEvent.h"
+
+#if ENABLE(APPLE_PAY)
+
+#include <runtime/JSCJSValueInlines.h>
+#include <runtime/ObjectConstructor.h>
+#include <runtime/StructureInlines.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+static JSValue toJS(ExecState& state, const PaymentRequest::ShippingMethod& shippingMethod)
+{
+ JSObject* object = constructEmptyObject(&state);
+
+ object->putDirect(state.vm(), Identifier::fromString(&state, "label"), jsString(&state, shippingMethod.label));
+ object->putDirect(state.vm(), Identifier::fromString(&state, "detail"), jsString(&state, shippingMethod.detail));
+
+ StringBuilder amountString;
+ amountString.appendNumber(shippingMethod.amount / 100);
+ amountString.appendLiteral(".");
+
+ unsigned decimals = shippingMethod.amount % 100;
+ if (decimals < 10)
+ amountString.appendLiteral("0");
+ amountString.appendNumber(decimals);
+ object->putDirect(state.vm(), Identifier::fromString(&state, "amount"), jsString(&state, amountString.toString()));
+
+ object->putDirect(state.vm(), Identifier::fromString(&state, "identifier"), jsString(&state, shippingMethod.identifier));
+
+ return object;
+}
+
+JSValue JSApplePayShippingMethodSelectedEvent::shippingMethod(ExecState& exec) const
+{
+ if (!m_shippingMethod)
+ m_shippingMethod.set(exec.vm(), this, toJS(exec, wrapped().shippingMethod()));
+
+ return m_shippingMethod.get();
+}
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoredomEventNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventNames.in (202308 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventNames.in        2016-06-22 00:08:10 UTC (rev 202308)
+++ trunk/Source/WebCore/dom/EventNames.in        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -31,6 +31,11 @@
</span><span class="cx"> WebKitTransitionEvent
</span><span class="cx"> WheelEvent
</span><span class="cx"> XMLHttpRequestProgressEvent
</span><ins>+ApplePayPaymentAuthorizedEvent conditional=APPLE_PAY
+ApplePayPaymentMethodSelectedEvent conditional=APPLE_PAY
+ApplePayShippingContactSelectedEvent conditional=APPLE_PAY
+ApplePayShippingMethodSelectedEvent conditional=APPLE_PAY
+ApplePayValidateMerchantEvent conditional=APPLE_PAY
</ins><span class="cx"> AudioProcessingEvent conditional=WEB_AUDIO
</span><span class="cx"> OfflineAudioCompletionEvent conditional=WEB_AUDIO
</span><span class="cx"> MediaStreamEvent conditional=MEDIA_STREAM
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventTargetFactoryin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTargetFactory.in (202308 => 202309)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTargetFactory.in        2016-06-22 00:08:10 UTC (rev 202308)
+++ trunk/Source/WebCore/dom/EventTargetFactory.in        2016-06-22 01:05:31 UTC (rev 202309)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> namespace="EventTarget"
</span><span class="cx">
</span><ins>+ApplePaySession conditional=APPLE_PAY
</ins><span class="cx"> AudioNode conditional=WEB_AUDIO
</span><span class="cx"> AudioContext conditional=WEB_AUDIO
</span><span class="cx"> AudioTrackList conditional=VIDEO_TRACK
</span></span></pre>
</div>
</div>
</body>
</html>