<!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>[282198] trunk</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/282198">282198</a></dd>
<dt>Author</dt> <dd>youenn@apple.com</dd>
<dt>Date</dt> <dd>2021-09-09 00:21:18 -0700 (Thu, 09 Sep 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add support for RTCDataChannel closing event
https://bugs.webkit.org/show_bug.cgi?id=229988

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

* web-platform-tests/webrtc/RTCDataChannel-close-expected.txt:
* web-platform-tests/webrtc/idlharness.https.window-expected.txt:

Source/WebCore:

Add support for the closing event.
Updating close method as per https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-close:
- make the channel enter closing state (without firing event)
- wait for the state to move to closed from the backend.

We also add support for the error event by checking, when entering closed state whether
the channel is in an error state.

Covered by rebased test.

* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::close):
(WebCore::RTCDataChannel::didChangeReadyState):
(WebCore::RTCDataChannel::stop):
* Modules/mediastream/RTCDataChannel.idl:
* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:
(WebCore::LibWebRTCDataChannelHandler::checkState):
* dom/EventNames.h:

LayoutTests:

* TestExpectations:
Unskip no longer timing out test.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCDataChannelcloseexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcidlharnesshttpswindowexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDataChannelcpp">trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDataChannelidl">trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamlibwebrtcLibWebRTCDataChannelHandlercpp">trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp</a></li>
<li><a href="#trunkSourceWebCoredomEventNamesh">trunk/Source/WebCore/dom/EventNames.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog      2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/LayoutTests/ChangeLog 2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -1,5 +1,15 @@
</span><span class="cx"> 2021-09-09  Youenn Fablet  <youenn@apple.com>
</span><span class="cx"> 
</span><ins>+        Add support for RTCDataChannel closing event
+        https://bugs.webkit.org/show_bug.cgi?id=229988
+
+        Reviewed by Eric Carlson.
+
+        * TestExpectations:
+        Unskip no longer timing out test.
+
+2021-09-09  Youenn Fablet  <youenn@apple.com>
+
</ins><span class="cx">         Add support for RTCSctpTransport
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=229292
</span><span class="cx">         <rdar://problem/82394152>
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations       2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/LayoutTests/TestExpectations  2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -2194,7 +2194,6 @@
</span><span class="cx"> imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html [ Skip ]
</span><span class="cx"> imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-remote-track-mute.https.html [ Skip ]
</span><span class="cx"> imported/w3c/web-platform-tests/webrtc/RTCDataChannel-bufferedAmount.html [ Skip ]
</span><del>-imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close.html [ Skip ]
</del><span class="cx"> imported/w3c/web-platform-tests/webrtc/RTCIceConnectionState-candidate-pair.https.html [ Skip ]
</span><span class="cx"> imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-mandatory-getStats.https.html [ Skip ]
</span><span class="cx"> imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-onicecandidateerror.https.html [ Skip ]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/LayoutTests/imported/w3c/ChangeLog    2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -1,5 +1,15 @@
</span><span class="cx"> 2021-09-09  Youenn Fablet  <youenn@apple.com>
</span><span class="cx"> 
</span><ins>+        Add support for RTCDataChannel closing event
+        https://bugs.webkit.org/show_bug.cgi?id=229988
+
+        Reviewed by Eric Carlson.
+
+        * web-platform-tests/webrtc/RTCDataChannel-close-expected.txt:
+        * web-platform-tests/webrtc/idlharness.https.window-expected.txt:
+
+2021-09-09  Youenn Fablet  <youenn@apple.com>
+
</ins><span class="cx">         Add support for RTCSctpTransport
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=229292
</span><span class="cx">         <rdar://problem/82394152>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcRTCDataChannelcloseexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close-expected.txt (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close-expected.txt       2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannel-close-expected.txt  2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -1,12 +1,10 @@
</span><span class="cx"> 
</span><del>-Harness Error (TIMEOUT), message = null
</del><ins>+PASS Close datachannel causes onclosing and onclose to be called
+PASS Close datachannel causes closing and close event to be called
+FAIL Close peerconnection causes close event and error to be called on datachannel Can't find variable: RTCErrorEvent
+PASS Close peerconnection after datachannel close causes no events
+PASS Close negotiated datachannel causes onclosing and onclose to be called
+PASS Close negotiated datachannel causes closing and close event to be called
+FAIL Close peerconnection causes close event and error to be called on negotiated datachannel Can't find variable: RTCErrorEvent
+PASS Close peerconnection after negotiated datachannel close causes no events
</ins><span class="cx"> 
</span><del>-FAIL Close datachannel causes onclosing and onclose to be called assert_true: Closing event was seen expected true got false
-FAIL Close datachannel causes closing and close event to be called assert_true: Closing event was seen expected true got false
-FAIL Close peerconnection causes close event and error to be called on datachannel assert_array_equals: lengths differ, expected array ["error", "close"] length 2, got ["close"] length 1
-TIMEOUT Close peerconnection after datachannel close causes no events Test timed out
-NOTRUN Close negotiated datachannel causes onclosing and onclose to be called
-NOTRUN Close negotiated datachannel causes closing and close event to be called
-NOTRUN Close peerconnection causes close event and error to be called on negotiated datachannel
-NOTRUN Close peerconnection after negotiated datachannel close causes no events
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcidlharnesshttpswindowexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt    2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt       2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -404,7 +404,7 @@
</span><span class="cx"> PASS RTCDataChannel interface: attribute onopen
</span><span class="cx"> PASS RTCDataChannel interface: attribute onbufferedamountlow
</span><span class="cx"> PASS RTCDataChannel interface: attribute onerror
</span><del>-FAIL RTCDataChannel interface: attribute onclosing assert_true: The prototype object must have a property "onclosing" expected true got false
</del><ins>+PASS RTCDataChannel interface: attribute onclosing
</ins><span class="cx"> PASS RTCDataChannel interface: attribute onclose
</span><span class="cx"> PASS RTCDataChannel interface: operation close()
</span><span class="cx"> PASS RTCDataChannel interface: attribute onmessage
</span><span class="lines">@@ -428,7 +428,7 @@
</span><span class="cx"> PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onopen" with the proper type
</span><span class="cx"> PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onbufferedamountlow" with the proper type
</span><span class="cx"> PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onerror" with the proper type
</span><del>-FAIL RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclosing" with the proper type assert_inherits: property "onclosing" not found in prototype chain
</del><ins>+PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclosing" with the proper type
</ins><span class="cx"> PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclose" with the proper type
</span><span class="cx"> PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "close()" with the proper type
</span><span class="cx"> PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onmessage" with the proper type
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/Source/WebCore/ChangeLog      2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -1,5 +1,31 @@
</span><span class="cx"> 2021-09-09  Youenn Fablet  <youenn@apple.com>
</span><span class="cx"> 
</span><ins>+        Add support for RTCDataChannel closing event
+        https://bugs.webkit.org/show_bug.cgi?id=229988
+
+        Reviewed by Eric Carlson.
+
+        Add support for the closing event.
+        Updating close method as per https://w3c.github.io/webrtc-pc/#dom-rtcdatachannel-close:
+        - make the channel enter closing state (without firing event)
+        - wait for the state to move to closed from the backend.
+
+        We also add support for the error event by checking, when entering closed state whether
+        the channel is in an error state.
+
+        Covered by rebased test.
+
+        * Modules/mediastream/RTCDataChannel.cpp:
+        (WebCore::RTCDataChannel::close):
+        (WebCore::RTCDataChannel::didChangeReadyState):
+        (WebCore::RTCDataChannel::stop):
+        * Modules/mediastream/RTCDataChannel.idl:
+        * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:
+        (WebCore::LibWebRTCDataChannelHandler::checkState):
+        * dom/EventNames.h:
+
+2021-09-09  Youenn Fablet  <youenn@apple.com>
+
</ins><span class="cx">         Add support for RTCSctpTransport
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=229292
</span><span class="cx">         <rdar://problem/82394152>
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDataChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp      2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.cpp 2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -175,14 +175,15 @@
</span><span class="cx">     if (m_stopped)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_stopped = true;
-    m_readyState = RTCDataChannelState::Closed;
</del><ins>+    if (m_readyState == RTCDataChannelState::Closing || m_readyState == RTCDataChannelState::Closed)
+        return;
</ins><span class="cx"> 
</span><ins>+    m_readyState = RTCDataChannelState::Closing;
+
</ins><span class="cx">     m_messageQueue.clear();
</span><span class="cx"> 
</span><span class="cx">     if (m_handler)
</span><span class="cx">         m_handler->close();
</span><del>-    m_handler = nullptr;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RTCDataChannel::virtualHasPendingActivity() const
</span><span class="lines">@@ -198,14 +199,19 @@
</span><span class="cx">     m_readyState = newState;
</span><span class="cx"> 
</span><span class="cx">     switch (m_readyState) {
</span><ins>+    case RTCDataChannelState::Connecting:
+        ASSERT_NOT_REACHED();
+        break;
</ins><span class="cx">     case RTCDataChannelState::Open:
</span><span class="cx">         scheduleDispatchEvent(Event::create(eventNames().openEvent, Event::CanBubble::No, Event::IsCancelable::No));
</span><span class="cx">         break;
</span><ins>+    case RTCDataChannelState::Closing:
+        scheduleDispatchEvent(Event::create(eventNames().closingEvent, Event::CanBubble::No, Event::IsCancelable::No));
+        break;
</ins><span class="cx">     case RTCDataChannelState::Closed:
</span><span class="cx">         scheduleDispatchEvent(Event::create(eventNames().closeEvent, Event::CanBubble::No, Event::IsCancelable::No));
</span><ins>+        m_stopped = true;
</ins><span class="cx">         break;
</span><del>-    default:
-        break;
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -245,6 +251,8 @@
</span><span class="cx">     removeFromDataChannelLocalMapIfNeeded();
</span><span class="cx"> 
</span><span class="cx">     close();
</span><ins>+    m_stopped = true;
+    m_handler = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RTCDataChannel::scheduleDispatchEvent(Ref<Event>&& event)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDataChannelidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl      2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDataChannel.idl 2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx">     attribute EventHandler onopen;
</span><span class="cx">     attribute EventHandler onerror;
</span><span class="cx">     attribute EventHandler onclose;
</span><ins>+    attribute EventHandler onclosing;
</ins><span class="cx">     attribute EventHandler onmessage;
</span><span class="cx">     attribute EventHandler onbufferedamountlow;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamlibwebrtcLibWebRTCDataChannelHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp       2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp  2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -129,6 +129,7 @@
</span><span class="cx"> 
</span><span class="cx"> void LibWebRTCDataChannelHandler::checkState()
</span><span class="cx"> {
</span><ins>+    bool hasError = false;
</ins><span class="cx">     RTCDataChannelState state;
</span><span class="cx">     switch (m_channel->state()) {
</span><span class="cx">     case webrtc::DataChannelInterface::kConnecting:
</span><span class="lines">@@ -141,6 +142,7 @@
</span><span class="cx">         state = RTCDataChannelState::Closing;
</span><span class="cx">         break;
</span><span class="cx">     case webrtc::DataChannelInterface::kClosed:
</span><ins>+        hasError = !m_channel->error().ok();
</ins><span class="cx">         state = RTCDataChannelState::Closed;
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="lines">@@ -150,7 +152,9 @@
</span><span class="cx">         m_bufferedMessages.append(state);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    postTask([protectedClient = makeRef(*m_client), state] {
</del><ins>+    postTask([protectedClient = makeRef(*m_client), state, hasError] {
+        if (hasError)
+            protectedClient->didDetectError();
</ins><span class="cx">         protectedClient->didChangeReadyState(state);
</span><span class="cx">     });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventNamesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventNames.h (282197 => 282198)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventNames.h    2021-09-09 07:13:28 UTC (rev 282197)
+++ trunk/Source/WebCore/dom/EventNames.h       2021-09-09 07:21:18 UTC (rev 282198)
</span><span class="lines">@@ -89,6 +89,7 @@
</span><span class="cx">     macro(checking) \
</span><span class="cx">     macro(click) \
</span><span class="cx">     macro(close) \
</span><ins>+    macro(closing) \
</ins><span class="cx">     macro(complete) \
</span><span class="cx">     macro(compositionend) \
</span><span class="cx">     macro(compositionstart) \
</span></span></pre>
</div>
</div>

</body>
</html>