diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-02-24 12:38:11 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-02-24 12:50:58 +0100 |
commit | 0455b0b30163e913abdd63bb92f28d49b72ce0de (patch) | |
tree | eb708107c3c6740402026286fe7f6560c3e778dd | |
parent | d85ee09bc72a9819269455a126a1eda018254822 (diff) | |
download | servo-0455b0b30163e913abdd63bb92f28d49b72ce0de.tar.gz servo-0455b0b30163e913abdd63bb92f28d49b72ce0de.zip |
Test event dispatching in documents without a browsing context
-rw-r--r-- | tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini | 2 | ||||
-rw-r--r-- | tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html | 81 |
2 files changed, 48 insertions, 35 deletions
diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini index ee6a91dd03f..875e7042acb 100644 --- a/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini +++ b/tests/wpt/metadata/dom/events/Event-dispatch-bubbles-false.html.ini @@ -1,5 +1,5 @@ [Event-dispatch-bubbles-false.html] type: testharness - [Event.dispatchEvent with Event.bubbles set to false.] + [In document with a browsing context: Event.dispatchEvent with Event.bubbles set to false.] expected: FAIL diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html index c381459f5e4..e0d75c05853 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html +++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html @@ -19,50 +19,63 @@ </tbody> </table> <script> -test(function() { - var event_type = "click"; - var target = document.getElementById("target"); - var targets = [ - window, +function targetsForDocumentChain(document) { + return [ document, document.documentElement, document.body, document.getElementById("table"), document.getElementById("table-body"), - document.getElementById("parent"), - target, - ]; - var expected_targets = targets.concat(target); - var phases = [ - Event.CAPTURING_PHASE, - Event.CAPTURING_PHASE, - Event.CAPTURING_PHASE, - Event.CAPTURING_PHASE, - Event.CAPTURING_PHASE, - Event.CAPTURING_PHASE, - Event.CAPTURING_PHASE, - Event.AT_TARGET, - Event.AT_TARGET, + document.getElementById("parent") ]; +} + +function testChain(document, targetParents, phases, label) { + test(function() { + var event_type = "click"; + var target = document.getElementById("target"); + var targets = targetParents.concat(target); + var expected_targets = targets.concat(target); + + var actual_targets = [], actual_phases = []; + var test_event = function(evt) { + actual_targets.push(evt.currentTarget); + actual_phases.push(evt.eventPhase); + } + + for (var i = 0; i < targets.length; i++) { + targets[i].addEventListener(event_type, test_event, true); + targets[i].addEventListener(event_type, test_event, false); + } + var evt = document.createEvent("Event"); + evt.initEvent(event_type, false, true); - var actual_targets = [], actual_phases = []; - var test_event = function(evt) { - actual_targets.push(evt.currentTarget); - actual_phases.push(evt.eventPhase); - } + target.dispatchEvent(evt); - for (var i = 0; i < targets.length; i++) { - targets[i].addEventListener(event_type, test_event, true); - targets[i].addEventListener(event_type, test_event, false); - } + assert_array_equals(actual_targets, expected_targets, "targets"); + assert_array_equals(actual_phases, phases, "phases"); + }, label + ": Event.dispatchEvent with Event.bubbles set to false."); +} - var evt = document.createEvent("Event"); - evt.initEvent(event_type, false, true); +var phasesForDocumentChain = [ + Event.CAPTURING_PHASE, + Event.CAPTURING_PHASE, + Event.CAPTURING_PHASE, + Event.CAPTURING_PHASE, + Event.CAPTURING_PHASE, + Event.CAPTURING_PHASE, + Event.AT_TARGET, + Event.AT_TARGET, +]; - target.dispatchEvent(evt); +chainWithWindow = [window].concat(targetsForDocumentChain(document)); +testChain( + document, chainWithWindow, [Event.CAPTURING_PHASE].concat(phasesForDocumentChain), + "In document with a browsing context"); - assert_array_equals(actual_targets, expected_targets, "targets"); - assert_array_equals(actual_phases, phases, "phases"); -}, "Event.dispatchEvent with Event.bubbles set to false."); +var documentClone = document.cloneNode(true); +testChain( + documentClone, targetsForDocumentChain(documentClone), phasesForDocumentChain, + "In document without a browsing context"); </script> |