mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 12:19:54 +00:00
LibWeb/HTML: Add the command attribute to the button element
This commit adds the getter and setter for the command attribute to the button element. Executing commands is not implemented yet.
This commit is contained in:
parent
629cd3c42a
commit
b2db07f002
Notes:
github-actions[bot]
2025-04-18 11:11:19 +00:00
Author: https://github.com/skyz1
Commit: b2db07f002
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4220
Reviewed-by: https://github.com/tcl3 ✅
6 changed files with 140 additions and 0 deletions
|
@ -0,0 +1,42 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="author" title="Keith Cirkel" href="mailto:wpt@keithcirkel.co.uk" />
|
||||
<meta name="timeout" content="long" />
|
||||
<link rel="help" href="https://open-ui.org/components/invokers.explainer/" />
|
||||
<script src="../../../../resources/testharness.js"></script>
|
||||
<script src="../../../../resources/testharnessreport.js"></script>
|
||||
<script src="../../../../resources/testdriver.js"></script>
|
||||
<script src="../../../../resources/testdriver-actions.js"></script>
|
||||
<script src="../../../../resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/invoker-utils.js"></script>
|
||||
|
||||
<div id="invokee"></div>
|
||||
<button id="invokerbutton" commandfor="invokee"></button>
|
||||
|
||||
<script>
|
||||
['', 'show-modal', 'toggle-popover', 'hide-popover', 'show-popover', 'close', '--custom'].forEach(command => {
|
||||
test(function (t) {
|
||||
invokerbutton.command = command
|
||||
assert_equals(invokerbutton.command, command, `invoker should reflect ${command} properly`);
|
||||
}, `invoker should reflect ${command} properly`);
|
||||
});
|
||||
[
|
||||
['sHoW-MoDaL', 'show-modal'],
|
||||
['tOgGlE-pOpOvEr', 'toggle-popover'],
|
||||
['hIdE-pOpOvEr', 'hide-popover'],
|
||||
['sHoW-pOpOvEr', 'show-popover'],
|
||||
['ClOsE', 'close'],
|
||||
['--cUsToM', '--cUsToM'
|
||||
]].forEach(([cased, command]) => {
|
||||
test(function (t) {
|
||||
invokerbutton.command = cased
|
||||
assert_equals(invokerbutton.command, command, `invoker should reflect odd cased ${cased} properly - as ${command}`);
|
||||
}, `invoker should reflect odd cased ${cased} properly - as ${command}`);
|
||||
});
|
||||
['invalid', 'show-invalid', 'foo-bar'].forEach(command => {
|
||||
test(function (t) {
|
||||
invokerbutton.command = command
|
||||
assert_equals(invokerbutton.command, '', `invoker should reflect the invalid value "${command}" as the empty string`);
|
||||
}, `invoker should reflect the invalid value "${command}" as the empty string`);
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,27 @@
|
|||
function waitForRender() {
|
||||
return new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve)));
|
||||
}
|
||||
async function clickOn(element) {
|
||||
await waitForRender();
|
||||
let rect = element.getBoundingClientRect();
|
||||
let actions = new test_driver.Actions();
|
||||
// FIXME: Switch to pointerMove(0, 0, {origin: element}) once
|
||||
// https://github.com/web-platform-tests/wpt/issues/41257 is fixed.
|
||||
await actions
|
||||
.pointerMove(Math.round(rect.x + rect.width / 2), Math.round(rect.y + rect.height / 2), {})
|
||||
.pointerDown({button: actions.ButtonType.LEFT})
|
||||
.pointerUp({button: actions.ButtonType.LEFT})
|
||||
.send();
|
||||
await waitForRender();
|
||||
}
|
||||
async function hoverOver(element) {
|
||||
await waitForRender();
|
||||
let rect = element.getBoundingClientRect();
|
||||
let actions = new test_driver.Actions();
|
||||
// FIXME: Switch to pointerMove(0, 0, {origin: element}) once
|
||||
// https://github.com/web-platform-tests/wpt/issues/41257 is fixed.
|
||||
await actions
|
||||
.pointerMove(Math.round(rect.x + rect.width / 2), Math.round(rect.y + rect.height / 2), {})
|
||||
.send();
|
||||
await waitForRender();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue