зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1554145 [wpt PR 15122] - Align legacy callback interface tests, a=testonly
Automatic update from web-platform-tests Align legacy callback interface tests (#15122) -- wp5At-commits: ecf36e0069be779649c30b647f6b13f2842c14da wpt-pr: 15122
This commit is contained in:
Родитель
27868b36ad
Коммит
f8e8616007
|
@ -5,13 +5,12 @@
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#callbackdef-eventlistener">
|
||||
<div id=log></div>
|
||||
<div id=target></div>
|
||||
<script>
|
||||
setup({ allow_uncaught_exception: true });
|
||||
|
||||
test(function(t) {
|
||||
var type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var target = document.createElement("div");
|
||||
var eventListener = {
|
||||
handleEvent: function(evt) {
|
||||
var that = this;
|
||||
|
@ -30,12 +29,16 @@ test(function(t) {
|
|||
|
||||
test(function(t) {
|
||||
var type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var thrownError = new Error();
|
||||
var target = document.createElement("div");
|
||||
var thrownError = { name: "test" };
|
||||
var uncaughtError;
|
||||
|
||||
window.addEventListener("error", function(event) {
|
||||
var errorHandler = function(event) {
|
||||
uncaughtError = event.error;
|
||||
};
|
||||
|
||||
window.addEventListener("error", errorHandler);
|
||||
t.add_cleanup(function() {
|
||||
window.removeEventListener("error", errorHandler);
|
||||
});
|
||||
|
||||
target.addEventListener(type, {
|
||||
|
@ -50,7 +53,7 @@ test(function(t) {
|
|||
|
||||
test(function(t) {
|
||||
var type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var target = document.createElement("div");
|
||||
var calls = 0;
|
||||
|
||||
target.addEventListener(type, {
|
||||
|
@ -68,11 +71,27 @@ test(function(t) {
|
|||
|
||||
test(function(t) {
|
||||
var type = "foo";
|
||||
var target = document.getElementById("target");
|
||||
var uncaughtError;
|
||||
var target = document.createElement("div");
|
||||
var calls = 0;
|
||||
var eventListener = function() { calls++; };
|
||||
eventListener.handleEvent = t.unreached_func("`handleEvent` method should not be called on functions");
|
||||
|
||||
window.addEventListener("error", function(event) {
|
||||
target.addEventListener(type, eventListener);
|
||||
target.dispatchEvent(new Event(type));
|
||||
assert_equals(calls, 1);
|
||||
}, "doesn't call `handleEvent` method on callable `EventListener`");
|
||||
|
||||
test(function(t) {
|
||||
var type = "foo";
|
||||
var target = document.createElement("div");
|
||||
var uncaughtError;
|
||||
var errorHandler = function(event) {
|
||||
uncaughtError = event.error;
|
||||
};
|
||||
|
||||
window.addEventListener("error", errorHandler);
|
||||
t.add_cleanup(function() {
|
||||
window.removeEventListener("error", errorHandler);
|
||||
});
|
||||
|
||||
target.addEventListener(type, {
|
||||
|
@ -81,5 +100,26 @@ test(function(t) {
|
|||
|
||||
target.dispatchEvent(new Event(type));
|
||||
assert_true(uncaughtError instanceof TypeError);
|
||||
}, "throws if `handleEvent` is not callable");
|
||||
}, "throws if `handleEvent` is falsy and not callable");
|
||||
|
||||
test(function(t) {
|
||||
var type = "foo";
|
||||
var target = document.createElement("div");
|
||||
var uncaughtError;
|
||||
var errorHandler = function(event) {
|
||||
uncaughtError = event.error;
|
||||
};
|
||||
|
||||
window.addEventListener("error", errorHandler);
|
||||
t.add_cleanup(function() {
|
||||
window.removeEventListener("error", errorHandler);
|
||||
});
|
||||
|
||||
target.addEventListener(type, {
|
||||
handleEvent: 1,
|
||||
});
|
||||
|
||||
target.dispatchEvent(new Event(type));
|
||||
assert_true(uncaughtError instanceof TypeError);
|
||||
}, "throws if `handleEvent` is thruthy and not callable");
|
||||
</script>
|
||||
|
|
|
@ -8,6 +8,7 @@ Test adapted from https://dxr.mozilla.org/chromium/source/src/third_party/WebKit
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="traversal-support.js"></script>
|
||||
<link rel="help" href="https://dom.spec.whatwg.org/#callbackdef-nodefilter">
|
||||
<div id=log></div>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -102,26 +103,15 @@ test(function()
|
|||
assert_node(walker.currentNode, { type: Element, id: 'root' });
|
||||
}, 'Testing with object with non-function acceptNode property');
|
||||
|
||||
test(function()
|
||||
test(function(t)
|
||||
{
|
||||
var filter = function() { return NodeFilter.FILTER_ACCEPT; };
|
||||
filter.acceptNode = function(node) { return NodeFilter.FILTER_SKIP; };
|
||||
filter.acceptNode = t.unreached_func("`acceptNode` method should not be called on functions");
|
||||
var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
|
||||
assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
||||
assert_node(walker.nextNode(), { type: Element, id: 'B1' });
|
||||
}, 'Testing with function having acceptNode function');
|
||||
|
||||
test(function()
|
||||
{
|
||||
var filter = {
|
||||
acceptNode: function(node) {
|
||||
return NodeFilter.FILTER_ACCEPT;
|
||||
}
|
||||
};
|
||||
var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
|
||||
assert_node(walker.firstChild(), { type: Element, id: 'A1' });
|
||||
}, 'Testing acceptNode callee');
|
||||
|
||||
test(function()
|
||||
{
|
||||
var test_error = { name: "test" };
|
||||
|
@ -135,6 +125,38 @@ test(function()
|
|||
assert_node(walker.currentNode, { type: Element, id: 'root' });
|
||||
}, 'Testing with filter function that throws');
|
||||
|
||||
test(function() {
|
||||
var testError = { name: "test" };
|
||||
var filter = {
|
||||
get acceptNode() {
|
||||
throw testError;
|
||||
},
|
||||
};
|
||||
|
||||
var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
|
||||
assert_throws(testError, function() { walker.firstChild(); });
|
||||
assert_node(walker.currentNode, { type: Element, id: 'root' });
|
||||
assert_throws(testError, function() { walker.nextNode(); });
|
||||
assert_node(walker.currentNode, { type: Element, id: 'root' });
|
||||
}, "rethrows errors when getting `acceptNode`");
|
||||
|
||||
test(function() {
|
||||
var calls = 0;
|
||||
var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {
|
||||
get acceptNode() {
|
||||
calls++;
|
||||
return function() {
|
||||
return NodeFilter.FILTER_ACCEPT;
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
assert_equals(calls, 0);
|
||||
walker.nextNode();
|
||||
walker.nextNode();
|
||||
assert_equals(calls, 2);
|
||||
}, "performs `Get` on every traverse");
|
||||
|
||||
test(function()
|
||||
{
|
||||
var test_error = { name: "test" };
|
||||
|
|
Загрузка…
Ссылка в новой задаче