<!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>[201743] 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/201743">201743</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-06-06 23:06:26 -0700 (Mon, 06 Jun 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/201735">r201735</a>.
https://bugs.webkit.org/show_bug.cgi?id=158465
fast/events/AddEventListenerOptions-once-recursive.html fails
on all bots (Requested by ap on #webkit).
Reverted changeset:
"Implement EventListenerOptions argument to addEventListener"
https://bugs.webkit.org/show_bug.cgi?id=149466
http://trac.webkit.org/changeset/201735</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioScheduledSourceNodecpp">trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioScheduledSourceNodeh">trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioScriptProcessorNodecpp">trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioScriptProcessorNodeh">trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCoredomEventh">trunk/Source/WebCore/dom/Event.h</a></li>
<li><a href="#trunkSourceWebCoredomEventListenerMapcpp">trunk/Source/WebCore/dom/EventListenerMap.cpp</a></li>
<li><a href="#trunkSourceWebCoredomEventListenerMaph">trunk/Source/WebCore/dom/EventListenerMap.h</a></li>
<li><a href="#trunkSourceWebCoredomEventTargetcpp">trunk/Source/WebCore/dom/EventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCoredomEventTargeth">trunk/Source/WebCore/dom/EventTarget.h</a></li>
<li><a href="#trunkSourceWebCoredomEventTargetidl">trunk/Source/WebCore/dom/EventTarget.idl</a></li>
<li><a href="#trunkSourceWebCoredomMessagePortcpp">trunk/Source/WebCore/dom/MessagePort.cpp</a></li>
<li><a href="#trunkSourceWebCoredomMessagePorth">trunk/Source/WebCore/dom/MessagePort.h</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomRegisteredEventListenerh">trunk/Source/WebCore/dom/RegisteredEventListener.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowcpp">trunk/Source/WebCore/page/DOMWindow.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMWindowh">trunk/Source/WebCore/page/DOMWindow.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementh">trunk/Source/WebCore/svg/SVGElement.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasteventsAddEventListenerOptionsonceexpectedtxt">trunk/LayoutTests/fast/events/AddEventListenerOptions-once-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasteventsAddEventListenerOptionsoncerecursiveexpectedtxt">trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasteventsAddEventListenerOptionsoncerecursivehtml">trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive.html</a></li>
<li><a href="#trunkLayoutTestsfasteventsAddEventListenerOptionsoncehtml">trunk/LayoutTests/fast/events/AddEventListenerOptions-once.html</a></li>
<li><a href="#trunkLayoutTestsfasteventsAddEventListenerOptionspassiveexpectedtxt">trunk/LayoutTests/fast/events/AddEventListenerOptions-passive-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasteventsAddEventListenerOptionspassivehtml">trunk/LayoutTests/fast/events/AddEventListenerOptions-passive.html</a></li>
<li><a href="#trunkLayoutTestsfasteventsremoveEventListenerEventListenerOptionscaptureexpectedtxt">trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasteventsremoveEventListenerEventListenerOptionscapturehtml">trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture.html</a></li>
<li>trunk/LayoutTests/imported/blink/fast/events/eventlisteneroptions/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerOptionscaptureexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerOptionscapturehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/ChangeLog        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,5 +1,19 @@
</span><span class="cx"> 2016-06-06 Commit Queue <commit-queue@webkit.org>
</span><span class="cx">
</span><ins>+ Unreviewed, rolling out r201735.
+ https://bugs.webkit.org/show_bug.cgi?id=158465
+
+ fast/events/AddEventListenerOptions-once-recursive.html fails
+ on all bots (Requested by ap on #webkit).
+
+ Reverted changeset:
+
+ "Implement EventListenerOptions argument to addEventListener"
+ https://bugs.webkit.org/show_bug.cgi?id=149466
+ http://trac.webkit.org/changeset/201735
+
+2016-06-06 Commit Queue <commit-queue@webkit.org>
+
</ins><span class="cx"> Unreviewed, rolling out r201679.
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=158464
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventsAddEventListenerOptionsonceexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/AddEventListenerOptions-once-expected.txt (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/AddEventListenerOptions-once-expected.txt        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/AddEventListenerOptions-once-expected.txt        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-Tests support for 'once' member in AddEventListenerOptions.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-document.body.addEventListener('test', listenerFunction, { 'once': true })
-PASS listenerCallCount is 0
-document.body.dispatchEvent(new Event('test'))
-PASS listenerCallCount is 1
-document.body.dispatchEvent(new Event('test'))
-PASS listenerCallCount is 1
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsAddEventListenerOptionsoncerecursiveexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive-expected.txt (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive-expected.txt        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive-expected.txt        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-Tests support for 'once' member in AddEventListenerOptions.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-document.body.addEventListener('test', listenerFunction, { 'once': true })
-PASS listenerCallCount is 0
-document.body.dispatchEvent(new Event('test'))
-PASS listenerCallCount is 1
-document.body.dispatchEvent(new Event('test'))
-PASS listenerCallCount is 1
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsAddEventListenerOptionsoncerecursivehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive.html (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive.html        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/AddEventListenerOptions-once-recursive.html        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,27 +0,0 @@
</span><del>-<!DOCTYPE html>
-<html>
-<body>
-<script src="../../resources/js-test-pre.js"></script>
-<script>
-description("Tests support for 'once' member in AddEventListenerOptions.");
-
-var listenerCallCount = 0;
-function listenerFunction()
-{
- ++listenerCallCount;
-
- if (listenerCallCount == 1)
- document.body.dispatchEvent(new Event('test'));
-}
-
-evalAndLog("document.body.addEventListener('test', listenerFunction, { 'once': true })");
-shouldBe("listenerCallCount", "0");
-evalAndLog("document.body.dispatchEvent(new Event('test'))");
-shouldBe("listenerCallCount", "1");
-evalAndLog("document.body.dispatchEvent(new Event('test'))");
-shouldBe("listenerCallCount", "1");
-
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsAddEventListenerOptionsoncehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/AddEventListenerOptions-once.html (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/AddEventListenerOptions-once.html        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/AddEventListenerOptions-once.html        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,24 +0,0 @@
</span><del>-<!DOCTYPE html>
-<html>
-<body>
-<script src="../../resources/js-test-pre.js"></script>
-<script>
-description("Tests support for 'once' member in AddEventListenerOptions.");
-
-var listenerCallCount = 0;
-function listenerFunction()
-{
- ++listenerCallCount;
-}
-
-evalAndLog("document.body.addEventListener('test', listenerFunction, { 'once': true })");
-shouldBe("listenerCallCount", "0");
-evalAndLog("document.body.dispatchEvent(new Event('test'))");
-shouldBe("listenerCallCount", "1");
-evalAndLog("document.body.dispatchEvent(new Event('test'))");
-shouldBe("listenerCallCount", "1");
-
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsAddEventListenerOptionspassiveexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/AddEventListenerOptions-passive-expected.txt (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/AddEventListenerOptions-passive-expected.txt        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/AddEventListenerOptions-passive-expected.txt        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,23 +0,0 @@
</span><del>-Tests support for 'passive' member in AddEventListenerOptions.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-document.body.addEventListener('test', passiveListenerFunction, { 'passive': true })
-document.body.dispatchEvent(testEvent1)
-PASS listenerCallCount is 1
-PASS testEvent1.defaultPrevented is false
-
-document.body.addEventListener('test', activeListenerFunction, { })
-document.body.dispatchEvent(testEvent2)
-PASS listenerCallCount is 2
-PASS testEvent2.defaultPrevented is true
-
-document.body.addEventListener('test', activeListenerFunction, { 'passive': false })
-document.body.dispatchEvent(testEvent2)
-PASS listenerCallCount is 2
-PASS testEvent2.defaultPrevented is true
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsAddEventListenerOptionspassivehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/AddEventListenerOptions-passive.html (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/AddEventListenerOptions-passive.html        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/AddEventListenerOptions-passive.html        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,48 +0,0 @@
</span><del>-<!DOCTYPE html>
-<html>
-<body>
-<script src="../../resources/js-test-pre.js"></script>
-<script>
-description("Tests support for 'passive' member in AddEventListenerOptions.");
-
-var listenerCallCount = 0;
-function passiveListenerFunction(ev)
-{
- ++listenerCallCount;
- ev.preventDefault();
-}
-
-function activeListenerFunction(ev)
-{
- ++listenerCallCount;
- ev.preventDefault();
-}
-
-evalAndLog("document.body.addEventListener('test', passiveListenerFunction, { 'passive': true })");
-var testEvent1 = new Event('test', { 'cancelable': true });
-evalAndLog("document.body.dispatchEvent(testEvent1)");
-shouldBe("listenerCallCount", "1");
-shouldBeFalse("testEvent1.defaultPrevented");
-
-debug("");
-listenerCallCount = 0;
-// 'passive should be false by default.
-evalAndLog("document.body.addEventListener('test', activeListenerFunction, { })");
-var testEvent2 = new Event('test', { 'cancelable': true });
-evalAndLog("document.body.dispatchEvent(testEvent2)");
-shouldBe("listenerCallCount", "2");
-shouldBeTrue("testEvent2.defaultPrevented");
-document.body.removeEventListener('test', activeListenerFunction);
-
-debug("");
-listenerCallCount = 0;
-evalAndLog("document.body.addEventListener('test', activeListenerFunction, { 'passive': false })");
-var testEvent2 = new Event('test', { 'cancelable': true });
-evalAndLog("document.body.dispatchEvent(testEvent2)");
-shouldBe("listenerCallCount", "2");
-shouldBeTrue("testEvent2.defaultPrevented");
-
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsremoveEventListenerEventListenerOptionscaptureexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture-expected.txt (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture-expected.txt        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture-expected.txt        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,50 +0,0 @@
</span><del>-Tests support for calling removeEventListener() with an EventListenerOptions dictionary
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS testAddThenRemove(undefined, false) is true
-PASS testAddThenRemove(undefined, { 'capture': false }) is true
-PASS testAddThenRemove(undefined, { }) is true
-PASS testAddThenRemove(undefined, undefined) is true
-PASS testAddThenRemove(undefined, true) is false
-PASS testAddThenRemove(undefined, { 'capture': true }) is false
-
-PASS testAddThenRemove(false, false) is true
-PASS testAddThenRemove(false, { 'capture': false }) is true
-PASS testAddThenRemove(false, { }) is true
-PASS testAddThenRemove(false, undefined) is true
-PASS testAddThenRemove(false, true) is false
-PASS testAddThenRemove(false, { 'capture': true }) is false
-
-PASS testAddThenRemove({ 'capture': false }, false) is true
-PASS testAddThenRemove({ 'capture': false }, { 'capture': false }) is true
-PASS testAddThenRemove({ 'capture': false }, { }) is true
-PASS testAddThenRemove({ 'capture': false }, undefined) is true
-PASS testAddThenRemove({ 'capture': false }, true) is false
-PASS testAddThenRemove({ 'capture': false }, { 'capture': true }) is false
-
-PASS testAddThenRemove({ }, false) is true
-PASS testAddThenRemove({ }, { 'capture': false }) is true
-PASS testAddThenRemove({ }, { }) is true
-PASS testAddThenRemove({ }, undefined) is true
-PASS testAddThenRemove({ }, true) is false
-PASS testAddThenRemove({ }, { 'capture': true }) is false
-
-PASS testAddThenRemove(true, true) is true
-PASS testAddThenRemove(true, { 'capture': true }) is true
-PASS testAddThenRemove(true, { }) is false
-PASS testAddThenRemove(true, undefined) is false
-PASS testAddThenRemove(true, false) is false
-PASS testAddThenRemove(true, { 'capture': false }) is false
-
-PASS testAddThenRemove({ 'capture': true } , true) is true
-PASS testAddThenRemove({ 'capture': true }, { 'capture': true }) is true
-PASS testAddThenRemove({ 'capture': true }, { }) is false
-PASS testAddThenRemove({ 'capture': true }, undefined) is false
-PASS testAddThenRemove({ 'capture': true }, false) is false
-PASS testAddThenRemove({ 'capture': true }, { 'capture': false }) is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfasteventsremoveEventListenerEventListenerOptionscapturehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture.html (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture.html        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/fast/events/removeEventListener-EventListenerOptions-capture.html        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,93 +0,0 @@
</span><del>-<!DOCTYPE html>
-<html>
-<body>
-<script src="../../resources/js-test-pre.js"></script>
-<script>
-description("Tests support for calling removeEventListener() with an EventListenerOptions dictionary");
-
-var wasListenerCalled = false;
-function listenerFunction(ev)
-{
- wasListenerCalled = true;
-}
-
-function isListenerRegistered()
-{
- document.body.dispatchEvent(new Event('test'));
- var result = wasListenerCalled;
- wasListenerCalled = false;
- return result;
-}
-
-function testAddThenRemove(addOptions, removeOptions)
-{
- document.body.addEventListener('test', listenerFunction, addOptions);
- if (!isListenerRegistered())
- testFailed("Failed to add event listener with given options");
- document.body.removeEventListener('test', listenerFunction, removeOptions);
- var result = !isListenerRegistered();
-
- // clean up.
- capture = false;
- if (typeof(addOptions) === "boolean")
- capture = addOptions;
- else if (typeof(addOptions) === "object")
- capture = addOptions.capture;
- document.body.removeEventListener('test', listenerFunction, capture);
-
- return result;
-}
-
-testAddThenRemove(undefined, undefined, true);
-
-// capture is false by default.
-shouldBeTrue("testAddThenRemove(undefined, false)");
-shouldBeTrue("testAddThenRemove(undefined, { 'capture': false })");
-shouldBeTrue("testAddThenRemove(undefined, { })");
-shouldBeTrue("testAddThenRemove(undefined, undefined)");
-shouldBeFalse("testAddThenRemove(undefined, true)");
-shouldBeFalse("testAddThenRemove(undefined, { 'capture': true })");
-
-debug("");
-shouldBeTrue("testAddThenRemove(false, false)");
-shouldBeTrue("testAddThenRemove(false, { 'capture': false })");
-shouldBeTrue("testAddThenRemove(false, { })");
-shouldBeTrue("testAddThenRemove(false, undefined)");
-shouldBeFalse("testAddThenRemove(false, true)");
-shouldBeFalse("testAddThenRemove(false, { 'capture': true })");
-
-debug("");
-shouldBeTrue("testAddThenRemove({ 'capture': false }, false)");
-shouldBeTrue("testAddThenRemove({ 'capture': false }, { 'capture': false })");
-shouldBeTrue("testAddThenRemove({ 'capture': false }, { })");
-shouldBeTrue("testAddThenRemove({ 'capture': false }, undefined)");
-shouldBeFalse("testAddThenRemove({ 'capture': false }, true)");
-shouldBeFalse("testAddThenRemove({ 'capture': false }, { 'capture': true })");
-
-debug("");
-shouldBeTrue("testAddThenRemove({ }, false)");
-shouldBeTrue("testAddThenRemove({ }, { 'capture': false })");
-shouldBeTrue("testAddThenRemove({ }, { })");
-shouldBeTrue("testAddThenRemove({ }, undefined)");
-shouldBeFalse("testAddThenRemove({ }, true)");
-shouldBeFalse("testAddThenRemove({ }, { 'capture': true })");
-
-debug("");
-shouldBeTrue("testAddThenRemove(true, true)");
-shouldBeTrue("testAddThenRemove(true, { 'capture': true })");
-shouldBeFalse("testAddThenRemove(true, { })");
-shouldBeFalse("testAddThenRemove(true, undefined)");
-shouldBeFalse("testAddThenRemove(true, false)");
-shouldBeFalse("testAddThenRemove(true, { 'capture': false })");
-
-debug("");
-shouldBeTrue("testAddThenRemove({ 'capture': true } , true)");
-shouldBeTrue("testAddThenRemove({ 'capture': true }, { 'capture': true })");
-shouldBeFalse("testAddThenRemove({ 'capture': true }, { })");
-shouldBeFalse("testAddThenRemove({ 'capture': true }, undefined)");
-shouldBeFalse("testAddThenRemove({ 'capture': true }, false)");
-shouldBeFalse("testAddThenRemove({ 'capture': true }, { 'capture': false })");
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-06-06 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r201735.
+ https://bugs.webkit.org/show_bug.cgi?id=158465
+
+ fast/events/AddEventListenerOptions-once-recursive.html fails
+ on all bots (Requested by ap on #webkit).
+
+ Reverted changeset:
+
+ "Implement EventListenerOptions argument to addEventListener"
+ https://bugs.webkit.org/show_bug.cgi?id=149466
+ http://trac.webkit.org/changeset/201735
+
</ins><span class="cx"> 2016-06-06 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> Implement EventListenerOptions argument to addEventListener
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerOptionscaptureexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,6 +0,0 @@
</span><del>-
-PASS Capture boolean should be honored correctly
-PASS Capture option should be honored correctly
-PASS Supports capture option
-PASS Equivalence of option values
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerOptionscapturehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,98 +0,0 @@
</span><del>-<!DOCTYPE HTML>
-<meta charset="utf-8">
-<title>EventListenerOptions.capture</title>
-<link rel="author" title="Rick Byers" href="mailto:rbyers@chromium.org">
-<link rel="help" href="https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-
-<script>
-
-function testCaptureValue(captureValue, expectedValue) {
- var handlerPhase = undefined;
- var handler = function handler(e) {
- assert_equals(handlerPhase, undefined, "Handler invoked after remove");
- handlerPhase = e.eventPhase;
- }
- document.addEventListener('test', handler, captureValue);
- document.body.dispatchEvent(new Event('test', {'bubbles': true}));
- document.removeEventListener('test', handler, captureValue);
- document.body.dispatchEvent(new Event('test', {'bubbles': true}));
- assert_equals(handlerPhase, expectedValue, "Incorrect event phase for value: " + JSON.stringify(captureValue));
-}
-
-test(function() {
- testCaptureValue(true, Event.CAPTURING_PHASE);
- testCaptureValue(false, Event.BUBBLING_PHASE);
- testCaptureValue(null, Event.BUBBLING_PHASE);
- testCaptureValue(undefined, Event.BUBBLING_PHASE);
- testCaptureValue(2.3, Event.CAPTURING_PHASE);
- testCaptureValue(-1000.3, Event.CAPTURING_PHASE);
- testCaptureValue(NaN, Event.BUBBLING_PHASE);
- testCaptureValue(+0.0, Event.BUBBLING_PHASE);
- testCaptureValue(-0.0, Event.BUBBLING_PHASE);
- testCaptureValue("", Event.BUBBLING_PHASE);
- testCaptureValue("AAAA", Event.CAPTURING_PHASE);
-}, "Capture boolean should be honored correctly");
-
-test(function() {
- testCaptureValue({}, Event.BUBBLING_PHASE);
- testCaptureValue({capture:true}, Event.CAPTURING_PHASE);
- testCaptureValue({capture:false}, Event.BUBBLING_PHASE);
- testCaptureValue({capture:2}, Event.CAPTURING_PHASE);
- testCaptureValue({capture:0}, Event.BUBBLING_PHASE);
-}, "Capture option should be honored correctly");
-
-test(function() {
- var supportsCapture = false;
- var query_options = {
- get capture() {
- supportsCapture = true;
- return false;
- },
- get dummy() {
- assert_unreached("dummy value getter invoked");
- return false;
- }
- };
-
- document.addEventListener('test_event', null, query_options);
- assert_true(supportsCapture, "addEventListener doesn't support the capture option");
- supportsCapture = false;
- document.removeEventListener('test_event', null, query_options);
- assert_true(supportsCapture, "removeEventListener doesn't support the capture option");
-}, "Supports capture option");
-
-function testOptionEquality(addOptionValue, removeOptionValue, expectedEquality) {
- var handlerInvoked = false;
- var handler = function handler(e) {
- assert_equals(handlerInvoked, false, "Handler invoked multiple times");
- handlerInvoked = true;
- }
- document.addEventListener('test', handler, addOptionValue);
- document.removeEventListener('test', handler, removeOptionValue);
- document.body.dispatchEvent(new Event('test', {'bubbles': true}));
- assert_equals(!handlerInvoked, expectedEquality, "equivalence of options " +
- JSON.stringify(addOptionValue) + " and " + JSON.stringify(removeOptionValue));
- if (handlerInvoked)
- document.removeEventListener('test', handler, addOptionValue);
-}
-
-test(function() {
- // Option values that should be treated as equivalent
- testOptionEquality({}, false, true);
- testOptionEquality({capture: false}, false, true);
- testOptionEquality(true, {capture: true}, true);
- testOptionEquality({capture: null}, undefined, true);
- testOptionEquality({capture: true}, {dummy: false, capture: 1}, true);
- testOptionEquality({dummy: true}, false, true);
-
- // Option values that should be treated as distinct
- testOptionEquality(true, false, false);
- testOptionEquality(true, {capture:false}, false);
- testOptionEquality({}, true, false);
-
-}, "Equivalence of option values");
-
-</script>
</del></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/ChangeLog        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1,5 +1,19 @@
</span><span class="cx"> 2016-06-06 Commit Queue <commit-queue@webkit.org>
</span><span class="cx">
</span><ins>+ Unreviewed, rolling out r201735.
+ https://bugs.webkit.org/show_bug.cgi?id=158465
+
+ fast/events/AddEventListenerOptions-once-recursive.html fails
+ on all bots (Requested by ap on #webkit).
+
+ Reverted changeset:
+
+ "Implement EventListenerOptions argument to addEventListener"
+ https://bugs.webkit.org/show_bug.cgi?id=149466
+ http://trac.webkit.org/changeset/201735
+
+2016-06-06 Commit Queue <commit-queue@webkit.org>
+
</ins><span class="cx"> Unreviewed, rolling out r201679.
</span><span class="cx"> https://bugs.webkit.org/show_bug.cgi?id=158464
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioScheduledSourceNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -201,17 +201,17 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool AudioScheduledSourceNode::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool AudioScheduledSourceNode::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- bool success = AudioNode::addEventListener(eventType, WTFMove(listener), options);
</del><ins>+ bool success = AudioNode::addEventListener(eventType, WTFMove(listener), useCapture);
</ins><span class="cx"> if (success && eventType == eventNames().endedEvent)
</span><span class="cx"> m_hasEndedListener = hasEventListeners(eventNames().endedEvent);
</span><span class="cx"> return success;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool AudioScheduledSourceNode::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool AudioScheduledSourceNode::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- bool success = AudioNode::removeEventListener(eventType, listener, options);
</del><ins>+ bool success = AudioNode::removeEventListener(eventType, listener, useCapture);
</ins><span class="cx"> if (success && eventType == eventNames().endedEvent)
</span><span class="cx"> m_hasEndedListener = hasEventListeners(eventNames().endedEvent);
</span><span class="cx"> return success;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioScheduledSourceNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -101,8 +101,8 @@
</span><span class="cx"> static const double UnknownTime;
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
- bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
+ bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture) override;
</ins><span class="cx"> void removeAllEventListeners() override;
</span><span class="cx"> };
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioScriptProcessorNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -273,17 +273,17 @@
</span><span class="cx"> return std::numeric_limits<double>::infinity();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool ScriptProcessorNode::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool ScriptProcessorNode::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- bool success = AudioNode::addEventListener(eventType, WTFMove(listener), options);
</del><ins>+ bool success = AudioNode::addEventListener(eventType, WTFMove(listener), useCapture);
</ins><span class="cx"> if (success && eventType == eventNames().audioprocessEvent)
</span><span class="cx"> m_hasAudioProcessListener = hasEventListeners(eventNames().audioprocessEvent);
</span><span class="cx"> return success;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool ScriptProcessorNode::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool ScriptProcessorNode::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- bool success = AudioNode::removeEventListener(eventType, listener, options);
</del><ins>+ bool success = AudioNode::removeEventListener(eventType, listener, useCapture);
</ins><span class="cx"> if (success && eventType == eventNames().audioprocessEvent)
</span><span class="cx"> m_hasAudioProcessListener = hasEventListeners(eventNames().audioprocessEvent);
</span><span class="cx"> return success;
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioScriptProcessorNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/Modules/webaudio/ScriptProcessorNode.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -73,8 +73,8 @@
</span><span class="cx">
</span><span class="cx"> void fireProcessEvent();
</span><span class="cx">
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
- bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
+ bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture) override;
</ins><span class="cx"> void removeAllEventListeners() override;
</span><span class="cx">
</span><span class="cx"> // Double buffering
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1678,10 +1678,7 @@
</span><span class="cx"> push(@andExpression, "(${value}.isNull() || ${value}.isObject())");
</span><span class="cx"> }
</span><span class="cx"> $usedArguments{$parameterIndex} = 1;
</span><del>- } elsif ($codeGenerator->IsDictionaryType($parameter->type)) {
- push(@andExpression, "(${value}.isUndefinedOrNull() || ${value}.isObject())");
- $usedArguments{$parameterIndex} = 1;
- } elsif (($codeGenerator->GetArrayOrSequenceType($type) || $codeGenerator->IsTypedArrayType($type) || $codeGenerator->IsWrapperType($type)) && $type ne "EventListener") {
</del><ins>+ } elsif ($codeGenerator->GetArrayOrSequenceType($type) || $codeGenerator->IsTypedArrayType($type) || $codeGenerator->IsWrapperType($type)) {
</ins><span class="cx"> my $condition = "";
</span><span class="cx">
</span><span class="cx"> if ($parameter->isNullable) {
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Event.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Event.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/Event.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx"> bool defaultPrevented() const { return m_defaultPrevented; }
</span><span class="cx"> void preventDefault()
</span><span class="cx"> {
</span><del>- if (m_cancelable && !m_isExecutingPassiveEventListener)
</del><ins>+ if (m_cancelable)
</ins><span class="cx"> m_defaultPrevented = true;
</span><span class="cx"> }
</span><span class="cx"> void setDefaultPrevented(bool defaultPrevented) { m_defaultPrevented = defaultPrevented; }
</span><span class="lines">@@ -180,8 +180,6 @@
</span><span class="cx"> bool defaultHandled() const { return m_defaultHandled; }
</span><span class="cx"> void setDefaultHandled() { m_defaultHandled = true; }
</span><span class="cx">
</span><del>- void setInPassiveListener(bool value) { m_isExecutingPassiveEventListener = value; }
-
</del><span class="cx"> bool cancelBubble() const { return m_cancelBubble; }
</span><span class="cx"> void setCancelBubble(bool cancel) { m_cancelBubble = cancel; }
</span><span class="cx">
</span><span class="lines">@@ -219,7 +217,6 @@
</span><span class="cx"> bool m_defaultHandled { false };
</span><span class="cx"> bool m_cancelBubble { false };
</span><span class="cx"> bool m_isTrusted { false };
</span><del>- bool m_isExecutingPassiveEventListener { false };
</del><span class="cx">
</span><span class="cx"> unsigned short m_eventPhase { 0 };
</span><span class="cx"> EventTarget* m_currentTarget { nullptr };
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventListenerMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventListenerMap.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventListenerMap.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/EventListenerMap.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -95,9 +95,9 @@
</span><span class="cx"> return types;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static bool addListenerToVector(EventListenerVector* vector, Ref<EventListener>&& listener, const RegisteredEventListener::Options& options)
</del><ins>+static bool addListenerToVector(EventListenerVector* vector, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- RegisteredEventListener registeredListener(WTFMove(listener), options);
</del><ins>+ RegisteredEventListener registeredListener(WTFMove(listener), useCapture);
</ins><span class="cx">
</span><span class="cx"> if (vector->find(registeredListener) != notFound)
</span><span class="cx"> return false; // Duplicate listener.
</span><span class="lines">@@ -106,17 +106,17 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool EventListenerMap::add(const AtomicString& eventType, Ref<EventListener>&& listener, const RegisteredEventListener::Options& options)
</del><ins>+bool EventListenerMap::add(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> assertNoActiveIterators();
</span><span class="cx">
</span><span class="cx"> for (auto& entry : m_entries) {
</span><span class="cx"> if (entry.first == eventType)
</span><del>- return addListenerToVector(entry.second.get(), WTFMove(listener), options);
</del><ins>+ return addListenerToVector(entry.second.get(), WTFMove(listener), useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_entries.append(std::make_pair(eventType, std::make_unique<EventListenerVector>()));
</span><del>- return addListenerToVector(m_entries.last().second.get(), WTFMove(listener), options);
</del><ins>+ return addListenerToVector(m_entries.last().second.get(), WTFMove(listener), useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static bool removeListenerFromVector(EventListenerVector* listenerVector, EventListener& listener, bool useCapture, size_t& indexOfRemovedListener)
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventListenerMaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventListenerMap.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventListenerMap.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/EventListenerMap.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -54,8 +54,7 @@
</span><span class="cx"> bool containsCapturing(const AtomicString& eventType) const;
</span><span class="cx">
</span><span class="cx"> void clear();
</span><del>-
- bool add(const AtomicString& eventType, Ref<EventListener>&&, const RegisteredEventListener::Options&);
</del><ins>+ bool add(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture);
</ins><span class="cx"> bool remove(const AtomicString& eventType, EventListener&, bool useCapture, size_t& indexOfRemovedListener);
</span><span class="cx"> EventListenerVector* find(const AtomicString& eventType);
</span><span class="cx"> Vector<AtomicString> eventTypes() const;
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTarget.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTarget.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/EventTarget.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -75,26 +75,28 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool EventTarget::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool EventTarget::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- return ensureEventTargetData().eventListenerMap.add(eventType, WTFMove(listener), { options.capture, options.passive, options.once });
</del><ins>+ return ensureEventTargetData().eventListenerMap.add(eventType, WTFMove(listener), useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void EventTarget::addEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+void EventTarget::addEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><ins>+ // FIXME: listener is not supposed to be nullable.
</ins><span class="cx"> if (!listener)
</span><span class="cx"> return;
</span><del>- addEventListener(eventType, listener.releaseNonNull(), options);
</del><ins>+ addEventListener(eventType, listener.releaseNonNull(), useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void EventTarget::removeEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&& listener, const ListenerOptions& options)
</del><ins>+void EventTarget::removeEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><ins>+ // FIXME: listener is not supposed to be nullable.
</ins><span class="cx"> if (!listener)
</span><span class="cx"> return;
</span><del>- removeEventListener(eventType, *listener, options);
</del><ins>+ removeEventListener(eventType, *listener, useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-bool EventTarget::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool EventTarget::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> EventTargetData* d = eventTargetData();
</span><span class="cx"> if (!d)
</span><span class="lines">@@ -102,7 +104,7 @@
</span><span class="cx">
</span><span class="cx"> size_t indexOfRemovedListener;
</span><span class="cx">
</span><del>- if (!d->eventListenerMap.remove(eventType, listener, options.capture, indexOfRemovedListener))
</del><ins>+ if (!d->eventListenerMap.remove(eventType, listener, useCapture, indexOfRemovedListener))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> // Notify firing events planning to invoke the listener at 'index' that
</span><span class="lines">@@ -129,7 +131,7 @@
</span><span class="cx"> clearAttributeEventListener(eventType);
</span><span class="cx"> if (!listener)
</span><span class="cx"> return false;
</span><del>- return addEventListener(eventType, listener.releaseNonNull());
</del><ins>+ return addEventListener(eventType, listener.releaseNonNull(), false);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EventListener* EventTarget::getAttributeEventListener(const AtomicString& eventType)
</span><span class="lines">@@ -257,11 +259,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> for (; i < size; ++i) {
</span><del>- RegisteredEventListener registeredListener = entry[i];
-
- if (registeredListener.isMarkedForRemoval)
- continue;
-
</del><ins>+ RegisteredEventListener& registeredListener = entry[i];
</ins><span class="cx"> if (event.eventPhase() == Event::CAPTURING_PHASE && !registeredListener.useCapture)
</span><span class="cx"> continue;
</span><span class="cx"> if (event.eventPhase() == Event::BUBBLING_PHASE && registeredListener.useCapture)
</span><span class="lines">@@ -272,27 +270,12 @@
</span><span class="cx"> if (event.immediatePropagationStopped())
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- if (registeredListener.isPassive)
- event.setInPassiveListener(true);
-
- // Mark listener for removal before executing the listener, in case the listener tries to
- // dispatch an event that would cause it to get executed again.
- if (registeredListener.isOnce)
- registeredListener.isMarkedForRemoval = true;
-
</del><span class="cx"> InspectorInstrumentationCookie cookie = InspectorInstrumentation::willHandleEvent(context, event);
</span><span class="cx"> // To match Mozilla, the AT_TARGET phase fires both capturing and bubbling
</span><span class="cx"> // event listeners, even though that violates some versions of the DOM spec.
</span><span class="cx"> registeredListener.listener->handleEvent(context, &event);
</span><span class="cx"> InspectorInstrumentation::didHandleEvent(cookie);
</span><del>-
- if (registeredListener.isPassive)
- event.setInPassiveListener(false);
-
- if (registeredListener.isOnce)
- removeEventListener(event.type(), *registeredListener.listener, ListenerOptions(registeredListener.useCapture));
</del><span class="cx"> }
</span><del>-
</del><span class="cx"> d->firingEventIterators->removeLast();
</span><span class="cx">
</span><span class="cx"> if (document)
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTarget.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTarget.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/EventTarget.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -121,31 +121,10 @@
</span><span class="cx"> virtual DOMWindow* toDOMWindow();
</span><span class="cx"> virtual bool isMessagePort() const;
</span><span class="cx">
</span><del>- struct ListenerOptions {
- ListenerOptions(bool capture = false)
- : capture(capture)
- { }
-
- bool capture;
- };
-
- struct AddEventListenerOptions : public ListenerOptions {
- AddEventListenerOptions(bool capture = false, bool passive = false, bool once = false)
- : ListenerOptions(capture)
- , passive(passive)
- , once(once)
- { }
-
- bool passive;
- bool once;
- };
-
</del><span class="cx"> void addEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&&, bool useCapture);
</span><span class="cx"> void removeEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&&, bool useCapture);
</span><del>- void addEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&&, const AddEventListenerOptions&);
- void removeEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&&, const ListenerOptions&);
- virtual bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions& = { });
- virtual bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&);
</del><ins>+ virtual bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture);
+ virtual bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture);
</ins><span class="cx">
</span><span class="cx"> virtual void removeAllEventListeners();
</span><span class="cx"> virtual bool dispatchEvent(Event&);
</span><span class="lines">@@ -230,16 +209,6 @@
</span><span class="cx"> return d->eventListenerMap.containsCapturing(eventType);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline void EventTarget::addEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&& listener, bool useCapture)
-{
- addEventListenerForBindings(eventType, WTFMove(listener), AddEventListenerOptions(useCapture));
-}
-
-inline void EventTarget::removeEventListenerForBindings(const AtomicString& eventType, RefPtr<EventListener>&& listener, bool useCapture)
-{
- removeEventListenerForBindings(eventType, WTFMove(listener), ListenerOptions(useCapture));
-}
-
</del><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // EventTarget_h
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventTargetidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventTarget.idl (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventTarget.idl        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/EventTarget.idl        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -25,11 +25,6 @@
</span><span class="cx"> JSCustomToNativeObject,
</span><span class="cx"> ObjCProtocol,
</span><span class="cx"> ] interface EventTarget {
</span><del>-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
- [ImplementedAs=addEventListenerForBindings] void addEventListener([AtomicString] DOMString type, EventListener? listener, optional AddEventListenerOptions options);
- [ImplementedAs=removeEventListenerForBindings] void removeEventListener([AtomicString] DOMString type, EventListener? listener, optional EventListenerOptions options);
-#endif
-
</del><span class="cx"> // FIXME: The 'type' and 'listener' parameters should not be optional.
</span><span class="cx"> [ObjCLegacyUnnamedParameters, ImplementedAs=addEventListenerForBindings] void addEventListener([AtomicString] optional DOMString type = "undefined", optional EventListener? listener, optional boolean useCapture = false);
</span><span class="cx"> [ObjCLegacyUnnamedParameters, ImplementedAs=removeEventListenerForBindings] void removeEventListener([AtomicString] optional DOMString type = "undefined", optional EventListener? listener, optional boolean useCapture = false);
</span><span class="lines">@@ -37,13 +32,3 @@
</span><span class="cx"> // FIXME: event should not be nullable.
</span><span class="cx"> [ImplementedAs=dispatchEventForBindings, RaisesException] boolean dispatchEvent(Event? event);
</span><span class="cx"> };
</span><del>-
-dictionary EventListenerOptions {
- boolean capture = false;
-};
-
-dictionary AddEventListenerOptions {
- boolean capture = false;
- boolean passive = false;
- boolean once = false;
-};
</del></span></pre></div>
<a id="trunkSourceWebCoredomMessagePortcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MessagePort.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MessagePort.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/MessagePort.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -221,11 +221,11 @@
</span><span class="cx"> return portArray;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool MessagePort::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool MessagePort::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> if (listener->isAttribute() && eventType == eventNames().messageEvent)
</span><span class="cx"> start();
</span><del>- return EventTargetWithInlineData::addEventListener(eventType, WTFMove(listener), options);
</del><ins>+ return EventTargetWithInlineData::addEventListener(eventType, WTFMove(listener), useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoredomMessagePorth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/MessagePort.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/MessagePort.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/MessagePort.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> // A port gets neutered when it is transferred to a new owner via postMessage().
</span><span class="cx"> bool isNeutered() { return !m_entangledChannel; }
</span><span class="cx">
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> explicit MessagePort(ScriptExecutionContext&);
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/Node.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1907,9 +1907,9 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static inline bool tryAddEventListener(Node* targetNode, const AtomicString& eventType, Ref<EventListener>&& listener, const EventTarget::AddEventListenerOptions& options)
</del><ins>+static inline bool tryAddEventListener(Node* targetNode, const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- if (!targetNode->EventTarget::addEventListener(eventType, listener.copyRef(), options))
</del><ins>+ if (!targetNode->EventTarget::addEventListener(eventType, listener.copyRef(), useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> targetNode->document().addListenerTypeIfNeeded(eventType);
</span><span class="lines">@@ -1927,7 +1927,7 @@
</span><span class="cx"> // This code was added to address <rdar://problem/5846492> Onorientationchange event not working for document.body.
</span><span class="cx"> // Forward this call to addEventListener() to the window since these are window-only events.
</span><span class="cx"> if (eventType == eventNames().orientationchangeEvent || eventType == eventNames().resizeEvent)
</span><del>- targetNode->document().domWindow()->addEventListener(eventType, WTFMove(listener), options);
</del><ins>+ targetNode->document().domWindow()->addEventListener(eventType, WTFMove(listener), useCapture);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx"> if (eventNames().isTouchEventType(eventType))
</span><span class="lines">@@ -1943,14 +1943,14 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool Node::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool Node::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- return tryAddEventListener(this, eventType, WTFMove(listener), options);
</del><ins>+ return tryAddEventListener(this, eventType, WTFMove(listener), useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString& eventType, EventListener& listener, const EventTarget::ListenerOptions& options)
</del><ins>+static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- if (!targetNode->EventTarget::removeEventListener(eventType, listener, options))
</del><ins>+ if (!targetNode->EventTarget::removeEventListener(eventType, listener, useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> // FIXME: Notify Document that the listener has vanished. We need to keep track of a number of
</span><span class="lines">@@ -1968,7 +1968,7 @@
</span><span class="cx"> // This code was added to address <rdar://problem/5846492> Onorientationchange event not working for document.body.
</span><span class="cx"> // Forward this call to removeEventListener() to the window since these are window-only events.
</span><span class="cx"> if (eventType == eventNames().orientationchangeEvent || eventType == eventNames().resizeEvent)
</span><del>- targetNode->document().domWindow()->removeEventListener(eventType, listener, options);
</del><ins>+ targetNode->document().domWindow()->removeEventListener(eventType, listener, useCapture);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx"> if (eventNames().isTouchEventType(eventType))
</span><span class="lines">@@ -1984,9 +1984,9 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool Node::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool Node::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- return tryRemoveEventListener(this, eventType, listener, options);
</del><ins>+ return tryRemoveEventListener(this, eventType, listener, useCapture);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> typedef HashMap<Node*, std::unique_ptr<EventTargetData>> EventTargetDataMap;
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/Node.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -507,8 +507,8 @@
</span><span class="cx"> EventTargetInterface eventTargetInterface() const override;
</span><span class="cx"> ScriptExecutionContext* scriptExecutionContext() const final; // Implemented in Document.h
</span><span class="cx">
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
- bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
+ bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture) override;
</ins><span class="cx">
</span><span class="cx"> using EventTarget::dispatchEvent;
</span><span class="cx"> bool dispatchEvent(Event&) override;
</span></span></pre></div>
<a id="trunkSourceWebCoredomRegisteredEventListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/RegisteredEventListener.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/RegisteredEventListener.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/dom/RegisteredEventListener.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -31,26 +31,6 @@
</span><span class="cx">
</span><span class="cx"> class RegisteredEventListener {
</span><span class="cx"> public:
</span><del>- struct Options {
- Options(bool capture = false, bool passive = false, bool once = false)
- : capture(capture)
- , passive(passive)
- , once(once)
- { }
-
- bool capture;
- bool passive;
- bool once;
- };
-
- RegisteredEventListener(Ref<EventListener>&& listener, const Options& options)
- : listener(WTFMove(listener))
- , useCapture(options.capture)
- , isPassive(options.passive)
- , isOnce(options.once)
- {
- }
-
</del><span class="cx"> RegisteredEventListener(Ref<EventListener>&& listener, bool useCapture)
</span><span class="cx"> : listener(WTFMove(listener))
</span><span class="cx"> , useCapture(useCapture)
</span><span class="lines">@@ -58,16 +38,11 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RefPtr<EventListener> listener;
</span><del>- bool useCapture { false };
- bool isPassive { false };
- bool isOnce { false };
- bool isMarkedForRemoval { false };
</del><ins>+ bool useCapture;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> inline bool operator==(const RegisteredEventListener& a, const RegisteredEventListener& b)
</span><span class="cx"> {
</span><del>- // Other data members are purposefully not checked. The DOM specification says that upon adding / removing
- // EventListeners, we should only check the type and the capture flag.
</del><span class="cx"> return *a.listener == *b.listener && a.useCapture == b.useCapture;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -5228,13 +5228,13 @@
</span><span class="cx"> return HTMLElement::dispatchEvent(event);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool HTMLMediaElement::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool HTMLMediaElement::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> if (eventType != eventNames().webkitplaybacktargetavailabilitychangedEvent)
</span><del>- return Node::addEventListener(eventType, WTFMove(listener), options);
</del><ins>+ return Node::addEventListener(eventType, WTFMove(listener), useCapture);
</ins><span class="cx">
</span><span class="cx"> bool isFirstAvailabilityChangedListener = !hasEventListeners(eventNames().webkitplaybacktargetavailabilitychangedEvent);
</span><del>- if (!Node::addEventListener(eventType, WTFMove(listener), options))
</del><ins>+ if (!Node::addEventListener(eventType, WTFMove(listener), useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (isFirstAvailabilityChangedListener) {
</span><span class="lines">@@ -5248,12 +5248,12 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool HTMLMediaElement::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool HTMLMediaElement::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> if (eventType != eventNames().webkitplaybacktargetavailabilitychangedEvent)
</span><del>- return Node::removeEventListener(eventType, listener, options);
</del><ins>+ return Node::removeEventListener(eventType, listener, useCapture);
</ins><span class="cx">
</span><del>- if (!Node::removeEventListener(eventType, listener, options))
</del><ins>+ if (!Node::removeEventListener(eventType, listener, useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> bool didRemoveLastAvailabilityChangedListener = !hasEventListeners(eventNames().webkitplaybacktargetavailabilitychangedEvent);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -342,8 +342,8 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(WIRELESS_PLAYBACK_TARGET)
</span><span class="cx"> void webkitShowPlaybackTargetPicker();
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
- bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
+ bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture) override;
</ins><span class="cx">
</span><span class="cx"> void wirelessRoutesAvailableDidChange() override;
</span><span class="cx"> bool canPlayToWirelessPlaybackTarget() const override;
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/page/DOMWindow.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -1722,9 +1722,9 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool DOMWindow::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool DOMWindow::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- if (!EventTarget::addEventListener(eventType, WTFMove(listener), options))
</del><ins>+ if (!EventTarget::addEventListener(eventType, WTFMove(listener), useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (Document* document = this->document()) {
</span><span class="lines">@@ -1825,9 +1825,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool DOMWindow::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool DOMWindow::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><del>- if (!EventTarget::removeEventListener(eventType, listener, options.capture))
</del><ins>+ if (!EventTarget::removeEventListener(eventType, listener, useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (Document* document = this->document()) {
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMWindowh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMWindow.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMWindow.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/page/DOMWindow.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -279,8 +279,8 @@
</span><span class="cx">
</span><span class="cx"> // Events
</span><span class="cx"> // EventTarget API
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
- bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
+ bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture) override;
</ins><span class="cx"> void removeAllEventListeners() override;
</span><span class="cx">
</span><span class="cx"> using EventTarget::dispatchEvent;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -528,10 +528,10 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool SVGElement::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options)
</del><ins>+bool SVGElement::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> // Add event listener to regular DOM element
</span><del>- if (!Node::addEventListener(eventType, listener.copyRef(), options))
</del><ins>+ if (!Node::addEventListener(eventType, listener.copyRef(), useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (containingShadowRoot())
</span><span class="lines">@@ -541,17 +541,17 @@
</span><span class="cx"> ASSERT(!instanceUpdatesBlocked());
</span><span class="cx"> for (auto* instance : instances()) {
</span><span class="cx"> ASSERT(instance->correspondingElement() == this);
</span><del>- bool result = instance->Node::addEventListener(eventType, listener.copyRef(), options);
</del><ins>+ bool result = instance->Node::addEventListener(eventType, listener.copyRef(), useCapture);
</ins><span class="cx"> ASSERT_UNUSED(result, result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool SVGElement::removeEventListener(const AtomicString& eventType, EventListener& listener, const ListenerOptions& options)
</del><ins>+bool SVGElement::removeEventListener(const AtomicString& eventType, EventListener& listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx"> if (containingShadowRoot())
</span><del>- return Node::removeEventListener(eventType, listener, options);
</del><ins>+ return Node::removeEventListener(eventType, listener, useCapture);
</ins><span class="cx">
</span><span class="cx"> // EventTarget::removeEventListener creates a PassRefPtr around the given EventListener
</span><span class="cx"> // object when creating a temporary RegisteredEventListener object used to look up the
</span><span class="lines">@@ -561,7 +561,7 @@
</span><span class="cx"> Ref<EventListener> protector(listener);
</span><span class="cx">
</span><span class="cx"> // Remove event listener from regular DOM element
</span><del>- if (!Node::removeEventListener(eventType, listener, options))
</del><ins>+ if (!Node::removeEventListener(eventType, listener, useCapture))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> // Remove event listener from all shadow tree DOM element instances
</span><span class="lines">@@ -569,7 +569,7 @@
</span><span class="cx"> for (auto& instance : instances()) {
</span><span class="cx"> ASSERT(instance->correspondingElement() == this);
</span><span class="cx">
</span><del>- if (instance->Node::removeEventListener(eventType, listener, options))
</del><ins>+ if (instance->Node::removeEventListener(eventType, listener, useCapture))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> // This case can only be hit for event listeners created from markup
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.h (201742 => 201743)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.h        2016-06-07 06:05:03 UTC (rev 201742)
+++ trunk/Source/WebCore/svg/SVGElement.h        2016-06-07 06:06:26 UTC (rev 201743)
</span><span class="lines">@@ -133,8 +133,8 @@
</span><span class="cx">
</span><span class="cx"> virtual bool haveLoadedRequiredResources();
</span><span class="cx">
</span><del>- bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
- bool removeEventListener(const AtomicString& eventType, EventListener&, const ListenerOptions&) override;
</del><ins>+ bool addEventListener(const AtomicString& eventType, Ref<EventListener>&&, bool useCapture) override;
+ bool removeEventListener(const AtomicString& eventType, EventListener&, bool useCapture) override;
</ins><span class="cx"> bool hasFocusEventListeners() const;
</span><span class="cx">
</span><span class="cx"> #if ENABLE(CSS_REGIONS)
</span></span></pre>
</div>
</div>
</body>
</html>