mirror of
https://github.com/servo/servo.git
synced 2025-08-24 22:58:21 +01:00
Update web-platform-tests to revision fb15e14b52049f952612623ee0d7fb7a620a57c9
This commit is contained in:
parent
200cc8aa6b
commit
4a942c982f
141 changed files with 2563 additions and 1589 deletions
|
@ -0,0 +1,132 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf8">
|
||||
<title>Events must dispatch on disabled elements</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<body>
|
||||
<script>
|
||||
// HTML elements that can be disabled
|
||||
const formElements = ["button", "fieldset", "input", "select", "textarea"];
|
||||
|
||||
test(() => {
|
||||
for (const localName of formElements) {
|
||||
const elem = document.createElement(localName);
|
||||
elem.disabled = true;
|
||||
// pass becomes true if the event is called and it's the right type.
|
||||
let pass = false;
|
||||
const listener = ({ type }) => {
|
||||
pass = type === "click";
|
||||
};
|
||||
elem.addEventListener("click", listener, { once: true });
|
||||
elem.dispatchEvent(new Event("click"));
|
||||
assert_true(
|
||||
pass,
|
||||
`Untrusted "click" Event didn't dispatch on ${elem.constructor.name}.`
|
||||
);
|
||||
}
|
||||
}, "Can dispatch untrusted 'click' Events at disabled HTML elements.");
|
||||
|
||||
test(() => {
|
||||
for (const localName of formElements) {
|
||||
const elem = document.createElement(localName);
|
||||
elem.disabled = true;
|
||||
// pass becomes true if the event is called and it's the right type.
|
||||
let pass = false;
|
||||
const listener = ({ type }) => {
|
||||
pass = type === "pass";
|
||||
};
|
||||
elem.addEventListener("pass", listener, { once: true });
|
||||
elem.dispatchEvent(new Event("pass"));
|
||||
assert_true(
|
||||
pass,
|
||||
`Untrusted "pass" Event didn't dispatch on ${elem.constructor.name}`
|
||||
);
|
||||
}
|
||||
}, "Can dispatch untrusted Events at disabled HTML elements.");
|
||||
|
||||
test(() => {
|
||||
for (const localName of formElements) {
|
||||
const elem = document.createElement(localName);
|
||||
elem.disabled = true;
|
||||
// pass becomes true if the event is called and it's the right type.
|
||||
let pass = false;
|
||||
const listener = ({ type }) => {
|
||||
pass = type === "custom-pass";
|
||||
};
|
||||
elem.addEventListener("custom-pass", listener, { once: true });
|
||||
elem.dispatchEvent(new CustomEvent("custom-pass"));
|
||||
assert_true(
|
||||
pass,
|
||||
`CustomEvent "custom-pass" didn't dispatch on ${elem.constructor.name}`
|
||||
);
|
||||
}
|
||||
}, "Can dispatch CustomEvents at disabled HTML elements.");
|
||||
|
||||
test(() => {
|
||||
for (const localName of formElements) {
|
||||
const elem = document.createElement(localName);
|
||||
|
||||
// Element is disabled... so this click() MUST NOT fire an event.
|
||||
elem.disabled = true;
|
||||
let pass = true;
|
||||
elem.onclick = e => {
|
||||
pass = false;
|
||||
};
|
||||
elem.click();
|
||||
assert_true(
|
||||
pass,
|
||||
`.click() must not dispatch "click" event on disabled ${
|
||||
elem.constructor.name
|
||||
}.`
|
||||
);
|
||||
|
||||
// Element is (re)enabled... so this click() fires an event.
|
||||
elem.disabled = false;
|
||||
pass = false;
|
||||
elem.onclick = e => {
|
||||
pass = true;
|
||||
};
|
||||
elem.click();
|
||||
assert_true(
|
||||
pass,
|
||||
`.click() must dispatch "click" event on enabled ${
|
||||
elem.constructor.name
|
||||
}.`
|
||||
);
|
||||
}
|
||||
}, "Calling click() on disabled elements must not dispatch events.");
|
||||
|
||||
promise_test(async () => {
|
||||
for (const localName of formElements) {
|
||||
const elem = document.createElement(localName);
|
||||
elem.disabled = true;
|
||||
document.body.appendChild(elem);
|
||||
|
||||
// Element is disabled, so clicking must not fire events
|
||||
let pass = true;
|
||||
elem.onclick = e => {
|
||||
pass = false;
|
||||
};
|
||||
await test_driver.click(elem); // triggers "onclick"
|
||||
assert_true(
|
||||
pass,
|
||||
`${elem.constructor.name} is disabled, so onclick must not fire.`
|
||||
);
|
||||
|
||||
// Element is (re)enabled... so this click() will fire an event.
|
||||
pass = false;
|
||||
elem.disabled = false;
|
||||
elem.onclick = () => {
|
||||
pass = true;
|
||||
};
|
||||
await test_driver.click(elem); // triggers "onclick"
|
||||
assert_true(
|
||||
pass,
|
||||
`${elem.constructor.name} is enabled, so onclick must fire.`
|
||||
);
|
||||
elem.remove();
|
||||
}
|
||||
}, "Real clicks on disabled elements must not dispatch events.");
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue