haikuwebkit/LayoutTests/fast/events/AddEventListenerOptions-onc...

16 lines
447 B
Plaintext
Raw Permalink Normal View History

Implement EventListenerOptions argument to addEventListener https://bugs.webkit.org/show_bug.cgi?id=149466 <rdar://problem/22802031> Reviewed by Dean Jackson. LayoutTests/imported/w3c: Import new test from W3C that covers EventListenerOptions. * web-platform-tests/dom/events/EventListenerOptions-capture-expected.txt: Added. * web-platform-tests/dom/events/EventListenerOptions-capture.html: Added. Source/WebCore: Implement AddEventListenerOptions dictionary argument to addEventListener() and EventListenerOptions dictionary argument to removeEventListener(), as per the latest DOM specification: - https://dom.spec.whatwg.org/#interface-eventtarget Firefox and Chrome already support this. Support for AddEventListenerOptions in this patch is as follows: - 'capture': fully supported. - 'once': fully supported. - 'passive': supported in the sense that preventDefault() will be ignored for passive event listeners. There are however currently no performance benefits from passing this flag. Those optimizations will be implemented in follow-up patches (in particular for Touch and Scroll events). Tests: fast/events/AddEventListenerOptions-once-recursive.html fast/events/AddEventListenerOptions-once.html fast/events/AddEventListenerOptions-passive.html fast/events/removeEventListener-EventListenerOptions-capture.html imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html * Modules/webaudio/AudioScheduledSourceNode.cpp: (WebCore::AudioScheduledSourceNode::addEventListener): (WebCore::AudioScheduledSourceNode::removeEventListener): * Modules/webaudio/AudioScheduledSourceNode.h: * Modules/webaudio/ScriptProcessorNode.cpp: (WebCore::ScriptProcessorNode::addEventListener): (WebCore::ScriptProcessorNode::removeEventListener): * Modules/webaudio/ScriptProcessorNode.h: * bindings/scripts/CodeGeneratorJS.pm: (GenerateParametersCheckExpression): * dom/Event.h: (WebCore::Event::preventDefault): (WebCore::Event::setInPassiveListener): * dom/EventListenerMap.cpp: (WebCore::addListenerToVector): (WebCore::EventListenerMap::add): * dom/EventListenerMap.h: * dom/EventTarget.cpp: (WebCore::EventTarget::addEventListener): (WebCore::EventTarget::addEventListenerForBindings): (WebCore::EventTarget::removeEventListenerForBindings): (WebCore::EventTarget::removeEventListener): (WebCore::EventTarget::setAttributeEventListener): (WebCore::EventTarget::fireEventListeners): * dom/EventTarget.h: (WebCore::EventTarget::ListenerOptions::ListenerOptions): (WebCore::EventTarget::AddEventListenerOptions::AddEventListenerOptions): (WebCore::EventTarget::addEventListener): (WebCore::EventTarget::addEventListenerForBindings): (WebCore::EventTarget::removeEventListenerForBindings): * dom/EventTarget.idl: * dom/MessagePort.cpp: (WebCore::MessagePort::addEventListener): * dom/MessagePort.h: * dom/Node.cpp: (WebCore::tryAddEventListener): (WebCore::Node::addEventListener): (WebCore::tryRemoveEventListener): (WebCore::Node::removeEventListener): * dom/Node.h: * dom/RegisteredEventListener.h: (WebCore::RegisteredEventListener::Options::Options): (WebCore::RegisteredEventListener::RegisteredEventListener): (WebCore::operator==): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::addEventListener): (WebCore::HTMLMediaElement::removeEventListener): * html/HTMLMediaElement.h: * page/DOMWindow.cpp: (WebCore::DOMWindow::addEventListener): (WebCore::DOMWindow::removeEventListener): * page/DOMWindow.h: * svg/SVGElement.cpp: (WebCore::SVGElement::addEventListener): (WebCore::SVGElement::removeEventListener): * svg/SVGElement.h: LayoutTests: * fast/events/AddEventListenerOptions-once-expected.txt: Added. * fast/events/AddEventListenerOptions-once-recursive-expected.txt: Added. * fast/events/AddEventListenerOptions-once-recursive.html: Added. * fast/events/AddEventListenerOptions-once.html: Added. * fast/events/AddEventListenerOptions-passive-expected.txt: Added. * fast/events/AddEventListenerOptions-passive.html: Added. * fast/events/removeEventListener-EventListenerOptions-capture-expected.txt: Added. * fast/events/removeEventListener-EventListenerOptions-capture.html: Added. Add layout testing coverage for various aspects of the functionality. * imported/blink/fast/events/eventlisteneroptions/capture_default-expected.txt: Added. * imported/blink/fast/events/eventlisteneroptions/capture_default.html: Added. * imported/blink/fast/events/eventlisteneroptions/capture_equality-expected.txt: Added. * imported/blink/fast/events/eventlisteneroptions/capture_equality.html: Added. * imported/blink/fast/events/eventlisteneroptions/capture_query-expected.txt: Added. * imported/blink/fast/events/eventlisteneroptions/capture_query.html: Added. * imported/blink/fast/events/eventlisteneroptions/passive_dispatch-expected.txt: Added. * imported/blink/fast/events/eventlisteneroptions/passive_dispatch.html: Added. * imported/blink/fast/events/eventlisteneroptions/passive_inequality-expected.txt: Added. * imported/blink/fast/events/eventlisteneroptions/passive_inequality.html: Added. * imported/blink/fast/events/eventlisteneroptions/passive_query-expected.txt: Added. * imported/blink/fast/events/eventlisteneroptions/passive_query.html: Added. Import blink tests for this functionality. Canonical link: https://commits.webkit.org/176543@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@201757 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-07 17:53:15 +00:00
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