Bug 1624710 [wpt PR 22424] - Add a test for unexpected activation triggered during space keydown driven focus management, a=testonly

Automatic update from web-platform-tests
Add a test for unexpected activation triggered during space keydown driven focus management (#22424)

Relevant spec: https://w3c.github.io/uievents/#event-flow-activation

This is targeting a Firefox bug where when forwarding focus on space and enter
keydown events, a unexpected click event is triggered on the forward target.

Here's a demo page for the buggy behavior:https://html-is.glitch.me/firefox-space-focus.html

This test case only cover the Space key case where Firefox is the outlier.

--

wpt-commits: cc87c188abc5c88460d24379e69d540372f0c683
wpt-pr: 22424
This commit is contained in:
Mu-An 慕安 2020-04-28 11:33:21 +00:00 коммит произвёл moz-wptsync-bot
Родитель b68d4ed809
Коммит 6deffb0efb
1 изменённых файлов: 48 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Focus management event expectations</title>
<link rel="author" title="Mu-An Chiou" href="https://muan.co">
<link rel="help" href="https://w3c.github.io/uievents/#event-flow-activation">
<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>
</head>
<body>
<button type="button" id="fromEl">Focus management from button</button>
<button type="button" id="toEl">To button</button>
<button type="button" id="EndTestEl">End test button</button>
</body>
<script>
const from = document.getElementById("fromEl")
const to = document.getElementById("toEl")
const endTest = document.getElementById("EndTestEl")
from.addEventListener("keydown", function (event) {
if (event.key === " ") to.focus()
})
async_test(function (t) {
let buttonFocused = false
to.addEventListener("click", t.unreached_func("Button should not be clicked"))
to.addEventListener("focus", () => buttonFocused = true)
endTest.addEventListener('click', () => {
assert_true(buttonFocused, "Button should be focused")
t.step_timeout(() => t.done(), 200)
})
// execute test
from.focus()
new test_driver.Actions().keyDown("\ue00d").keyUp("\ue00d").send().then(() =>
new test_driver.click(endTest)
)
}, "Keydown to focus should not trigger activation")
</script>
</html>