<!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:

&quot;Implement EventListenerOptions argument to addEventListener&quot;
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  &lt;commit-queue@webkit.org&gt;
</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:
+
+        &quot;Implement EventListenerOptions argument to addEventListener&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=149466
+        http://trac.webkit.org/changeset/201735
+
+2016-06-06  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
</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 &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-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 &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-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>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-description(&quot;Tests support for 'once' member in AddEventListenerOptions.&quot;);
-
-var listenerCallCount = 0;
-function listenerFunction()
-{
-    ++listenerCallCount;
-
-    if (listenerCallCount == 1)
-        document.body.dispatchEvent(new Event('test'));
-}
-
-evalAndLog(&quot;document.body.addEventListener('test', listenerFunction, { 'once': true })&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;0&quot;);
-evalAndLog(&quot;document.body.dispatchEvent(new Event('test'))&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;1&quot;);
-evalAndLog(&quot;document.body.dispatchEvent(new Event('test'))&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;1&quot;);
-
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</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>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-description(&quot;Tests support for 'once' member in AddEventListenerOptions.&quot;);
-
-var listenerCallCount = 0;
-function listenerFunction()
-{
-    ++listenerCallCount;
-}
-
-evalAndLog(&quot;document.body.addEventListener('test', listenerFunction, { 'once': true })&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;0&quot;);
-evalAndLog(&quot;document.body.dispatchEvent(new Event('test'))&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;1&quot;);
-evalAndLog(&quot;document.body.dispatchEvent(new Event('test'))&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;1&quot;);
-
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</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 &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-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>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-description(&quot;Tests support for 'passive' member in AddEventListenerOptions.&quot;);
-
-var listenerCallCount = 0;
-function passiveListenerFunction(ev)
-{
-    ++listenerCallCount;
-    ev.preventDefault();
-}
-
-function activeListenerFunction(ev)
-{
-    ++listenerCallCount;
-    ev.preventDefault();
-}
-
-evalAndLog(&quot;document.body.addEventListener('test', passiveListenerFunction, { 'passive': true })&quot;);
-var testEvent1 = new Event('test', { 'cancelable': true });
-evalAndLog(&quot;document.body.dispatchEvent(testEvent1)&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;1&quot;);
-shouldBeFalse(&quot;testEvent1.defaultPrevented&quot;);
-
-debug(&quot;&quot;);
-listenerCallCount = 0;
-// 'passive should be false by default.
-evalAndLog(&quot;document.body.addEventListener('test', activeListenerFunction, { })&quot;);
-var testEvent2 = new Event('test', { 'cancelable': true });
-evalAndLog(&quot;document.body.dispatchEvent(testEvent2)&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;2&quot;);
-shouldBeTrue(&quot;testEvent2.defaultPrevented&quot;);
-document.body.removeEventListener('test', activeListenerFunction);
-
-debug(&quot;&quot;);
-listenerCallCount = 0;
-evalAndLog(&quot;document.body.addEventListener('test', activeListenerFunction, { 'passive': false })&quot;);
-var testEvent2 = new Event('test', { 'cancelable': true });
-evalAndLog(&quot;document.body.dispatchEvent(testEvent2)&quot;);
-shouldBe(&quot;listenerCallCount&quot;, &quot;2&quot;);
-shouldBeTrue(&quot;testEvent2.defaultPrevented&quot;);
-
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</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 &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-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>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-description(&quot;Tests support for calling removeEventListener() with an EventListenerOptions dictionary&quot;);
-
-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(&quot;Failed to add event listener with given options&quot;);
-    document.body.removeEventListener('test', listenerFunction, removeOptions);
-    var result = !isListenerRegistered();
-
-    // clean up.
-    capture = false;
-    if (typeof(addOptions) === &quot;boolean&quot;)
-        capture = addOptions;
-    else if (typeof(addOptions) === &quot;object&quot;)
-        capture = addOptions.capture;
-    document.body.removeEventListener('test', listenerFunction, capture);
-
-    return result;
-}
-
-testAddThenRemove(undefined, undefined, true);
-
-// capture is false by default.
-shouldBeTrue(&quot;testAddThenRemove(undefined, false)&quot;);
-shouldBeTrue(&quot;testAddThenRemove(undefined, { 'capture': false })&quot;);
-shouldBeTrue(&quot;testAddThenRemove(undefined, { })&quot;);
-shouldBeTrue(&quot;testAddThenRemove(undefined, undefined)&quot;);
-shouldBeFalse(&quot;testAddThenRemove(undefined, true)&quot;);
-shouldBeFalse(&quot;testAddThenRemove(undefined, { 'capture': true })&quot;);
-
-debug(&quot;&quot;);
-shouldBeTrue(&quot;testAddThenRemove(false, false)&quot;);
-shouldBeTrue(&quot;testAddThenRemove(false, { 'capture': false })&quot;);
-shouldBeTrue(&quot;testAddThenRemove(false, { })&quot;);
-shouldBeTrue(&quot;testAddThenRemove(false, undefined)&quot;);
-shouldBeFalse(&quot;testAddThenRemove(false, true)&quot;);
-shouldBeFalse(&quot;testAddThenRemove(false, { 'capture': true })&quot;);
-
-debug(&quot;&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ 'capture': false }, false)&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ 'capture': false }, { 'capture': false })&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ 'capture': false }, { })&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ 'capture': false }, undefined)&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ 'capture': false }, true)&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ 'capture': false }, { 'capture': true })&quot;);
-
-debug(&quot;&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ }, false)&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ }, { 'capture': false })&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ }, { })&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ }, undefined)&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ }, true)&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ }, { 'capture': true })&quot;);
-
-debug(&quot;&quot;);
-shouldBeTrue(&quot;testAddThenRemove(true, true)&quot;);
-shouldBeTrue(&quot;testAddThenRemove(true, { 'capture': true })&quot;);
-shouldBeFalse(&quot;testAddThenRemove(true, { })&quot;);
-shouldBeFalse(&quot;testAddThenRemove(true, undefined)&quot;);
-shouldBeFalse(&quot;testAddThenRemove(true, false)&quot;);
-shouldBeFalse(&quot;testAddThenRemove(true, { 'capture': false })&quot;);
-
-debug(&quot;&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ 'capture': true } , true)&quot;);
-shouldBeTrue(&quot;testAddThenRemove({ 'capture': true }, { 'capture': true })&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ 'capture': true }, { })&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ 'capture': true }, undefined)&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ 'capture': true }, false)&quot;);
-shouldBeFalse(&quot;testAddThenRemove({ 'capture': true }, { 'capture': false })&quot;);
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</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  &lt;commit-queue@webkit.org&gt;
+
+        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:
+
+        &quot;Implement EventListenerOptions argument to addEventListener&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=149466
+        http://trac.webkit.org/changeset/201735
+
</ins><span class="cx"> 2016-06-06  Chris Dumez  &lt;cdumez@apple.com&gt;
</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>-&lt;!DOCTYPE HTML&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;title&gt;EventListenerOptions.capture&lt;/title&gt;
-&lt;link rel=&quot;author&quot; title=&quot;Rick Byers&quot; href=&quot;mailto:rbyers@chromium.org&quot;&gt;
-&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
-
-&lt;script&gt;
-
-function testCaptureValue(captureValue, expectedValue) {
-  var handlerPhase = undefined;
-  var handler = function handler(e) {
-    assert_equals(handlerPhase, undefined, &quot;Handler invoked after remove&quot;);
-    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, &quot;Incorrect event phase for value: &quot; + 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(&quot;&quot;, Event.BUBBLING_PHASE);
-  testCaptureValue(&quot;AAAA&quot;, Event.CAPTURING_PHASE);
-}, &quot;Capture boolean should be honored correctly&quot;);
-
-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);
-}, &quot;Capture option should be honored correctly&quot;);
-
-test(function() {
-  var supportsCapture = false;
-  var query_options = {
-    get capture() {
-      supportsCapture = true;
-      return false;
-    },
-    get dummy() {
-      assert_unreached(&quot;dummy value getter invoked&quot;);
-      return false;
-    }
-  };
-
-  document.addEventListener('test_event', null, query_options);
-  assert_true(supportsCapture, &quot;addEventListener doesn't support the capture option&quot;);
-  supportsCapture = false;
-  document.removeEventListener('test_event', null, query_options);
-  assert_true(supportsCapture, &quot;removeEventListener doesn't support the capture option&quot;);
-}, &quot;Supports capture option&quot;);
-
-function testOptionEquality(addOptionValue, removeOptionValue, expectedEquality) {
-  var handlerInvoked = false;
-  var handler = function handler(e) {
-    assert_equals(handlerInvoked, false, &quot;Handler invoked multiple times&quot;);
-    handlerInvoked = true;
-  }
-  document.addEventListener('test', handler, addOptionValue);
-  document.removeEventListener('test', handler, removeOptionValue);
-  document.body.dispatchEvent(new Event('test', {'bubbles': true}));
-  assert_equals(!handlerInvoked, expectedEquality, &quot;equivalence of options &quot; +
-    JSON.stringify(addOptionValue) + &quot; and &quot; + 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);
-
-}, &quot;Equivalence of option values&quot;);
-
-&lt;/script&gt;
</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  &lt;commit-queue@webkit.org&gt;
</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:
+
+        &quot;Implement EventListenerOptions argument to addEventListener&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=149466
+        http://trac.webkit.org/changeset/201735
+
+2016-06-06  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
</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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool AudioScheduledSourceNode::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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 &amp;&amp; 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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool AudioScheduledSourceNode::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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 &amp;&amp; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
-    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;) override;
</del><ins>+    bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
+    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, 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&lt;double&gt;::infinity();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ScriptProcessorNode::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool ScriptProcessorNode::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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 &amp;&amp; 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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool ScriptProcessorNode::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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 &amp;&amp; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
-    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;) override;
</del><ins>+    bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
+    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, 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, &quot;(${value}.isNull() || ${value}.isObject())&quot;);
</span><span class="cx">             }
</span><span class="cx">             $usedArguments{$parameterIndex} = 1;
</span><del>-        } elsif ($codeGenerator-&gt;IsDictionaryType($parameter-&gt;type)) {
-            push(@andExpression, &quot;(${value}.isUndefinedOrNull() || ${value}.isObject())&quot;);
-            $usedArguments{$parameterIndex} = 1;
-        } elsif (($codeGenerator-&gt;GetArrayOrSequenceType($type) || $codeGenerator-&gt;IsTypedArrayType($type) || $codeGenerator-&gt;IsWrapperType($type)) &amp;&amp; $type ne &quot;EventListener&quot;) {
</del><ins>+        } elsif ($codeGenerator-&gt;GetArrayOrSequenceType($type) || $codeGenerator-&gt;IsTypedArrayType($type) || $codeGenerator-&gt;IsWrapperType($type)) {
</ins><span class="cx">             my $condition = &quot;&quot;;
</span><span class="cx"> 
</span><span class="cx">             if ($parameter-&gt;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 &amp;&amp; !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&lt;EventListener&gt;&amp;&amp; listener, const RegisteredEventListener::Options&amp; options)
</del><ins>+static bool addListenerToVector(EventListenerVector* vector, Ref&lt;EventListener&gt;&amp;&amp; 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-&gt;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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const RegisteredEventListener::Options&amp; options)
</del><ins>+bool EventListenerMap::add(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx">     assertNoActiveIterators();
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; 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&lt;EventListenerVector&gt;()));
</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&amp; listener, bool useCapture, size_t&amp; 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&amp; eventType) const;
</span><span class="cx"> 
</span><span class="cx">     void clear();
</span><del>-
-    bool add(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const RegisteredEventListener::Options&amp;);
</del><ins>+    bool add(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture);
</ins><span class="cx">     bool remove(const AtomicString&amp; eventType, EventListener&amp;, bool useCapture, size_t&amp; indexOfRemovedListener);
</span><span class="cx">     EventListenerVector* find(const AtomicString&amp; eventType);
</span><span class="cx">     Vector&lt;AtomicString&gt; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool EventTarget::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+void EventTarget::addEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; 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&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; listener, const ListenerOptions&amp; options)
</del><ins>+void EventTarget::removeEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; 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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool EventTarget::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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-&gt;eventListenerMap.remove(eventType, listener, options.capture, indexOfRemovedListener))
</del><ins>+    if (!d-&gt;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&amp; eventType)
</span><span class="lines">@@ -257,11 +259,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (; i &lt; size; ++i) {
</span><del>-        RegisteredEventListener registeredListener = entry[i];
-
-        if (registeredListener.isMarkedForRemoval)
-            continue;
-
</del><ins>+        RegisteredEventListener&amp; registeredListener = entry[i];
</ins><span class="cx">         if (event.eventPhase() == Event::CAPTURING_PHASE &amp;&amp; !registeredListener.useCapture)
</span><span class="cx">             continue;
</span><span class="cx">         if (event.eventPhase() == Event::BUBBLING_PHASE &amp;&amp; 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-&gt;handleEvent(context, &amp;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-&gt;firingEventIterators-&gt;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&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp;, bool useCapture);
</span><span class="cx">     void removeEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp;, bool useCapture);
</span><del>-    void addEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;);
-    void removeEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp;, const ListenerOptions&amp;);
-    virtual bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp; = { });
-    virtual bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;);
</del><ins>+    virtual bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture);
+    virtual bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, bool useCapture);
</ins><span class="cx"> 
</span><span class="cx">     virtual void removeAllEventListeners();
</span><span class="cx">     virtual bool dispatchEvent(Event&amp;);
</span><span class="lines">@@ -230,16 +209,6 @@
</span><span class="cx">     return d-&gt;eventListenerMap.containsCapturing(eventType);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void EventTarget::addEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; listener, bool useCapture)
-{
-    addEventListenerForBindings(eventType, WTFMove(listener), AddEventListenerOptions(useCapture));
-}
-
-inline void EventTarget::removeEventListenerForBindings(const AtomicString&amp; eventType, RefPtr&lt;EventListener&gt;&amp;&amp; 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) &amp;&amp; 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 = &quot;undefined&quot;, optional EventListener? listener, optional boolean useCapture = false);
</span><span class="cx">     [ObjCLegacyUnnamedParameters, ImplementedAs=removeEventListenerForBindings] void removeEventListener([AtomicString] optional DOMString type = &quot;undefined&quot;, 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool MessagePort::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, bool useCapture)
</ins><span class="cx"> {
</span><span class="cx">     if (listener-&gt;isAttribute() &amp;&amp; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
</del><ins>+        bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
</ins><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         explicit MessagePort(ScriptExecutionContext&amp;);
</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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const EventTarget::AddEventListenerOptions&amp; options)
</del><ins>+static inline bool tryAddEventListener(Node* targetNode, const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, bool useCapture)
</ins><span class="cx"> {
</span><del>-    if (!targetNode-&gt;EventTarget::addEventListener(eventType, listener.copyRef(), options))
</del><ins>+    if (!targetNode-&gt;EventTarget::addEventListener(eventType, listener.copyRef(), useCapture))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     targetNode-&gt;document().addListenerTypeIfNeeded(eventType);
</span><span class="lines">@@ -1927,7 +1927,7 @@
</span><span class="cx">     // This code was added to address &lt;rdar://problem/5846492&gt; 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-&gt;document().domWindow()-&gt;addEventListener(eventType, WTFMove(listener), options);
</del><ins>+        targetNode-&gt;document().domWindow()-&gt;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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool Node::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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&amp; eventType, EventListener&amp; listener, const EventTarget::ListenerOptions&amp; options)
</del><ins>+static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString&amp; eventType, EventListener&amp; listener, bool useCapture)
</ins><span class="cx"> {
</span><del>-    if (!targetNode-&gt;EventTarget::removeEventListener(eventType, listener, options))
</del><ins>+    if (!targetNode-&gt;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 &lt;rdar://problem/5846492&gt; 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-&gt;document().domWindow()-&gt;removeEventListener(eventType, listener, options);
</del><ins>+        targetNode-&gt;document().domWindow()-&gt;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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool Node::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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&lt;Node*, std::unique_ptr&lt;EventTargetData&gt;&gt; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
-    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;) override;
</del><ins>+    bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
+    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, bool useCapture) override;
</ins><span class="cx"> 
</span><span class="cx">     using EventTarget::dispatchEvent;
</span><span class="cx">     bool dispatchEvent(Event&amp;) 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&lt;EventListener&gt;&amp;&amp; listener, const Options&amp; options)
-            : listener(WTFMove(listener))
-            , useCapture(options.capture)
-            , isPassive(options.passive)
-            , isOnce(options.once)
-        {
-        }
-
</del><span class="cx">         RegisteredEventListener(Ref&lt;EventListener&gt;&amp;&amp; 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&lt;EventListener&gt; 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&amp; a, const RegisteredEventListener&amp; 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 &amp;&amp; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool HTMLMediaElement::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool HTMLMediaElement::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
-    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;) override;
</del><ins>+    bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
+    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool DOMWindow::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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-&gt;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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool DOMWindow::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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-&gt;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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
-        bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;) override;
</del><ins>+        bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
+        bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, 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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; listener, const AddEventListenerOptions&amp; options)
</del><ins>+bool SVGElement::addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp; 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-&gt;correspondingElement() == this);
</span><del>-        bool result = instance-&gt;Node::addEventListener(eventType, listener.copyRef(), options);
</del><ins>+        bool result = instance-&gt;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&amp; eventType, EventListener&amp; listener, const ListenerOptions&amp; options)
</del><ins>+bool SVGElement::removeEventListener(const AtomicString&amp; eventType, EventListener&amp; 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&lt;EventListener&gt; 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&amp; instance : instances()) {
</span><span class="cx">         ASSERT(instance-&gt;correspondingElement() == this);
</span><span class="cx"> 
</span><del>-        if (instance-&gt;Node::removeEventListener(eventType, listener, options))
</del><ins>+        if (instance-&gt;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&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, const AddEventListenerOptions&amp;) override;
-    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, const ListenerOptions&amp;) override;
</del><ins>+    bool addEventListener(const AtomicString&amp; eventType, Ref&lt;EventListener&gt;&amp;&amp;, bool useCapture) override;
+    bool removeEventListener(const AtomicString&amp; eventType, EventListener&amp;, 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>