mirror of
https://github.com/servo/servo.git
synced 2025-08-23 06:15:35 +01:00
Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255
This commit is contained in:
parent
b2a5225831
commit
1a81b18b9f
12321 changed files with 544385 additions and 6 deletions
23
tests/wpt/web-platform-tests/dom/events/Event-constants.html
Normal file
23
tests/wpt/web-platform-tests/dom/events/Event-constants.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
<!doctype html>
|
||||
<title>Event constants</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="../constants.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
var objects;
|
||||
setup(function() {
|
||||
objects = [
|
||||
[Event, "Event interface object"],
|
||||
[Event.prototype, "Event prototype object"],
|
||||
[document.createEvent("Event"), "Event object"],
|
||||
[document.createEvent("CustomEvent"), "CustomEvent object"]
|
||||
]
|
||||
})
|
||||
testConstants(objects, [
|
||||
["NONE", 0],
|
||||
["CAPTURING_PHASE", 1],
|
||||
["AT_TARGET", 2],
|
||||
["BUBBLING_PHASE", 3]
|
||||
], "eventPhase")
|
||||
</script>
|
124
tests/wpt/web-platform-tests/dom/events/Event-constructors.html
Normal file
124
tests/wpt/web-platform-tests/dom/events/Event-constructors.html
Normal file
|
@ -0,0 +1,124 @@
|
|||
<!doctype html>
|
||||
<title>Event constructors</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
test(function() {
|
||||
assert_throws(new TypeError(), function() {
|
||||
new Event()
|
||||
})
|
||||
})
|
||||
test(function() {
|
||||
var test_error = { name: "test" }
|
||||
assert_throws(test_error, function() {
|
||||
new Event({ toString: function() { throw test_error; } })
|
||||
})
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("")
|
||||
assert_equals(ev.type, "")
|
||||
assert_equals(ev.target, null)
|
||||
assert_equals(ev.currentTarget, null)
|
||||
assert_equals(ev.eventPhase, Event.NONE)
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, false)
|
||||
assert_equals(ev.defaultPrevented, false)
|
||||
assert_equals(ev.isTrusted, false)
|
||||
assert_true(ev.timeStamp > 0)
|
||||
assert_true("initEvent" in ev)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("test")
|
||||
assert_equals(ev.type, "test")
|
||||
assert_equals(ev.target, null)
|
||||
assert_equals(ev.currentTarget, null)
|
||||
assert_equals(ev.eventPhase, Event.NONE)
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, false)
|
||||
assert_equals(ev.defaultPrevented, false)
|
||||
assert_equals(ev.isTrusted, false)
|
||||
assert_true(ev.timeStamp > 0)
|
||||
assert_true("initEvent" in ev)
|
||||
})
|
||||
test(function() {
|
||||
var ev = Event("test")
|
||||
assert_equals(ev.type, "test")
|
||||
assert_equals(ev.target, null)
|
||||
assert_equals(ev.currentTarget, null)
|
||||
assert_equals(ev.eventPhase, Event.NONE)
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, false)
|
||||
assert_equals(ev.defaultPrevented, false)
|
||||
assert_equals(ev.isTrusted, false)
|
||||
assert_true(ev.timeStamp > 0)
|
||||
assert_true("initEvent" in ev)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("I am an event", { bubbles: true, cancelable: false})
|
||||
assert_equals(ev.type, "I am an event")
|
||||
assert_equals(ev.bubbles, true)
|
||||
assert_equals(ev.cancelable, false)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("@", { bubblesIGNORED: true, cancelable: true})
|
||||
assert_equals(ev.type, "@")
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, true)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("@", { "bubbles\0IGNORED": true, cancelable: true})
|
||||
assert_equals(ev.type, "@")
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, true)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("Xx", { cancelable: true})
|
||||
assert_equals(ev.type, "Xx")
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, true)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("Xx", {})
|
||||
assert_equals(ev.type, "Xx")
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, false)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new Event("Xx", {bubbles: true, cancelable: false, sweet: "x"})
|
||||
assert_equals(ev.type, "Xx")
|
||||
assert_equals(ev.bubbles, true)
|
||||
assert_equals(ev.cancelable, false)
|
||||
assert_equals(ev.sweet, undefined)
|
||||
})
|
||||
test(function() {
|
||||
var called = []
|
||||
var ev = new Event("Xx", {
|
||||
get cancelable() {
|
||||
called.push("cancelable")
|
||||
return false
|
||||
},
|
||||
get bubbles() {
|
||||
called.push("bubbles")
|
||||
return true;
|
||||
},
|
||||
get sweet() {
|
||||
called.push("sweet")
|
||||
return "x"
|
||||
}
|
||||
})
|
||||
assert_array_equals(called, ["bubbles", "cancelable"])
|
||||
assert_equals(ev.type, "Xx")
|
||||
assert_equals(ev.bubbles, true)
|
||||
assert_equals(ev.cancelable, false)
|
||||
assert_equals(ev.sweet, undefined)
|
||||
})
|
||||
test(function() {
|
||||
var ev = new CustomEvent("$", {detail: 54, sweet: "x", sweet2: "x", cancelable:true})
|
||||
assert_equals(ev.type, "$")
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, true)
|
||||
assert_equals(ev.sweet, undefined)
|
||||
assert_equals(ev.detail, 54)
|
||||
})
|
||||
</script>
|
|
@ -0,0 +1,42 @@
|
|||
<!doctype html>
|
||||
<title>Event.defaultPrevented</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
var ev;
|
||||
test(function() {
|
||||
ev = document.createEvent("Event");
|
||||
assert_equals(ev.defaultPrevented, false, "defaultPrevented");
|
||||
}, "When an event is created, defaultPrevented should be initialized to false.");
|
||||
test(function() {
|
||||
ev.initEvent("foo", true, false);
|
||||
assert_equals(ev.bubbles, true, "bubbles");
|
||||
assert_equals(ev.cancelable, false, "cancelable");
|
||||
assert_equals(ev.defaultPrevented, false, "defaultPrevented");
|
||||
}, "initEvent should work correctly (not cancelable).");
|
||||
test(function() {
|
||||
assert_equals(ev.cancelable, false, "cancelable (before)");
|
||||
ev.preventDefault();
|
||||
assert_equals(ev.cancelable, false, "cancelable (after)");
|
||||
assert_equals(ev.defaultPrevented, false, "defaultPrevented");
|
||||
}, "preventDefault() should not change defaultPrevented if cancelable is false.");
|
||||
test(function() {
|
||||
ev.initEvent("foo", true, true);
|
||||
assert_equals(ev.bubbles, true, "bubbles");
|
||||
assert_equals(ev.cancelable, true, "cancelable");
|
||||
assert_equals(ev.defaultPrevented, false, "defaultPrevented");
|
||||
}, "initEvent should work correctly (cancelable).");
|
||||
test(function() {
|
||||
assert_equals(ev.cancelable, true, "cancelable (before)");
|
||||
ev.preventDefault();
|
||||
assert_equals(ev.cancelable, true, "cancelable (after)");
|
||||
assert_equals(ev.defaultPrevented, true, "defaultPrevented");
|
||||
}, "preventDefault() should change defaultPrevented if cancelable is false.");
|
||||
test(function() {
|
||||
ev.initEvent("foo", true, true);
|
||||
assert_equals(ev.bubbles, true, "bubbles");
|
||||
assert_equals(ev.cancelable, true, "cancelable");
|
||||
assert_equals(ev.defaultPrevented, false, "defaultPrevented");
|
||||
}, "initEvent should unset defaultPrevented.");
|
||||
</script>
|
|
@ -0,0 +1,68 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title> Event.bubbles attribute is set to false </title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-initevent">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
test(function() {
|
||||
var event_type = "click";
|
||||
var target = document.getElementById("target");
|
||||
var targets = [
|
||||
window,
|
||||
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,
|
||||
];
|
||||
|
||||
|
||||
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);
|
||||
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
assert_array_equals(actual_targets, expected_targets, "targets");
|
||||
assert_array_equals(actual_phases, phases, "phases");
|
||||
}, "Event.dispatchEvent with Event.bubbles set to false.");
|
||||
</script>
|
|
@ -0,0 +1,92 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title> Dispatch additional events inside an event listener </title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script>
|
||||
async_test(function() {
|
||||
var event_type = "bar";
|
||||
var target = document.getElementById("target");
|
||||
var parent = document.getElementById("parent");
|
||||
var tbody = document.getElementById("table-body");
|
||||
var table = document.getElementById("table");
|
||||
var body = document.body;
|
||||
var html = document.documentElement;
|
||||
var targets = [window, document, html, body, table, tbody, parent, target];
|
||||
var expected_targets = [
|
||||
window,
|
||||
document,
|
||||
html,
|
||||
body,
|
||||
table,
|
||||
tbody,
|
||||
parent,
|
||||
target,
|
||||
target,
|
||||
parent,
|
||||
tbody,
|
||||
table,
|
||||
body,
|
||||
html,
|
||||
document,
|
||||
window
|
||||
];
|
||||
var expected_listeners = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1];
|
||||
|
||||
var actual_targets = [], actual_listeners = [];
|
||||
var test_event_function = function(i) {
|
||||
return this.step_func(function(evt) {
|
||||
actual_targets.push(evt.currentTarget);
|
||||
actual_listeners.push(i);
|
||||
|
||||
if (evt.eventPhase != evt.BUBBLING_PHASE && evt.currentTarget.foo != 1) {
|
||||
evt.currentTarget.removeEventListener(event_type, event_handlers[0], true);
|
||||
evt.currentTarget.addEventListener(event_type, event_handlers[2], true);
|
||||
evt.currentTarget.foo = 1;
|
||||
}
|
||||
|
||||
if (evt.eventPhase != evt.CAPTURING_PHASE && evt.currentTarget.foo != 3) {
|
||||
evt.currentTarget.removeEventListener(event_type, event_handlers[0], false);
|
||||
evt.currentTarget.addEventListener(event_type, event_handlers[3], false);
|
||||
evt.currentTarget.foo = 3;
|
||||
}
|
||||
});
|
||||
}.bind(this);
|
||||
var event_handlers = [
|
||||
test_event_function(0),
|
||||
test_event_function(1),
|
||||
test_event_function(2),
|
||||
test_event_function(3),
|
||||
];
|
||||
|
||||
for (var i = 0; i < targets.length; ++i) {
|
||||
targets[i].addEventListener(event_type, event_handlers[0], true);
|
||||
targets[i].addEventListener(event_type, event_handlers[1], false);
|
||||
}
|
||||
|
||||
var evt = document.createEvent("Event");
|
||||
evt.initEvent(event_type, true, true);
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
assert_array_equals(actual_targets, expected_targets, "actual_targets");
|
||||
assert_array_equals(actual_listeners, expected_listeners, "actual_listeners");
|
||||
|
||||
this.done();
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>EventTarget.addEventListener: capture argument omitted</title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
test(function() {
|
||||
var event_type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var targets = [
|
||||
target,
|
||||
document.getElementById("parent"),
|
||||
document.getElementById("table-body"),
|
||||
document.getElementById("table"),
|
||||
document.body,
|
||||
document.documentElement,
|
||||
document,
|
||||
window
|
||||
];
|
||||
var phases = [
|
||||
Event.AT_TARGET,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE
|
||||
];
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
var evt = document.createEvent("Event");
|
||||
evt.initEvent(event_type, true, true);
|
||||
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
for (var i = 0; i < targets.length; i++) {
|
||||
targets[i].removeEventListener(event_type, test_event);
|
||||
}
|
||||
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
assert_array_equals(actual_targets, targets, "targets");
|
||||
assert_array_equals(actual_phases, phases, "phases");
|
||||
}, "EventTarget.addEventListener with the capture argument omitted");
|
||||
</script>
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=urf-8>
|
||||
<title>EventTarget#dispatchEvent(): redispatching a native event</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
async_test(function() {
|
||||
var event;
|
||||
document.addEventListener("DOMContentLoaded", this.step_func(function(e) {
|
||||
assert_true(e.isTrusted, "Should be trusted when first handled");
|
||||
event = e;
|
||||
}), true);
|
||||
|
||||
window.onload = this.step_func_done(function() {
|
||||
var received = 0;
|
||||
var target = document.createElement("span");
|
||||
target.addEventListener("DOMContentLoaded", this.step_func(function(e) {
|
||||
assert_false(e.isTrusted, "Should not be trusted during redispatching");
|
||||
++received;
|
||||
}), true);
|
||||
assert_true(event.isTrusted, "Should be trusted before redispatching");
|
||||
target.dispatchEvent(event);
|
||||
assert_false(event.isTrusted, "Should not be trusted after redispatching");
|
||||
assert_equals(received, 1);
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,66 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title> Dispatch additional events inside an event listener </title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
test(function() {
|
||||
var event_type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var parent = document.getElementById("parent");
|
||||
var tbody = document.getElementById("table-body");
|
||||
var table = document.getElementById("table");
|
||||
var body = document.body;
|
||||
var html = document.documentElement;
|
||||
var targets = [window, document, html, body, table, tbody, parent, target];
|
||||
var expected_targets = [
|
||||
window, document, html, body, table,
|
||||
target, parent, tbody,
|
||||
table, body, html, document, window,
|
||||
tbody, parent, target];
|
||||
var actual_targets = [];
|
||||
var expected_types = [
|
||||
"foo", "foo", "foo", "foo", "foo",
|
||||
"bar", "bar", "bar",
|
||||
"bar", "bar", "bar", "bar", "bar",
|
||||
"foo", "foo", "foo"
|
||||
];
|
||||
|
||||
var actual_targets = [], actual_types = [];
|
||||
var test_event = this.step_func(function(evt) {
|
||||
actual_targets.push(evt.currentTarget);
|
||||
actual_types.push(evt.type);
|
||||
|
||||
if (table == evt.currentTarget && event_type == evt.type) {
|
||||
var e = document.createEvent("Event");
|
||||
e.initEvent("bar", true, true);
|
||||
target.dispatchEvent(e);
|
||||
}
|
||||
});
|
||||
|
||||
for (var i = 0; i < targets.length; ++i) {
|
||||
targets[i].addEventListener(event_type, test_event, true);
|
||||
targets[i].addEventListener("bar", test_event, false);
|
||||
}
|
||||
|
||||
var evt = document.createEvent("Event");
|
||||
evt.initEvent(event_type, false, true);
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
assert_array_equals(actual_targets, expected_targets, "actual_targets");
|
||||
assert_array_equals(actual_types, expected_types, "actual_types");
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,73 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title> Determined event propagation path - target moved </title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
test(function() {
|
||||
var event_type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var parent = document.getElementById("parent");
|
||||
var tbody = document.getElementById("table-body");
|
||||
var table = document.getElementById("table");
|
||||
var body = document.body;
|
||||
var html = document.documentElement;
|
||||
var targets = [window, document, html, body, table, tbody, parent, target];
|
||||
var expected_targets = targets.concat([target, parent, tbody, table, body, html, document, window]);
|
||||
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,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
];
|
||||
|
||||
var actual_targets = [], actual_phases = [];
|
||||
var test_event = this.step_func(function(evt) {
|
||||
if (parent === target.parentNode) {
|
||||
var table_row = document.getElementById("table-row");
|
||||
table_row.appendChild(parent.removeChild(target));
|
||||
}
|
||||
|
||||
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, true, true);
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
assert_array_equals(actual_targets, expected_targets, "targets");
|
||||
assert_array_equals(actual_phases, phases, "phases");
|
||||
}, "Event propagation path when an element in it is moved within the DOM");
|
||||
</script>
|
|
@ -0,0 +1,72 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Determined event propagation path - target removed</title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
test(function() {
|
||||
var event_type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var parent = document.getElementById("parent");
|
||||
var tbody = document.getElementById("table-body");
|
||||
var table = document.getElementById("table");
|
||||
var body = document.body;
|
||||
var html = document.documentElement;
|
||||
var targets = [window, document, html, body, table, tbody, parent, target];
|
||||
var expected_targets = targets.concat([target, parent, tbody, table, body, html, document, window]);
|
||||
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,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
Event.BUBBLING_PHASE,
|
||||
];
|
||||
|
||||
var actual_targets = [], actual_phases = [];
|
||||
var test_event = this.step_func(function(evt) {
|
||||
if (parent === target.parentNode) {
|
||||
parent.removeChild(target);
|
||||
}
|
||||
|
||||
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, true, true);
|
||||
target.dispatchEvent(evt);
|
||||
|
||||
assert_array_equals(actual_targets, expected_targets, "targets");
|
||||
assert_array_equals(actual_phases, phases, "phases");
|
||||
}, "Event propagation path when an element in it is removed from the DOM");
|
||||
</script>
|
121
tests/wpt/web-platform-tests/dom/events/Event-initEvent.html
Normal file
121
tests/wpt/web-platform-tests/dom/events/Event-initEvent.html
Normal file
|
@ -0,0 +1,121 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Event.initEvent</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
var booleans = [true, false];
|
||||
booleans.forEach(function(bubbles) {
|
||||
booleans.forEach(function(cancelable) {
|
||||
test(function() {
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type", bubbles, cancelable)
|
||||
|
||||
// Step 3.
|
||||
// Can't test the stop propagation flag and stop immediate propagation flag.
|
||||
assert_equals(e.defaultPrevented, false, "defaultPrevented")
|
||||
// Step 4.
|
||||
assert_equals(e.isTrusted, false, "isTrusted")
|
||||
// Step 5.
|
||||
assert_equals(e.target, null, "target")
|
||||
// Step 6.
|
||||
assert_equals(e.type, "type", "type")
|
||||
// Step 7.
|
||||
assert_equals(e.bubbles, bubbles, "bubbles")
|
||||
// Step 8.
|
||||
assert_equals(e.cancelable, cancelable, "cancelable")
|
||||
}, "Properties of initEvent(type, " + bubbles + ", " + cancelable + ")")
|
||||
})
|
||||
})
|
||||
|
||||
test(function() {
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type 1", true, false)
|
||||
assert_equals(e.type, "type 1", "type (first init)")
|
||||
assert_equals(e.bubbles, true, "bubbles (first init)")
|
||||
assert_equals(e.cancelable, false, "cancelable (first init)")
|
||||
|
||||
e.initEvent("type 2", false, true)
|
||||
assert_equals(e.type, "type 2", "type (second init)")
|
||||
assert_equals(e.bubbles, false, "bubbles (second init)")
|
||||
assert_equals(e.cancelable, true, "cancelable (second init)")
|
||||
}, "Calling initEvent multiple times (getting type).")
|
||||
|
||||
test(function() {
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=998809
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type 1", true, false)
|
||||
assert_equals(e.bubbles, true, "bubbles (first init)")
|
||||
assert_equals(e.cancelable, false, "cancelable (first init)")
|
||||
|
||||
e.initEvent("type 2", false, true)
|
||||
assert_equals(e.type, "type 2", "type (second init)")
|
||||
assert_equals(e.bubbles, false, "bubbles (second init)")
|
||||
assert_equals(e.cancelable, true, "cancelable (second init)")
|
||||
}, "Calling initEvent multiple times (not getting type).")
|
||||
|
||||
// Step 2.
|
||||
async_test(function() {
|
||||
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=17715
|
||||
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type", false, false)
|
||||
assert_equals(e.type, "type", "type (first init)")
|
||||
assert_equals(e.bubbles, false, "bubbles (first init)")
|
||||
assert_equals(e.cancelable, false, "cancelable (first init)")
|
||||
|
||||
var target = document.createElement("div")
|
||||
target.addEventListener("type", this.step_func(function() {
|
||||
e.initEvent("fail", true, true)
|
||||
assert_equals(e.type, "type", "type (second init)")
|
||||
assert_equals(e.bubbles, false, "bubbles (second init)")
|
||||
assert_equals(e.cancelable, false, "cancelable (second init)")
|
||||
}), false)
|
||||
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
|
||||
this.done()
|
||||
}, "Calling initEvent must not have an effect during dispatching.")
|
||||
|
||||
async_test(function() {
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type", false, false)
|
||||
e.stopPropagation()
|
||||
|
||||
var target = document.createElement("div")
|
||||
target.addEventListener("type", this.step_func(function() {
|
||||
assert_unreached("")
|
||||
}), false)
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
|
||||
e.initEvent("type", false, false)
|
||||
var called = false
|
||||
var target = document.createElement("div")
|
||||
target.addEventListener("type", this.step_func(function() {
|
||||
called = true
|
||||
}), false)
|
||||
assert_false(called)
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
assert_true(called)
|
||||
|
||||
this.done()
|
||||
}, "Calling initEvent must unset the stop propagation flag.")
|
||||
|
||||
async_test(function() {
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type", false, false)
|
||||
|
||||
var target = document.createElement("div")
|
||||
target.addEventListener("type", this.step_func(function() {
|
||||
e.initEvent("type2", true, true);
|
||||
assert_equals(e.type, "type", "initEvent type setter should short-circuit");
|
||||
assert_false(e.bubbles, "initEvent bubbles setter should short-circuit");
|
||||
assert_false(e.cancelable, "initEvent cancelable setter should short-circuit");
|
||||
}), false)
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
|
||||
this.done()
|
||||
}, "Calling initEvent during propagation.")
|
||||
</script>
|
|
@ -0,0 +1,38 @@
|
|||
<!doctype html>
|
||||
<title>Event propagation tests</title>
|
||||
<link rel=author title="Aryeh Gregor" href=ayg@aryeh.name>
|
||||
<div id=log></div>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script>
|
||||
"use strict";
|
||||
|
||||
function testPropagationFlag(ev, expected, desc) {
|
||||
test(function() {
|
||||
var called = false;
|
||||
var callback = function() { called = true };
|
||||
document.head.addEventListener("foo", callback);
|
||||
document.head.dispatchEvent(ev);
|
||||
// Gecko resets the flags after dispatching; it will happily dispatch
|
||||
// the event the second time around.
|
||||
document.head.dispatchEvent(ev);
|
||||
assert_equals(called, expected, "Propagation flag");
|
||||
document.head.removeEventListener("foo", callback);
|
||||
}, desc);
|
||||
}
|
||||
|
||||
var ev = document.createEvent("Event");
|
||||
ev.initEvent("foo", true, false);
|
||||
testPropagationFlag(ev, true, "Newly-created Event");
|
||||
ev.stopPropagation();
|
||||
testPropagationFlag(ev, false, "After stopPropagation()");
|
||||
ev.initEvent("foo", true, false);
|
||||
testPropagationFlag(ev, true, "Reinitialized after stopPropagation()");
|
||||
|
||||
var ev = document.createEvent("Event");
|
||||
ev.initEvent("foo", true, false);
|
||||
ev.stopImmediatePropagation();
|
||||
testPropagationFlag(ev, false, "After stopImmediatePropagation()");
|
||||
ev.initEvent("foo", true, false);
|
||||
testPropagationFlag(ev, true, "Reinitialized after stopImmediatePropagation()");
|
||||
</script>
|
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Event.type set to the empty string</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-type">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
function do_test(t, e) {
|
||||
assert_equals(e.type, "", "type");
|
||||
assert_equals(e.bubbles, false, "bubbles");
|
||||
assert_equals(e.cancelable, false, "cancelable");
|
||||
|
||||
var target = document.createElement("div");
|
||||
var handled = false;
|
||||
target.addEventListener("", t.step_func(function(e) {
|
||||
handled = true;
|
||||
}));
|
||||
assert_true(target.dispatchEvent(e));
|
||||
assert_true(handled);
|
||||
}
|
||||
|
||||
async_test(function() {
|
||||
var e = document.createEvent("Event");
|
||||
e.initEvent("", false, false);
|
||||
do_test(this, e);
|
||||
this.done();
|
||||
}, "initEvent");
|
||||
|
||||
async_test(function() {
|
||||
var e = new Event("");
|
||||
do_test(this, e);
|
||||
this.done();
|
||||
}, "Constructor");
|
||||
</script>
|
22
tests/wpt/web-platform-tests/dom/events/Event-type.html
Normal file
22
tests/wpt/web-platform-tests/dom/events/Event-type.html
Normal file
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Event.type</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-type">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
test(function() {
|
||||
var e = document.createEvent("Event")
|
||||
assert_equals(e.type, "");
|
||||
}, "Event.type should initially be the empty string");
|
||||
test(function() {
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("foo", false, false)
|
||||
assert_equals(e.type, "foo")
|
||||
}, "Event.type should be initialized by initEvent");
|
||||
test(function() {
|
||||
var e = new Event("bar")
|
||||
assert_equals(e.type, "bar")
|
||||
}, "Event.type should be initialized by the constructor");
|
||||
</script>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>EventTarget.addEventListener</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
// Step 1.
|
||||
test(function() {
|
||||
assert_equals(document.addEventListener("x", null, false), undefined);
|
||||
assert_equals(document.addEventListener("x", null, true), undefined);
|
||||
assert_equals(document.addEventListener("x", null), undefined);
|
||||
}, "Adding a null event listener should succeed");
|
||||
</script>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>EventTarget.dispatchEvent: return value</title>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-preventdefault">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-defaultprevented">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id=log></div>
|
||||
<table id="table" border="1" style="display: none">
|
||||
<tbody id="table-body">
|
||||
<tr id="table-row">
|
||||
<td id="table-cell">Shady Grove</td>
|
||||
<td>Aeolian</td>
|
||||
</tr>
|
||||
<tr id="parent">
|
||||
<td id="target">Over the river, Charlie</td>
|
||||
<td>Dorian</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
test(function() {
|
||||
var event_type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var parent = document.getElementById("parent");
|
||||
var default_prevented;
|
||||
|
||||
parent.addEventListener(event_type, function(e) {}, true);
|
||||
target.addEventListener(event_type, function(e) {
|
||||
evt.preventDefault();
|
||||
default_prevented = evt.defaultPrevented;
|
||||
}, true);
|
||||
target.addEventListener(event_type, function(e) {}, true);
|
||||
|
||||
var evt = document.createEvent("Event");
|
||||
evt.initEvent(event_type, true, true);
|
||||
|
||||
assert_true(parent.dispatchEvent(evt));
|
||||
assert_false(target.dispatchEvent(evt));
|
||||
assert_true(default_prevented);
|
||||
}, "Return value of EventTarget.dispatchEvent.");
|
||||
</script>
|
|
@ -0,0 +1,104 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>EventTarget.dispatchEvent</title>
|
||||
<link rel="author" title="Olli Pettay" href="mailto:Olli.Pettay@gmail.com">
|
||||
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-eventtarget-dispatchevent">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/dom/nodes/Document-createEvent.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
setup({
|
||||
"allow_uncaught_exception": true,
|
||||
})
|
||||
|
||||
test(function() {
|
||||
assert_throws(new TypeError(), function() { document.dispatchEvent(null) })
|
||||
}, "Calling dispatchEvent(null).")
|
||||
|
||||
aliases.forEach(function(alias) {
|
||||
test(function() {
|
||||
var e = document.createEvent(alias[0])
|
||||
assert_equals(e.type, "", "Event type should be empty string before initialization")
|
||||
assert_throws("InvalidStateError", function() { document.dispatchEvent(e) })
|
||||
}, "If the event's initialized flag is not set, an InvalidStateError must be thrown (" + alias [0] + ").")
|
||||
})
|
||||
|
||||
var dispatch_dispatch = async_test("If the event's dispatch flag is set, an InvalidStateError must be thrown.")
|
||||
dispatch_dispatch.step(function() {
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type", false, false)
|
||||
|
||||
var target = document.createElement("div")
|
||||
target.addEventListener("type", dispatch_dispatch.step_func(function() {
|
||||
assert_throws("InvalidStateError", function() {
|
||||
target.dispatchEvent(e)
|
||||
})
|
||||
assert_throws("InvalidStateError", function() {
|
||||
document.dispatchEvent(e)
|
||||
})
|
||||
}), false)
|
||||
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
|
||||
dispatch_dispatch.done()
|
||||
})
|
||||
|
||||
test(function() {
|
||||
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=17713
|
||||
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=17714
|
||||
|
||||
var e = document.createEvent("Event")
|
||||
e.initEvent("type", false, false)
|
||||
|
||||
var called = []
|
||||
|
||||
var target = document.createElement("div")
|
||||
target.addEventListener("type", function() {
|
||||
called.push("First")
|
||||
throw new Error()
|
||||
}, false)
|
||||
|
||||
target.addEventListener("type", function() {
|
||||
called.push("Second")
|
||||
}, false)
|
||||
|
||||
assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true")
|
||||
assert_array_equals(called, ["First", "Second"],
|
||||
"Should have continued to call other event listeners")
|
||||
}, "Exceptions from event listeners must not be propagated.")
|
||||
|
||||
async_test(function() {
|
||||
var results = []
|
||||
var outerb = document.createElement("b")
|
||||
var middleb = outerb.appendChild(document.createElement("b"))
|
||||
var innerb = middleb.appendChild(document.createElement("b"))
|
||||
outerb.addEventListener("x", this.step_func(function() {
|
||||
middleb.addEventListener("x", this.step_func(function() {
|
||||
results.push("middle")
|
||||
}), true)
|
||||
results.push("outer")
|
||||
}), true)
|
||||
innerb.dispatchEvent(new Event("x"))
|
||||
assert_array_equals(results, ["outer", "middle"])
|
||||
this.done()
|
||||
}, "Event listeners added during dispatch should be called");
|
||||
|
||||
async_test(function() {
|
||||
var results = []
|
||||
var b = document.createElement("b")
|
||||
b.addEventListener("x", this.step_func(function() {
|
||||
results.push(1)
|
||||
}), true)
|
||||
b.addEventListener("x", this.step_func(function() {
|
||||
results.push(2)
|
||||
}), false)
|
||||
b.addEventListener("x", this.step_func(function() {
|
||||
results.push(3)
|
||||
}), true)
|
||||
b.dispatchEvent(new Event("x"))
|
||||
assert_array_equals(results, [1, 2, 3])
|
||||
this.done()
|
||||
}, "Event listeners should be called in order of addition")
|
||||
</script>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>EventTarget.removeEventListener</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:Ms2ger@gmail.com">
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#dom-eventtarget-removeeventlistener">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
// Step 1.
|
||||
test(function() {
|
||||
assert_equals(document.removeEventListener("x", null, false), undefined);
|
||||
assert_equals(document.removeEventListener("x", null, true), undefined);
|
||||
assert_equals(document.removeEventListener("x", null), undefined);
|
||||
}, "removing a null event listener should succeed");
|
||||
</script>
|
25
tests/wpt/web-platform-tests/dom/events/ProgressEvent.html
Normal file
25
tests/wpt/web-platform-tests/dom/events/ProgressEvent.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<!doctype html>
|
||||
<title>ProgressEvent constructor</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
test(function() {
|
||||
var ev = new ProgressEvent("test")
|
||||
assert_equals(ev.type, "test")
|
||||
assert_equals(ev.target, null)
|
||||
assert_equals(ev.currentTarget, null)
|
||||
assert_equals(ev.eventPhase, Event.NONE)
|
||||
assert_equals(ev.bubbles, false)
|
||||
assert_equals(ev.cancelable, false)
|
||||
assert_equals(ev.defaultPrevented, false)
|
||||
assert_equals(ev.isTrusted, false)
|
||||
assert_true(ev.timeStamp > 0)
|
||||
assert_true("initEvent" in ev)
|
||||
}, "Default event values.")
|
||||
test(function() {
|
||||
assert_throws("NotSupportedError", function() {
|
||||
document.createEvent("ProgressEvent")
|
||||
})
|
||||
}, "document.createEvent() should not work with ProgressEvent.")
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue