Update web-platform-tests to revision fb15e14b52049f952612623ee0d7fb7a620a57c9

This commit is contained in:
WPT Sync Bot 2018-11-01 21:34:37 -04:00
parent 200cc8aa6b
commit 4a942c982f
141 changed files with 2563 additions and 1589 deletions

View file

@ -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>