Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /html/semantics/forms/customizable-combobox/customizable-combobox-popover-exception.tentative.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<link rel=author href="mailto:jarhar@chromium.org">
<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>
<script src="/resources/testdriver-actions.js"></script>
<style>
input, datalist {
appearance: base;
}
</style>
<input list=datalist>
<datalist id=datalist>
<option>one</option>
<option>two</option>
</datalist>
<script>
const ArrowDown = '\uE015';
function pressKey(key) {
return (new test_driver.Actions()
.keyDown(key)
.keyUp(key))
.send();
}
promise_test(async () => {
const input = document.querySelector('input');
const datalist = document.querySelector('datalist');
let beforetoggles = 0;
datalist.addEventListener('beforetoggle', () => {
datalist.remove();
beforetoggles++;
});
input.focus();
assert_equals(beforetoggles, 1,
'beforetoggle event listener should have run once after calling input.focus().');
assert_false(datalist.matches(':popover-open'),
'Datalist should not be open after disconnecting in beforetoggle.');
document.body.appendChild(datalist);
beforetoggles = 0;
await pressKey(ArrowDown);
assert_equals(beforetoggles, 1,
'beforetoggle event listener should have run once after pressing arrow down.');
assert_false(datalist.matches(':popover-open'),
'Datalist should not be open after disconnecting in beforetoggle.');
}, 'Datalist popover should not show when an exception is encountered when showing the popover.');
</script>