<!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  &lt;andersca@apple.com&gt;
</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  &lt;andersca@apple.com&gt;
+
</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 &quot;config.h&quot;
+#include &quot;ApplePayPaymentAuthorizedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayPaymentAuthorizedEvent::ApplePayPaymentAuthorizedEvent(const AtomicString&amp; type, const Payment&amp; 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 &quot;Event.h&quot;
+#include &quot;Payment.h&quot;
+
+namespace WebCore {
+
+class ApplePayPaymentAuthorizedEvent final : public Event {
+public:
+    static Ref&lt;ApplePayPaymentAuthorizedEvent&gt; create(const AtomicString&amp; type, const Payment&amp; payment)
+    {
+        return adoptRef(*new ApplePayPaymentAuthorizedEvent(type, payment));
+    }
+
+    virtual ~ApplePayPaymentAuthorizedEvent();
+
+    const Payment&amp; payment() const { return m_payment; }
+
+private:
+    ApplePayPaymentAuthorizedEvent(const AtomicString&amp; type, const Payment&amp;);
+
+    // 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 &quot;config.h&quot;
+#include &quot;ApplePayPaymentMethodSelectedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &quot;PaymentMethod.h&quot;
+
+namespace WebCore {
+
+ApplePayPaymentMethodSelectedEvent::ApplePayPaymentMethodSelectedEvent(const AtomicString&amp; type, const PaymentMethod&amp; 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 &quot;Event.h&quot;
+#include &quot;PaymentMethod.h&quot;
+
+namespace WebCore {
+
+class PaymentMethod;
+
+class ApplePayPaymentMethodSelectedEvent final : public Event {
+public:
+    static Ref&lt;ApplePayPaymentMethodSelectedEvent&gt; create(const AtomicString&amp; type, const PaymentMethod&amp; paymentMethod)
+    {
+        return adoptRef(*new ApplePayPaymentMethodSelectedEvent(type, paymentMethod));
+    }
+
+    virtual ~ApplePayPaymentMethodSelectedEvent();
+
+    const PaymentMethod&amp; paymentMethod() { return m_paymentMethod; }
+
+private:
+    ApplePayPaymentMethodSelectedEvent(const AtomicString&amp; type, const PaymentMethod&amp;);
+
+    // 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 &quot;config.h&quot;
+#include &quot;ApplePaySession.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &quot;ApplePayPaymentAuthorizedEvent.h&quot;
+#include &quot;ApplePayPaymentMethodSelectedEvent.h&quot;
+#include &quot;ApplePayShippingContactSelectedEvent.h&quot;
+#include &quot;ApplePayShippingMethodSelectedEvent.h&quot;
+#include &quot;ApplePayValidateMerchantEvent.h&quot;
+#include &quot;ArrayValue.h&quot;
+#include &quot;DOMWindow.h&quot;
+#include &quot;Dictionary.h&quot;
+#include &quot;Document.h&quot;
+#include &quot;DocumentLoader.h&quot;
+#include &quot;EventNames.h&quot;
+#include &quot;JSDOMPromise.h&quot;
+#include &quot;JSMainThreadExecState.h&quot;
+#include &quot;LinkIconCollector.h&quot;
+#include &quot;LinkIconType.h&quot;
+#include &quot;MainFrame.h&quot;
+#include &quot;Page.h&quot;
+#include &quot;PaymentAuthorizationStatus.h&quot;
+#include &quot;PaymentContact.h&quot;
+#include &quot;PaymentCoordinator.h&quot;
+#include &quot;PaymentMerchantSession.h&quot;
+#include &quot;PaymentMethod.h&quot;
+#include &quot;PaymentRequestValidator.h&quot;
+#include &quot;ScriptController.h&quot;
+#include &quot;SecurityOrigin.h&quot;
+#include &quot;Settings.h&quot;
+
+namespace WebCore {
+
+static bool parseDigit(UChar digit, bool isNegative, int64_t&amp; amount)
+{
+    if (!isASCIIDigit(digit))
+        return false;
+
+    int64_t digitValue = (digit - '0');
+
+    const int64_t maxMultiplier = std::numeric_limits&lt;int64_t&gt;::max() / 10;
+
+    // Check overflow.
+    if (amount &gt; maxMultiplier || (amount == maxMultiplier &amp;&amp; digitValue &gt; (std::numeric_limits&lt;int64_t&gt;::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&lt;int64_t&gt; parseAmount(const String&amp; 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 &lt; 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 &amp;&amp; state != State::DotDigit &amp;&amp; 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&lt;PaymentRequest::AddressFields&gt; createAddressFields(DOMWindow&amp; window, const ArrayValue&amp; addressFieldsArray)
+{
+    PaymentRequest::AddressFields result;
+
+    size_t addressFieldsCount;
+    if (!addressFieldsArray.length(addressFieldsCount))
+        return Nullopt;
+
+    for (size_t i = 0; i &lt; addressFieldsCount; ++i) {
+        String addressField;
+        if (!addressFieldsArray.get(i, addressField))
+            return Nullopt;
+
+        if (addressField == &quot;postalAddress&quot;)
+            result.postalAddress = true;
+        else if (addressField == &quot;phone&quot;)
+            result.phone = true;
+        else if (addressField == &quot;email&quot;)
+            result.email = true;
+        else if (addressField == &quot;name&quot;)
+            result.name = true;
+        else {
+            auto message = makeString(&quot;\&quot;&quot; + addressField, &quot;\&quot; is not a valid address field.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    return result;
+}
+
+static Optional&lt;PaymentRequest::LineItem::Type&gt; toLineItemType(const String&amp; type)
+{
+    if (type == &quot;pending&quot;)
+        return PaymentRequest::LineItem::Type::Pending;
+    if (type == &quot;final&quot;)
+        return PaymentRequest::LineItem::Type::Final;
+
+    return Nullopt;
+}
+
+static bool isValidLineItemPropertyName(const String&amp; propertyName)
+{
+    const char* validPropertyNames[] = {
+        &quot;type&quot;,
+        &quot;label&quot;,
+        &quot;amount&quot;,
+    };
+
+    for (auto&amp; validPropertyName : validPropertyNames) {
+        if (propertyName == validPropertyName)
+            return true;
+    }
+
+    return false;
+}
+
+static Optional&lt;PaymentRequest::LineItem&gt; createLineItem(DOMWindow&amp; window, const Dictionary&amp; total)
+{
+    Vector&lt;String&gt; propertyNames;
+    total.getOwnPropertyNames(propertyNames);
+
+    for (auto&amp; propertyName : propertyNames) {
+        if (!isValidLineItemPropertyName(propertyName)) {
+            auto message = makeString(&quot;\&quot;&quot; + propertyName, &quot;\&quot; is not a valid line item property name.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    // Line item type defaults to Final.
+    PaymentRequest::LineItem result;
+
+    if (auto typeString = total.get&lt;String&gt;(&quot;type&quot;)) {
+        auto type = toLineItemType(*typeString);
+        if (!type) {
+            auto message = makeString(&quot;\&quot;&quot; + *typeString, &quot;\&quot; is not a valid line item type.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+
+        result.type = *type;
+    }
+
+    if (auto label = total.get&lt;String&gt;(&quot;label&quot;))
+        result.label = *label;
+    if (auto amountString = total.get&lt;String&gt;(&quot;amount&quot;)) {
+        if (auto amount = parseAmount(*amountString))
+            result.amount = *amount;
+        else {
+            auto message = makeString(&quot;\&quot;&quot; + *amountString, &quot;\&quot; is not a valid amount.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    return result;
+}
+
+static Optional&lt;Vector&lt;PaymentRequest::LineItem&gt;&gt; createLineItems(DOMWindow&amp; window, const ArrayValue&amp; lineItemsArray)
+{
+    Vector&lt;PaymentRequest::LineItem&gt; result;
+
+    size_t lineItemCount;
+    if (!lineItemsArray.length(lineItemCount))
+        return Nullopt;
+
+    for (size_t i = 0; i &lt; lineItemCount; ++i) {
+        Dictionary lineItemDictionary;
+        if (!lineItemsArray.get(i, lineItemDictionary))
+            return Nullopt;
+
+        if (auto lineItem = createLineItem(window, lineItemDictionary))
+            result.append(*lineItem);
+    }
+
+    return result;
+}
+
+static Optional&lt;PaymentRequest::MerchantCapabilities&gt; createMerchantCapabilities(DOMWindow&amp; window, const ArrayValue&amp; merchantCapabilitiesArray)
+{
+    PaymentRequest::MerchantCapabilities result;
+
+    size_t merchantCapabilitiesCount;
+    if (!merchantCapabilitiesArray.length(merchantCapabilitiesCount))
+        return Nullopt;
+
+    for (size_t i = 0; i &lt; merchantCapabilitiesCount; ++i) {
+        String merchantCapability;
+        if (!merchantCapabilitiesArray.get(i, merchantCapability))
+            return Nullopt;
+
+        if (merchantCapability == &quot;supports3DS&quot;)
+            result.supports3DS = true;
+        else if (merchantCapability == &quot;supportsEMV&quot;)
+            result.supportsEMV = true;
+        else if (merchantCapability == &quot;supportsCredit&quot;)
+            result.supportsCredit = true;
+        else if (merchantCapability == &quot;supportsDebit&quot;)
+            result.supportsDebit = true;
+        else {
+            auto message = makeString(&quot;\&quot;&quot; + merchantCapability, &quot;\&quot; is not a valid merchant capability.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    return result;
+}
+
+static Optional&lt;PaymentRequest::SupportedNetworks&gt; createSupportedNetworks(DOMWindow&amp; window, const ArrayValue&amp; supportedNetworksArray)
+{
+    PaymentRequest::SupportedNetworks result;
+
+    size_t supportedNetworksCount;
+    if (!supportedNetworksArray.length(supportedNetworksCount))
+        return Nullopt;
+
+    for (size_t i = 0; i &lt; supportedNetworksCount; ++i) {
+        String supportedNetwork;
+        if (!supportedNetworksArray.get(i, supportedNetwork))
+            return Nullopt;
+
+        if (supportedNetwork == &quot;amex&quot;)
+            result.amex = true;
+        else if (supportedNetwork == &quot;chinaUnionPay&quot;)
+            result.chinaUnionPay = true;
+        else if (supportedNetwork == &quot;discover&quot;)
+            result.discover = true;
+        else if (supportedNetwork == &quot;interac&quot;)
+            result.interac = true;
+        else if (supportedNetwork == &quot;masterCard&quot;)
+            result.masterCard = true;
+        else if (supportedNetwork == &quot;privateLabel&quot;)
+            result.privateLabel = true;
+        else if (supportedNetwork == &quot;visa&quot;)
+            result.visa = true;
+        else {
+            auto message = makeString(&quot;\&quot;&quot; + supportedNetwork, &quot;\&quot; is not a valid payment network.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    return result;
+}
+
+static Optional&lt;PaymentRequest::ShippingType&gt; toShippingType(const String&amp; shippingTypeString)
+{
+    if (shippingTypeString == &quot;shipping&quot;)
+        return PaymentRequest::ShippingType::Shipping;
+    if (shippingTypeString == &quot;delivery&quot;)
+        return PaymentRequest::ShippingType::Delivery;
+    if (shippingTypeString == &quot;storePickup&quot;)
+        return PaymentRequest::ShippingType::StorePickup;
+    if (shippingTypeString == &quot;servicePickup&quot;)
+        return PaymentRequest::ShippingType::ServicePickup;
+
+    return Nullopt;
+}
+
+static bool isValidShippingMethodPropertyName(const String&amp; propertyName)
+{
+    const char* validPropertyNames[] = {
+        &quot;label&quot;,
+        &quot;detail&quot;,
+        &quot;amount&quot;,
+        &quot;identifier&quot;,
+    };
+
+    for (auto&amp; validPropertyName : validPropertyNames) {
+        if (propertyName == validPropertyName)
+            return true;
+    }
+
+    return false;
+}
+
+static Optional&lt;PaymentRequest::ShippingMethod&gt; createShippingMethod(DOMWindow&amp; window, const Dictionary&amp; shippingMethodDictionary)
+{
+    Vector&lt;String&gt; propertyNames;
+    shippingMethodDictionary.getOwnPropertyNames(propertyNames);
+
+    for (auto&amp; propertyName : propertyNames) {
+        if (!isValidShippingMethodPropertyName(propertyName)) {
+            auto message = makeString(&quot;\&quot;&quot; + propertyName, &quot;\&quot; is not a valid shipping method property name.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    PaymentRequest::ShippingMethod result;
+
+    auto label = shippingMethodDictionary.get&lt;String&gt;(&quot;label&quot;);
+    if (!label) {
+        window.printErrorMessage(&quot;Missing shipping method label.&quot;);
+        return Nullopt;
+    }
+    result.label = *label;
+
+    auto detail = shippingMethodDictionary.get&lt;String&gt;(&quot;detail&quot;);
+    if (!detail) {
+        window.printErrorMessage(&quot;Missing shipping method detail.&quot;);
+        return Nullopt;
+    }
+    result.detail = *detail;
+
+    auto amountString = shippingMethodDictionary.get&lt;String&gt;(&quot;amount&quot;);
+    if (!amountString) {
+        window.printErrorMessage(&quot;Missing shipping method amount.&quot;);
+        return Nullopt;
+    }
+
+    if (auto amount = parseAmount(*amountString))
+        result.amount = *amount;
+    else {
+        auto message = makeString(&quot;\&quot;&quot; + *amountString, &quot;\&quot; is not a valid amount.&quot;);
+        window.printErrorMessage(message);
+        return Nullopt;
+    }
+
+    auto identifier = shippingMethodDictionary.get&lt;String&gt;(&quot;identifier&quot;);
+    if (!identifier) {
+        window.printErrorMessage(&quot;Missing shipping method identifier.&quot;);
+        return Nullopt;
+    }
+    result.identifier = *identifier;
+
+    return result;
+}
+
+static Optional&lt;Vector&lt;PaymentRequest::ShippingMethod&gt;&gt; createShippingMethods(DOMWindow&amp; window, const ArrayValue&amp; shippingMethodsArray)
+{
+    Vector&lt;PaymentRequest::ShippingMethod&gt; result;
+
+    size_t shippingMethodCount;
+    if (!shippingMethodsArray.length(shippingMethodCount))
+        return Nullopt;
+
+    for (size_t i = 0; i &lt; 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&amp; propertyName)
+{
+    const char* validPropertyNames[] = {
+        &quot;merchantCapabilities&quot;,
+        &quot;supportedNetworks&quot;,
+        &quot;countryCode&quot;,
+        &quot;currencyCode&quot;,
+        &quot;requiredBillingAddressFields&quot;,
+        &quot;billingContact&quot;,
+        &quot;requiredShippingAddressFields&quot;,
+        &quot;shippingContact&quot;,
+        &quot;shippingMethods&quot;,
+        &quot;total&quot;,
+        &quot;lineItems&quot;,
+        &quot;applicationData&quot;,
+    };
+
+    for (auto&amp; validPropertyName : validPropertyNames) {
+        if (propertyName == validPropertyName)
+            return true;
+    }
+
+    return false;
+}
+
+static Optional&lt;PaymentRequest&gt; createPaymentRequest(DOMWindow&amp; window, const Dictionary&amp; dictionary)
+{
+    PaymentRequest paymentRequest;
+
+    Vector&lt;String&gt; propertyNames;
+    dictionary.getOwnPropertyNames(propertyNames);
+
+    for (auto&amp; propertyName : propertyNames) {
+        if (!isValidPaymentRequestPropertyName(propertyName)) {
+            auto message = makeString(&quot;\&quot;&quot; + propertyName, &quot;\&quot; is not a valid payment request property name.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+    }
+
+    if (auto merchantCapabilitiesArray = dictionary.get&lt;ArrayValue&gt;(&quot;merchantCapabilities&quot;)) {
+        auto merchantCapabilities = createMerchantCapabilities(window, *merchantCapabilitiesArray);
+        if (!merchantCapabilities)
+            return Nullopt;
+
+        paymentRequest.setMerchantCapabilities(*merchantCapabilities);
+    }
+
+    if (auto supportedNetworksArray = dictionary.get&lt;ArrayValue&gt;(&quot;supportedNetworks&quot;)) {
+        auto supportedNetworks = createSupportedNetworks(window, *supportedNetworksArray);
+        if (!supportedNetworks)
+            return Nullopt;
+
+        paymentRequest.setSupportedNetworks(*supportedNetworks);
+    }
+
+    if (auto countryCode = dictionary.get&lt;String&gt;(&quot;countryCode&quot;))
+        paymentRequest.setCountryCode(*countryCode);
+    if (auto currencyCode = dictionary.get&lt;String&gt;(&quot;currencyCode&quot;))
+        paymentRequest.setCurrencyCode(*currencyCode);
+
+    if (auto requiredBillingAddressFieldsArray = dictionary.get&lt;ArrayValue&gt;(&quot;requiredBillingAddressFields&quot;)) {
+        auto requiredBillingAddressFields = createAddressFields(window, *requiredBillingAddressFieldsArray);
+        if (!requiredBillingAddressFields)
+            return Nullopt;
+
+        paymentRequest.setRequiredBillingAddressFields(*requiredBillingAddressFields);
+    }
+
+    if (auto billingContactValue = dictionary.get&lt;JSC::JSValue&gt;(&quot;billingContact&quot;)) {
+        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&lt;ArrayValue&gt;(&quot;requiredShippingAddressFields&quot;)) {
+        auto requiredShippingAddressFields = createAddressFields(window, *requiredShippingAddressFieldsArray);
+        if (!requiredShippingAddressFields)
+            return Nullopt;
+
+        paymentRequest.setRequiredShippingAddressFields(*requiredShippingAddressFields);
+    }
+
+    if (auto shippingContactValue = dictionary.get&lt;JSC::JSValue&gt;(&quot;shippingContact&quot;)) {
+        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&lt;String&gt;(&quot;shippingType&quot;)) {
+        auto shippingType = toShippingType(*shippingTypeString);
+
+        if (!shippingType) {
+            auto message = makeString(&quot;\&quot;&quot; + *shippingTypeString, &quot;\&quot; is not a valid shipping type.&quot;);
+            window.printErrorMessage(message);
+            return Nullopt;
+        }
+        paymentRequest.setShippingType(*shippingType);
+    }
+
+    if (auto shippingMethodsArray = dictionary.get&lt;ArrayValue&gt;(&quot;shippingMethods&quot;)) {
+        if (auto shippingMethods = createShippingMethods(window, *shippingMethodsArray))
+            paymentRequest.setShippingMethods(*shippingMethods);
+    }
+
+    if (auto totalDictionary = dictionary.get&lt;Dictionary&gt;(&quot;total&quot;)) {
+        auto total = createLineItem(window, *totalDictionary);
+        if (!total)
+            return Nullopt;
+
+        paymentRequest.setTotal(*total);
+    }
+
+    if (auto lineItemsArray = dictionary.get&lt;ArrayValue&gt;(&quot;lineItems&quot;)) {
+        if (auto lineItems = createLineItems(window, *lineItemsArray))
+            paymentRequest.setLineItems(*lineItems);
+    }
+
+    if (auto applicationData = dictionary.get&lt;String&gt;(&quot;applicationData&quot;))
+        paymentRequest.setApplicationData(*applicationData);
+
+    return paymentRequest;
+}
+
+static bool isSecure(DocumentLoader&amp; documentLoader)
+{
+    if (!documentLoader.response().url().protocolIs(&quot;https&quot;))
+        return false;
+
+    if (!documentLoader.response().certificateInfo() || documentLoader.response().certificateInfo()-&gt;containsNonRootSHA1SignedCertificate())
+        return false;
+
+    return true;
+}
+
+static bool canCallApplePaySessionAPIs(Document&amp; document, String&amp; errorMessage)
+{
+    if (!isSecure(*document.loader())) {
+        errorMessage = &quot;Trying to call an ApplePaySession API from an insecure document.&quot;;
+        return false;
+    }
+
+    auto&amp; topDocument = document.topDocument();
+    if (&amp;document != &amp;topDocument) {
+        auto&amp; topOrigin = *topDocument.topOrigin();
+
+        if (!document.securityOrigin()-&gt;isSameSchemeHostPort(&amp;topOrigin)) {
+            errorMessage = &quot;Trying to call an ApplePaySession API from a document with an different security origin than its top-level frame.&quot;;
+            return false;
+        }
+
+        for (auto* ancestorDocument = document.parentDocument(); ancestorDocument != &amp;topDocument; ancestorDocument = ancestorDocument-&gt;parentDocument()) {
+            if (!isSecure(*ancestorDocument-&gt;loader())) {
+                errorMessage = &quot;Trying to call an ApplePaySession API from a document with an insecure parent frame.&quot;;
+                return false;
+            }
+
+            if (!ancestorDocument-&gt;securityOrigin()-&gt;isSameSchemeHostPort(&amp;topOrigin)) {
+                errorMessage = &quot;Trying to call an ApplePaySession API from a document with an different security origin than its top-level frame.&quot;;
+                return false;
+            }
+        }
+    }
+
+    return true;
+}
+
+RefPtr&lt;ApplePaySession&gt; ApplePaySession::create(Document&amp; document, unsigned version, const Dictionary&amp; dictionary, ExceptionCode&amp; ec)
+{
+    DOMWindow&amp; window = *document.domWindow();
+
+    String errorMessage;
+    if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+        window.printErrorMessage(errorMessage);
+        ec = INVALID_ACCESS_ERR;
+        return nullptr;
+    }
+
+    auto&amp; paymentCoordinator = document.frame()-&gt;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&amp; document, PaymentRequest&amp;&amp; paymentRequest)
+    : ActiveDOMObject(&amp;document)
+    , m_state(State::Idle)
+    , m_merchantValidationState(MerchantValidationState::Idle)
+    , m_paymentRequest(WTFMove(paymentRequest))
+{
+    suspendIfNeeded();
+}
+
+ApplePaySession::~ApplePaySession()
+{
+}
+
+bool ApplePaySession::supportsVersion(ScriptExecutionContext&amp; scriptExecutionContext, unsigned version, ExceptionCode&amp; ec)
+{
+    if (!version) {
+        ec = INVALID_ACCESS_ERR;
+        return false;
+    }
+
+    auto&amp; document = downcast&lt;Document&gt;(scriptExecutionContext);
+    DOMWindow&amp; window = *document.domWindow();
+
+    String errorMessage;
+    if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+        window.printErrorMessage(errorMessage);
+        ec = INVALID_ACCESS_ERR;
+        return false;
+    }
+
+    auto&amp; paymentCoordinator = document.frame()-&gt;mainFrame().paymentCoordinator();
+    return paymentCoordinator.supportsVersion(version);
+}
+
+static bool shouldDiscloseApplePayCapability(Document&amp; document)
+{
+    auto* page = document.page();
+    if (!page || page-&gt;usesEphemeralSession())
+        return false;
+
+    return document.frame()-&gt;settings().applePayCapabilityDisclosureAllowed();
+}
+
+bool ApplePaySession::canMakePayments(ScriptExecutionContext&amp; scriptExecutionContext, ExceptionCode&amp; ec)
+{
+    auto&amp; document = downcast&lt;Document&gt;(scriptExecutionContext);
+    DOMWindow&amp; window = *document.domWindow();
+
+    String errorMessage;
+    if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+        window.printErrorMessage(errorMessage);
+        ec = INVALID_ACCESS_ERR;
+        return false;
+    }
+
+    auto&amp; paymentCoordinator = document.frame()-&gt;mainFrame().paymentCoordinator();
+    return paymentCoordinator.canMakePayments();
+}
+
+void ApplePaySession::canMakePaymentsWithActiveCard(ScriptExecutionContext&amp; scriptExecutionContext, const String&amp; merchantIdentifier, DeferredWrapper&amp;&amp; promise, ExceptionCode&amp; ec)
+{
+    auto&amp; document = downcast&lt;Document&gt;(scriptExecutionContext);
+    DOMWindow&amp; window = *document.domWindow();
+
+    String errorMessage;
+    if (!canCallApplePaySessionAPIs(document, errorMessage)) {
+        window.printErrorMessage(errorMessage);
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    if (!shouldDiscloseApplePayCapability(document)) {
+        auto&amp; paymentCoordinator = document.frame()-&gt;mainFrame().paymentCoordinator();
+        bool canMakePayments = paymentCoordinator.canMakePayments();
+
+        RunLoop::main().dispatch([promise, canMakePayments]() mutable {
+            promise.resolve(canMakePayments);
+        });
+        return;
+    }
+
+    auto&amp; paymentCoordinator = document.frame()-&gt;mainFrame().paymentCoordinator();
+
+    paymentCoordinator.canMakePaymentsWithActiveCard(merchantIdentifier, document.domain(), [promise](bool canMakePayments) mutable {
+        promise.resolve(canMakePayments);
+    });
+}
+
+void ApplePaySession::begin(ExceptionCode&amp; ec)
+{
+    auto&amp; document = *downcast&lt;Document&gt;(scriptExecutionContext());
+    auto&amp; window = *document.domWindow();
+
+    if (!ScriptController::processingUserGesture()) {
+        window.printErrorMessage(&quot;Must call ApplePaySession.begin from a user gesture handler.&quot;);
+
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    if (!canBegin()) {
+        window.printErrorMessage(&quot;Payment session is already active.&quot;);
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    if (paymentCoordinator().hasActiveSession()) {
+        window.printErrorMessage(&quot;Page already has an active payment session.&quot;);
+
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    paymentCoordinator().beginPaymentSession(*this);
+
+    Vector&lt;URL&gt; linkIconURLs;
+    for (auto&amp; 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&amp; ec)
+{
+    if (!canAbort()) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    m_state = State::Aborted;
+    paymentCoordinator().abortPaymentSession();
+
+    didReachFinalState();
+}
+
+static Optional&lt;PaymentMerchantSession&gt; createMerchantSession(DOMWindow&amp; window, const Dictionary&amp; merchantSessionDictionary)
+{
+    auto merchantIdentifier = merchantSessionDictionary.get&lt;String&gt;(&quot;merchantIdentifier&quot;);
+    if (!merchantIdentifier) {
+        window.printErrorMessage(&quot;Missing merchant identifier.&quot;);
+        return Nullopt;
+    }
+
+    auto sessionIdentifier = merchantSessionDictionary.get&lt;String&gt;(&quot;merchantSessionIdentifier&quot;);
+    if (!sessionIdentifier) {
+        window.printErrorMessage(&quot;Missing merchant session identifier.&quot;);
+        return Nullopt;
+    }
+
+    auto nonce = merchantSessionDictionary.get&lt;String&gt;(&quot;nonce&quot;);
+    if (!nonce) {
+        window.printErrorMessage(&quot;Missing nonce.&quot;);
+        return Nullopt;
+    }
+
+    auto domainName = merchantSessionDictionary.get&lt;String&gt;(&quot;domainName&quot;);
+    if (!domainName) {
+        window.printErrorMessage(&quot;Missing domain name.&quot;);
+        return Nullopt;
+    }
+
+    auto epochTimestamp = merchantSessionDictionary.get&lt;uint64_t&gt;(&quot;epochTimestamp&quot;);
+    if (!epochTimestamp) {
+        window.printErrorMessage(&quot;Missing epoch time stamp.&quot;);
+        return Nullopt;
+    }
+
+    auto signature = merchantSessionDictionary.get&lt;String&gt;(&quot;signature&quot;);
+    if (!signature) {
+        window.printErrorMessage(&quot;Missing signature.&quot;);
+        return Nullopt;
+    }
+
+    return PaymentMerchantSession { *merchantIdentifier, *sessionIdentifier, *nonce, *domainName, *epochTimestamp, *signature };
+}
+
+void ApplePaySession::completeMerchantValidation(const Dictionary&amp; merchantSessionDictionary, ExceptionCode&amp; ec)
+{
+    if (!canCompleteMerchantValidation()) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    auto&amp; document = *downcast&lt;Document&gt;(scriptExecutionContext());
+    auto&amp; window = *document.domWindow();
+
+    auto merchantSession = createMerchantSession(window, merchantSessionDictionary);
+    if (!merchantSession) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    m_merchantValidationState = MerchantValidationState::ValidationComplete;
+    paymentCoordinator().completeMerchantValidation(*merchantSession);
+}
+
+
+static Optional&lt;PaymentAuthorizationStatus&gt; 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&amp; newTotalDictionary, const ArrayValue&amp; newLineItemsArray, ExceptionCode&amp; ec)
+{
+    if (!canCompleteShippingMethodSelection()) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    auto authorizationStatus = toPaymentAuthorizationStatus(status);
+    if (!authorizationStatus) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    auto&amp; window = *downcast&lt;Document&gt;(scriptExecutionContext())-&gt;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&amp; newShippingMethodsArray, const Dictionary&amp; newTotalDictionary, const ArrayValue&amp; newLineItemsArray, ExceptionCode&amp; ec)
+{
+    if (!canCompleteShippingContactSelection()) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    auto authorizationStatus = toPaymentAuthorizationStatus(status);
+    if (!authorizationStatus) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    auto&amp; window = *downcast&lt;Document&gt;(scriptExecutionContext())-&gt;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&amp; newTotalDictionary, const ArrayValue&amp; newLineItemsArray, ExceptionCode&amp; ec)
+{
+    if (!canCompletePaymentMethodSelection()) {
+        ec = INVALID_ACCESS_ERR;
+        return;
+    }
+
+    auto&amp; window = *downcast&lt;Document&gt;(scriptExecutionContext())-&gt;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&amp; 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&amp; 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&lt;ApplePayValidateMerchantEvent&gt; event = ApplePayValidateMerchantEvent::create(eventNames().validatemerchantEvent, validationURL);
+    dispatchEvent(*event);
+}
+
+void ApplePaySession::didAuthorizePayment(const Payment&amp; payment)
+{
+    ASSERT(m_state == State::Active);
+
+    m_state = State::Authorized;
+
+    RefPtr&lt;ApplePayPaymentAuthorizedEvent&gt; event = ApplePayPaymentAuthorizedEvent::create(eventNames().paymentauthorizedEvent, payment);
+    dispatchEvent(*event);
+}
+
+void ApplePaySession::didSelectShippingMethod(const PaymentRequest::ShippingMethod&amp; shippingMethod)
+{
+    ASSERT(m_state == State::Active);
+
+    if (!hasEventListeners(eventNames().shippingmethodselectedEvent)) {
+        paymentCoordinator().completeShippingMethodSelection(PaymentAuthorizationStatus::Success, { });
+        return;
+    }
+
+    m_state = State::ShippingMethodSelected;
+    RefPtr&lt;ApplePayShippingMethodSelectedEvent&gt; event = ApplePayShippingMethodSelectedEvent::create(eventNames().shippingmethodselectedEvent, shippingMethod);
+    dispatchEvent(*event);
+}
+
+void ApplePaySession::didSelectShippingContact(const PaymentContact&amp; shippingContact)
+{
+    ASSERT(m_state == State::Active);
+
+    if (!hasEventListeners(eventNames().shippingcontactselectedEvent)) {
+        paymentCoordinator().completeShippingContactSelection(PaymentAuthorizationStatus::Success, { }, { });
+        return;
+    }
+
+    m_state = State::ShippingContactSelected;
+    RefPtr&lt;ApplePayShippingContactSelectedEvent&gt; event = ApplePayShippingContactSelectedEvent::create(eventNames().shippingcontactselectedEvent, shippingContact);
+    dispatchEvent(*event);
+}
+
+void ApplePaySession::didSelectPaymentMethod(const PaymentMethod&amp; paymentMethod)
+{
+    ASSERT(m_state == State::Active);
+
+    if (!hasEventListeners(eventNames().paymentmethodselectedEvent)) {
+        paymentCoordinator().completePaymentMethodSelection({ });
+        return;
+    }
+
+    m_state = State::PaymentMethodSelected;
+    RefPtr&lt;ApplePayPaymentMethodSelectedEvent&gt; event = ApplePayPaymentMethodSelectedEvent::create(eventNames().paymentmethodselectedEvent, paymentMethod);
+    dispatchEvent(*event);
+}
+
+void ApplePaySession::didCancelPayment()
+{
+    ASSERT(canCancel());
+
+    m_state = State::Canceled;
+
+    RefPtr&lt;Event&gt; event = Event::create(eventNames().cancelEvent, false, false);
+    dispatchEvent(*event);
+
+    didReachFinalState();
+}
+
+const char* ApplePaySession::activeDOMObjectName() const
+{
+    return &quot;ApplePaySession&quot;;
+}
+
+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&amp; ApplePaySession::paymentCoordinator() const
+{
+    return downcast&lt;Document&gt;(scriptExecutionContext())-&gt;frame()-&gt;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 &quot;ActiveDOMObject.h&quot;
+#include &quot;EventTarget.h&quot;
+#include &quot;ExceptionCode.h&quot;
+#include &quot;PaymentRequest.h&quot;
+#include &lt;wtf/Ref.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+
+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&lt;ApplePaySession&gt;, public ActiveDOMObject, public EventTargetWithInlineData {
+public:
+    static RefPtr&lt;ApplePaySession&gt; create(Document&amp;, unsigned version, const Dictionary&amp;, ExceptionCode&amp;);
+    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&amp;, unsigned version, ExceptionCode&amp;);
+    static bool canMakePayments(ScriptExecutionContext&amp;, ExceptionCode&amp;);
+    static void canMakePaymentsWithActiveCard(ScriptExecutionContext&amp;, const String&amp; merchantIdentifier, DeferredWrapper&amp;&amp;, ExceptionCode&amp;);
+
+    void begin(ExceptionCode&amp;);
+    void abort(ExceptionCode&amp;);
+    void completeMerchantValidation(const Dictionary&amp; merchantSessionDictionary, ExceptionCode&amp;);
+    void completeShippingMethodSelection(unsigned short status, const Dictionary&amp; newTotal, const ArrayValue&amp; newLineItems, ExceptionCode&amp;);
+    void completeShippingContactSelection(unsigned short status, const ArrayValue&amp; newShippingMethods, const Dictionary&amp; newTotal, const ArrayValue&amp; newLineItems, ExceptionCode&amp;);
+    void completePaymentMethodSelection(const Dictionary&amp; newTotal, const ArrayValue&amp; newLineItems, ExceptionCode&amp;);
+    void completePayment(unsigned short status, ExceptionCode&amp;);
+
+    const PaymentRequest&amp; paymentRequest() const { return m_paymentRequest; }
+
+    void validateMerchant(const URL&amp;);
+    void didAuthorizePayment(const Payment&amp;);
+    void didSelectShippingMethod(const PaymentRequest::ShippingMethod&amp;);
+    void didSelectShippingContact(const PaymentContact&amp;);
+    void didSelectPaymentMethod(const PaymentMethod&amp;);
+    void didCancelPayment();
+
+    using RefCounted&lt;ApplePaySession&gt;::ref;
+    using RefCounted&lt;ApplePaySession&gt;::deref;
+
+private:
+    ApplePaySession(Document&amp;, PaymentRequest&amp;&amp;);
+
+    // 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&amp; 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&lt;Dictionary&gt; newLineItems);
+    [Custom, RaisesException] void completeShippingContactSelection(unsigned short status, sequence&lt;Dictionary&gt; newShippingMethods, Dictionary newTotal, sequence&lt;Dictionary&gt; newLineItems);
+    [Custom, RaisesException] void completePaymentMethodSelection(Dictionary newTotal, sequence&lt;Dictionary&gt; 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 &quot;config.h&quot;
+#include &quot;ApplePayShippingContactSelectedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayShippingContactSelectedEvent::ApplePayShippingContactSelectedEvent(const AtomicString&amp; type, const PaymentContact&amp; 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 &quot;Event.h&quot;
+#include &quot;PaymentContact.h&quot;
+
+namespace WebCore {
+
+class ApplePayShippingContactSelectedEvent final : public Event {
+public:
+    static Ref&lt;ApplePayShippingContactSelectedEvent&gt; create(const AtomicString&amp; type, const PaymentContact&amp; shippingContact)
+    {
+        return adoptRef(*new ApplePayShippingContactSelectedEvent(type, shippingContact));
+    }
+
+    virtual ~ApplePayShippingContactSelectedEvent();
+
+    const PaymentContact&amp; shippingContact() const { return m_shippingContact; }
+
+private:
+    ApplePayShippingContactSelectedEvent(const AtomicString&amp; type, const PaymentContact&amp;);
+
+    // 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 &quot;config.h&quot;
+#include &quot;ApplePayShippingMethodSelectedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayShippingMethodSelectedEvent::ApplePayShippingMethodSelectedEvent(const AtomicString&amp; type, const PaymentRequest::ShippingMethod&amp; 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 &quot;Event.h&quot;
+#include &quot;PaymentRequest.h&quot;
+
+namespace WebCore {
+
+class ApplePayShippingMethodSelectedEvent final : public Event {
+public:
+    static Ref&lt;ApplePayShippingMethodSelectedEvent&gt; create(const AtomicString&amp; type, const PaymentRequest::ShippingMethod&amp; shippingMethod)
+    {
+        return adoptRef(*new ApplePayShippingMethodSelectedEvent(type, shippingMethod));
+    }
+
+    virtual ~ApplePayShippingMethodSelectedEvent();
+
+    const PaymentRequest::ShippingMethod&amp; shippingMethod() const { return m_shippingMethod; }
+
+private:
+    ApplePayShippingMethodSelectedEvent(const AtomicString&amp; type, const PaymentRequest::ShippingMethod&amp;);
+
+    // 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 &quot;config.h&quot;
+#include &quot;ApplePayValidateMerchantEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+namespace WebCore {
+
+ApplePayValidateMerchantEvent::ApplePayValidateMerchantEvent(const AtomicString&amp; type, const URL&amp; 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 &quot;Event.h&quot;
+#include &quot;URL.h&quot;
+
+namespace WebCore {
+
+class ApplePayValidateMerchantEvent final : public Event {
+public:
+    static Ref&lt;ApplePayValidateMerchantEvent&gt; create(const AtomicString&amp; type, const URL&amp; validationURL)
+    {
+        return adoptRef(*new ApplePayValidateMerchantEvent(type, validationURL));
+    }
+
+    virtual ~ApplePayValidateMerchantEvent();
+
+    const String&amp; validationURL() const { return m_validationURL.string(); }
+
+private:
+    ApplePayValidateMerchantEvent(const AtomicString&amp; type, const URL&amp; 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 &lt;wtf/RetainPtr.h&gt;
+
+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&amp;) const;
+
+    PKPayment *pkPayment() const { return m_pkPayment.get(); }
+
+private:
+    RetainPtr&lt;PKPayment&gt; 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 &lt;WebCore/ExceptionCode.h&gt;
+#include &lt;wtf/Forward.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+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&lt;PaymentContact&gt; fromJS(JSC::ExecState&amp;, JSC::JSValue, String&amp; errorMessage);
+    JSC::JSValue toJS(JSC::ExecState&amp;) const;
+
+    PKContact *pkContact() const { return m_pkContact.get(); }
+
+private:
+    RetainPtr&lt;PKContact&gt; m_pkContact;
+};
+
+RetainPtr&lt;NSDictionary&gt; 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 &lt;wtf/text/WTFString.h&gt;
+
+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 &lt;wtf/RetainPtr.h&gt;
+
+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&amp;) const;
+
+    PKPaymentMethod *pkPaymentMethod() const { return m_pkPaymentMethod.get(); }
+
+private:
+    RetainPtr&lt;PKPaymentMethod&gt; m_pkPaymentMethod;
+};
+
+RetainPtr&lt;NSDictionary&gt; 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 &quot;config.h&quot;
+#include &quot;PaymentRequestValidator.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &quot;DOMWindow.h&quot;
+#include &quot;PageConsoleClient.h&quot;
+#include &quot;PaymentRequest.h&quot;
+#include &lt;unicode/ucurr.h&gt;
+#include &lt;unicode/uloc.h&gt;
+
+namespace WebCore {
+
+PaymentRequestValidator::PaymentRequestValidator(DOMWindow&amp; window)
+    : m_window(window)
+{
+}
+
+PaymentRequestValidator::~PaymentRequestValidator()
+{
+}
+
+bool PaymentRequestValidator::validate(const PaymentRequest&amp; 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&amp; total) const
+{
+    if (!total.label) {
+        m_window.printErrorMessage(&quot;Missing total label.&quot;);
+        return false;
+    }
+
+    if (!total.amount) {
+        m_window.printErrorMessage(&quot;Missing total amount.&quot;);
+        return false;
+    }
+
+    if (*total.amount &lt;= 0) {
+        m_window.printErrorMessage(&quot;Total amount must be greater than zero.&quot;);
+        return false;
+    }
+
+    if (*total.amount &gt; 1000000) {
+        m_window.printErrorMessage(&quot;Total amount is too big.&quot;);
+        return false;
+    }
+
+    return true;
+}
+
+bool PaymentRequestValidator::validateCountryCode(const String&amp; countryCode) const
+{
+    if (!countryCode) {
+        m_window.printErrorMessage(&quot;Missing country code.&quot;);
+        return false;
+    }
+
+    for (auto *countryCodePtr = uloc_getISOCountries(); *countryCodePtr; ++countryCodePtr) {
+        if (countryCode == *countryCodePtr)
+            return true;
+    }
+
+    auto message = makeString(&quot;\&quot;&quot; + countryCode, &quot;\&quot; is not a valid country code.&quot;);
+    m_window.printErrorMessage(message);
+
+    return false;
+}
+
+bool PaymentRequestValidator::validateCurrencyCode(const String&amp; currencyCode) const
+{
+    if (!currencyCode) {
+        m_window.printErrorMessage(&quot;Missing currency code.&quot;);
+        return false;
+    }
+
+    UErrorCode errorCode = U_ZERO_ERROR;
+    auto currencyCodes = std::unique_ptr&lt;UEnumeration, void (*)(UEnumeration*)&gt;(ucurr_openISOCurrencies(UCURR_ALL, &amp;errorCode), uenum_close);
+
+    int32_t length;
+    while (auto *currencyCodePtr = uenum_next(currencyCodes.get(), &amp;length, &amp;errorCode)) {
+        if (currencyCodePtr == currencyCode)
+            return true;
+    }
+
+    auto message = makeString(&quot;\&quot;&quot; + currencyCode, &quot;\&quot; is not a valid currency code.&quot;);
+    m_window.printErrorMessage(message);
+
+    return false;
+}
+
+bool PaymentRequestValidator::validateMerchantCapabilities(const PaymentRequest::MerchantCapabilities&amp; merchantCapabilities) const
+{
+    if (!merchantCapabilities.supports3DS &amp;&amp; !merchantCapabilities.supportsEMV &amp;&amp; !merchantCapabilities.supportsCredit &amp;&amp; !merchantCapabilities.supportsDebit) {
+        m_window.printErrorMessage(&quot;Missing merchant capabilities&quot;);
+        return false;
+    }
+
+    return true;
+}
+
+bool PaymentRequestValidator::validateSupportedNetworks(const PaymentRequest::SupportedNetworks&amp; supportedNetworks) const
+{
+    if (!supportedNetworks.amex &amp;&amp; !supportedNetworks.chinaUnionPay &amp;&amp; !supportedNetworks.discover &amp;&amp; !supportedNetworks.interac &amp;&amp; !supportedNetworks.masterCard &amp;&amp; !supportedNetworks.privateLabel &amp;&amp;!supportedNetworks.visa) {
+        m_window.printErrorMessage(&quot;Missing supported networks&quot;);
+        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 &quot;PaymentRequest.h&quot;
+
+namespace WebCore {
+
+class DOMWindow;
+
+class PaymentRequestValidator {
+public:
+    explicit PaymentRequestValidator(DOMWindow&amp;);
+    ~PaymentRequestValidator();
+
+    bool validate(const PaymentRequest&amp;) const;
+    bool validateTotal(const PaymentRequest::LineItem&amp;) const;
+
+private:
+    bool validateCountryCode(const String&amp;) const;
+    bool validateCurrencyCode(const String&amp;) const;
+    bool validateMerchantCapabilities(const PaymentRequest::MerchantCapabilities&amp;) const;
+    bool validateSupportedNetworks(const PaymentRequest::SupportedNetworks&amp;) const;
+
+    DOMWindow&amp; 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 &quot;config.h&quot;
</span><ins>+#import &quot;Payment.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(APPLE_PAY)
</span><span class="cx"> 
</span><del>-#import &quot;Payment.h&quot;
-
</del><span class="cx"> #import &quot;PaymentContact.h&quot;
</span><span class="cx"> #import &quot;PaymentMethod.h&quot;
</span><span class="cx"> #import &lt;PassKit/PassKit.h&gt;
</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 &quot;config.h&quot;
+#include &quot;PaymentContact.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#import &quot;JSMainThreadExecState.h&quot;
+#import &quot;SoftLinking.h&quot;
+#import &lt;Contacts/Contacts.h&gt;
+#import &lt;PassKit/PassKit.h&gt;
+#import &lt;runtime/JSONObject.h&gt;
+
+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:@&quot;familyName&quot;, @&quot;givenName&quot;, @&quot;emailAddress&quot;, @&quot;phoneNumber&quot;, @&quot;addressLines&quot;, @&quot;locality&quot;, @&quot;postalCode&quot;, @&quot;administrativeArea&quot;, @&quot;country&quot;, @&quot;countryCode&quot;, nil ];
+
+    return [validPropertyNames containsObject:propertyName];
+}
+
+static RetainPtr&lt;PKContact&gt; fromDictionary(NSDictionary *dictionary, String&amp; errorMessage)
+{
+    for (NSString *propertyName in dictionary) {
+        if (!isValidPaymentContactPropertyName(propertyName)) {
+            errorMessage = makeString(&quot;\&quot;&quot; + String(propertyName), &quot;\&quot; is not a valid payment contact property name.&quot;);
+            return nullptr;
+        }
+    }
+
+    auto result = adoptNS([allocPKContactInstance() init]);
+
+    NSString *familyName = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;familyName&quot;]);
+    NSString *givenName = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;givenName&quot;]);
+
+    if (familyName || givenName) {
+        auto name = adoptNS([[NSPersonNameComponents alloc] init]);
+        [name setFamilyName:familyName];
+        [name setGivenName:givenName];
+        [result setName:name.get()];
+    }
+
+    [result setEmailAddress:dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;emailAddress&quot;])];
+
+    if (NSString *phoneNumber = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;phoneNumber&quot;]))
+        [result setPhoneNumber:adoptNS([allocCNPhoneNumberInstance() initWithStringValue:phoneNumber]).get()];
+
+    NSArray *addressLines = dynamic_objc_cast&lt;NSArray&gt;(dictionary[@&quot;addressLines&quot;]);
+    if (addressLines.count) {
+        auto address = adoptNS([allocCNMutablePostalAddressInstance() init]);
+
+        [address setStreet:[addressLines componentsJoinedByString:@&quot;\n&quot;]];
+
+        if (NSString *locality = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;locality&quot;]))
+            [address setCity:locality];
+        if (NSString *postalCode = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;postalCode&quot;]))
+            [address setPostalCode:postalCode];
+        if (NSString *administrativeArea = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;administrativeArea&quot;]))
+            [address setState:administrativeArea];
+        if (NSString *country = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;country&quot;]))
+            [address setCountry:country];
+        if (NSString *countryCode = dynamic_objc_cast&lt;NSString&gt;(dictionary[@&quot;countryCode&quot;]))
+            [address setISOCountryCode:countryCode];
+
+        [result setPostalAddress:address.get()];
+    }
+
+    return result;
+}
+
+Optional&lt;PaymentContact&gt; PaymentContact::fromJS(JSC::ExecState&amp; state, JSC::JSValue value, String&amp; errorMessage)
+{
+    // FIXME: Don't round-trip using NSString.
+    auto jsonString = JSONStringify(&amp;state, value, 0);
+    if (!jsonString)
+        return Nullopt;
+
+    auto dictionary = dynamic_objc_cast&lt;NSDictionary&gt;([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&lt;NSDictionary&gt; toDictionary(PKContact *contact)
+{
+    ASSERT(contact);
+    (void)contact;
+
+    auto result = adoptNS([[NSMutableDictionary alloc] init]);
+
+    if (contact.phoneNumber)
+        [result setObject:contact.phoneNumber.stringValue forKey:@&quot;phoneNumber&quot;];
+    if (contact.emailAddress)
+        [result setObject:contact.emailAddress forKey:@&quot;emailAddress&quot;];
+    if (contact.name.givenName)
+        [result setObject:contact.name.givenName forKey:@&quot;givenName&quot;];
+    if (contact.name.familyName)
+        [result setObject:contact.name.familyName forKey:@&quot;familyName&quot;];
+    if (contact.postalAddress.street.length)
+        [result setObject:[contact.postalAddress.street componentsSeparatedByString:@&quot;\n&quot;] forKey:@&quot;addressLines&quot;];
+    if (contact.postalAddress.city)
+        [result setObject:contact.postalAddress.city forKey:@&quot;locality&quot;];
+    if (contact.postalAddress.city)
+        [result setObject:contact.postalAddress.postalCode forKey:@&quot;postalCode&quot;];
+    if (contact.postalAddress.city)
+        [result setObject:contact.postalAddress.state forKey:@&quot;administrativeArea&quot;];
+    if (contact.postalAddress.city)
+        [result setObject:contact.postalAddress.country forKey:@&quot;country&quot;];
+    if (contact.postalAddress.city)
+        [result setObject:contact.postalAddress.ISOCountryCode forKey:@&quot;countryCode&quot;];
+
+    return result;
+}
+
+JSC::JSValue PaymentContact::toJS(JSC::ExecState&amp; 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(&amp;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 &quot;config.h&quot;
+#import &quot;PaymentMethod.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#import &lt;PassKit/PassKit.h&gt;
+#import &lt;runtime/JSONObject.h&gt;
+
+namespace WebCore {
+
+RetainPtr&lt;NSDictionary&gt; toDictionary(PKPaymentMethod *paymentMethod)
+{
+    auto result = adoptNS([[NSMutableDictionary alloc] init]);
+
+    if (NSString *displayName = paymentMethod.displayName)
+        [result setObject:displayName forKey:@&quot;displayName&quot;];
+
+    if (NSString *network = paymentMethod.network)
+        [result setObject:network forKey:@&quot;network&quot;];
+
+    return result;
+}
+
+JSC::JSValue PaymentMethod::toJS(JSC::ExecState&amp; 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(&amp;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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A58E8631D19D4DF00C0EA73 /* PaymentRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PaymentRequest.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A58E8641D19D4DF00C0EA73 /* PaymentRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentRequest.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A58E86C1D19E42D00C0EA73 /* PaymentCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentCoordinator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A71D5790F33819000F9CE4E /* IdentifierRep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IdentifierRep.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A88A90217553CD7000C74F9 /* FileIconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileIconLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A88A90317553CD7000C74F9 /* FileIconLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileIconLoader.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1A8A64371D19FC5300D0E00F /* Payment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Payment.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64381D19FC5300D0E00F /* PaymentContact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentContact.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64391D19FC5300D0E00F /* PaymentMethod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentMethod.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A643D1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayPaymentAuthorizedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A643E1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentAuthorizedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A643F1D19FCFB00D0E00F /* ApplePayPaymentAuthorizedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentAuthorizedEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64401D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayPaymentMethodSelectedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64421D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayPaymentMethodSelectedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64431D19FCFB00D0E00F /* ApplePayPaymentMethodSelectedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayPaymentMethodSelectedEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64441D19FCFB00D0E00F /* ApplePaySession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePaySession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64451D19FCFB00D0E00F /* ApplePaySession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePaySession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64461D19FCFB00D0E00F /* ApplePaySession.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePaySession.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64471D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayShippingContactSelectedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64481D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayShippingContactSelectedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64491D19FCFB00D0E00F /* ApplePayShippingContactSelectedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayShippingContactSelectedEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A644B1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayShippingMethodSelectedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A644C1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayShippingMethodSelectedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A644D1D19FCFB00D0E00F /* ApplePayShippingMethodSelectedEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayShippingMethodSelectedEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A644E1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplePayValidateMerchantEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A644F1D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplePayValidateMerchantEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64501D19FCFB00D0E00F /* ApplePayValidateMerchantEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ApplePayValidateMerchantEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64651D19FDFF00D0E00F /* PaymentRequestValidator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PaymentRequestValidator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1A8A64661D19FDFF00D0E00F /* PaymentRequestValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentRequestValidator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A8F6BB10DB55CDC001DB794 /* ApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplicationCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1A8F6BB20DB55CDC001DB794 /* ApplicationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AE82FEA0CAB07EE002237AE /* JSSQLResultSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLResultSet.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AE82FEB0CAB07EE002237AE /* JSSQLResultSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSQLResultSet.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                1AE96A741D1A04D300B86768 /* JSApplePayPaymentAuthorizedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentAuthorizedEventCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A751D1A04D300B86768 /* JSApplePayPaymentMethodSelectedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentMethodSelectedEventCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A761D1A04D300B86768 /* JSApplePaySessionCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePaySessionCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A771D1A04D300B86768 /* JSApplePayShippingContactSelectedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingContactSelectedEventCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A781D1A04D300B86768 /* JSApplePayShippingMethodSelectedEventCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingMethodSelectedEventCustom.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A7A1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentAuthorizedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A7B1D1A0A8000B86768 /* JSApplePayPaymentAuthorizedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayPaymentAuthorizedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A7C1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayPaymentMethodSelectedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A7D1D1A0A8000B86768 /* JSApplePayPaymentMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayPaymentMethodSelectedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A7E1D1A0A8000B86768 /* JSApplePaySession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePaySession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A7F1D1A0A8000B86768 /* JSApplePaySession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePaySession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A801D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingContactSelectedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A811D1A0A8000B86768 /* JSApplePayShippingContactSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingContactSelectedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A821D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayShippingMethodSelectedEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A831D1A0A8000B86768 /* JSApplePayShippingMethodSelectedEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayShippingMethodSelectedEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A841D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSApplePayValidateMerchantEvent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A851D1A0A8000B86768 /* JSApplePayValidateMerchantEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSApplePayValidateMerchantEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A861D1A0CEB00B86768 /* PaymentAuthorizationStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentAuthorizationStatus.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                1AE96A871D1A0CEB00B86768 /* PaymentMerchantSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PaymentMerchantSession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 1AEF4E66170E160300AB2799 /* CachedFontClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedFontClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AEF4E68170E174800AB2799 /* CachedSVGDocumentClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedSVGDocumentClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AF326770D78B9440068F0C4 /* EditorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EditorClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</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 = &quot;&lt;group&gt;&quot;;
</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 = &quot;&lt;group&gt;&quot;;
+                };
</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 = &quot;&lt;group&gt;&quot;;
</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 &quot;config.h&quot;
+#include &quot;JSApplePayPaymentAuthorizedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &lt;runtime/JSCJSValueInlines.h&gt;
+
+namespace WebCore {
+
+JSC::JSValue JSApplePayPaymentAuthorizedEvent::payment(JSC::ExecState&amp; 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 &quot;config.h&quot;
+#include &quot;JSApplePayPaymentMethodSelectedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &lt;runtime/JSCJSValueInlines.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSApplePayPaymentMethodSelectedEvent::paymentMethod(ExecState&amp; 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 &quot;config.h&quot;
+#include &quot;JSApplePaySession.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &quot;ArrayValue.h&quot;
+#include &quot;Dictionary.h&quot;
+#include &quot;JSDOMBinding.h&quot;
+#include &quot;JSDOMConvert.h&quot;
+#include &lt;runtime/Error.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSApplePaySession::completeShippingMethodSelection(ExecState&amp; state)
+{
+    JSValue thisValue = state.thisValue();
+    JSApplePaySession* castedThis = jsDynamicCast&lt;JSApplePaySession*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return JSValue::decode(throwThisTypeError(state, &quot;ApplePaySession&quot;, &quot;completeShippingMethodSelection&quot;));
+
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSApplePaySession::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state.argumentCount() &lt; 3))
+        return JSValue::decode(throwVMError(&amp;state, createNotEnoughArgumentsError(&amp;state)));
+
+    ExceptionCode ec = 0;
+    uint16_t status = convert&lt;uint16_t&gt;(state, state.argument(0), NormalConversion);
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+
+    Dictionary newTotal = { &amp;state, state.argument(1) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+
+    ArrayValue newLineItems { &amp;state, state.argument(2) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+    impl.completeShippingMethodSelection(status, newTotal, newLineItems, ec);
+    setDOMException(&amp;state, ec);
+
+    return jsUndefined();
+}
+
+JSValue JSApplePaySession::completeShippingContactSelection(ExecState&amp; state)
+{
+    JSValue thisValue = state.thisValue();
+    JSApplePaySession* castedThis = jsDynamicCast&lt;JSApplePaySession*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return JSValue::decode(throwThisTypeError(state, &quot;ApplePaySession&quot;, &quot;completeShippingContactSelection&quot;));
+
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSApplePaySession::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state.argumentCount() &lt; 4))
+        return JSValue::decode(throwVMError(&amp;state, createNotEnoughArgumentsError(&amp;state)));
+
+    ExceptionCode ec = 0;
+    uint16_t status = convert&lt;uint16_t&gt;(state, state.argument(0), NormalConversion);
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+
+    ArrayValue newShippingMethods { &amp;state, state.argument(1) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+
+    Dictionary newTotal = { &amp;state, state.argument(2) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+
+    ArrayValue newLineItems { &amp;state, state.argument(3) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+    impl.completeShippingContactSelection(status, newShippingMethods, newTotal, newLineItems, ec);
+    setDOMException(&amp;state, ec);
+
+    return jsUndefined();
+}
+
+JSValue JSApplePaySession::completePaymentMethodSelection(ExecState&amp; state)
+{
+    JSValue thisValue = state.thisValue();
+    JSApplePaySession* castedThis = jsDynamicCast&lt;JSApplePaySession*&gt;(thisValue);
+    if (UNLIKELY(!castedThis))
+        return JSValue::decode(throwThisTypeError(state, &quot;ApplePaySession&quot;, &quot;completePaymentMethodSelection&quot;));
+
+    ASSERT_GC_OBJECT_INHERITS(castedThis, JSApplePaySession::info());
+    auto&amp; impl = castedThis-&gt;wrapped();
+    if (UNLIKELY(state.argumentCount() &lt; 2))
+        return JSValue::decode(throwVMError(&amp;state, createNotEnoughArgumentsError(&amp;state)));
+
+    ExceptionCode ec = 0;
+    Dictionary newTotal = { &amp;state, state.argument(0) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+
+    ArrayValue newLineItems { &amp;state, state.argument(1) };
+    if (UNLIKELY(state.hadException()))
+        return jsUndefined();
+    impl.completePaymentMethodSelection(newTotal, newLineItems, ec);
+    setDOMException(&amp;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 &quot;config.h&quot;
+#include &quot;JSApplePayShippingContactSelectedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &lt;runtime/JSCJSValueInlines.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+JSValue JSApplePayShippingContactSelectedEvent::shippingContact(ExecState&amp; 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 &quot;config.h&quot;
+#include &quot;JSApplePayShippingMethodSelectedEvent.h&quot;
+
+#if ENABLE(APPLE_PAY)
+
+#include &lt;runtime/JSCJSValueInlines.h&gt;
+#include &lt;runtime/ObjectConstructor.h&gt;
+#include &lt;runtime/StructureInlines.h&gt;
+
+using namespace JSC;
+
+namespace WebCore {
+
+static JSValue toJS(ExecState&amp; state, const PaymentRequest::ShippingMethod&amp; shippingMethod)
+{
+    JSObject* object = constructEmptyObject(&amp;state);
+
+    object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;label&quot;), jsString(&amp;state, shippingMethod.label));
+    object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;detail&quot;), jsString(&amp;state, shippingMethod.detail));
+
+    StringBuilder amountString;
+    amountString.appendNumber(shippingMethod.amount / 100);
+    amountString.appendLiteral(&quot;.&quot;);
+
+    unsigned decimals = shippingMethod.amount % 100;
+    if (decimals &lt; 10)
+        amountString.appendLiteral(&quot;0&quot;);
+    amountString.appendNumber(decimals);
+    object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;amount&quot;), jsString(&amp;state, amountString.toString()));
+
+    object-&gt;putDirect(state.vm(), Identifier::fromString(&amp;state, &quot;identifier&quot;), jsString(&amp;state, shippingMethod.identifier));
+
+    return object;
+}
+
+JSValue JSApplePayShippingMethodSelectedEvent::shippingMethod(ExecState&amp; 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=&quot;EventTarget&quot;
</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>