aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-02-24 12:38:11 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2016-02-24 12:50:58 +0100
commit0455b0b30163e913abdd63bb92f28d49b72ce0de (patch)
treeeb708107c3c6740402026286fe7f6560c3e778dd
parentd85ee09bc72a9819269455a126a1eda018254822 (diff)
downloadservo-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.ini2
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html81
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>