blob: f2d618cb3f1cf47fdb594c074cb5006020d42af0 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="../../resources/accessibility-helper.js"></script>
<script>
description("Test that assistiveTechnologyMakeFirstResponder works correctly on iOS.");
window.jsTestIsAsync = true;
function performTest() {
if (window.testRunner) {
setTimeout(async function() {
await verifyWebContentIsFirstResponder(true);
debug("Resigning web content first respondership");
await resignWebContentFirstResponder();
await verifyWebContentIsFirstResponder(false);
var inputObj = accessibilityController.accessibleElementById("input");
inputObj.takeFocus();
debug("Performing accessibility object focus");
await verifyWebContentIsFirstResponder(true);
finishJSTest();
}, 0);
}
}
var isWebContentFirstResponder;
async function verifyWebContentIsFirstResponder(expectFirstRespondership)
{
// Set the global var to the opposite of what we expect and allow the UI script to give us the expected value.
isWebContentFirstResponder = !expectFirstRespondership;
// Because taking and resigning first respondership requires async IPC between the web and UI processes, we
// must also asynchronously wait to get our expected value.
await waitFor(() => {
setTimeout(async () => {
isWebContentFirstResponder = await (new Promise(resolve => {
testRunner.runUIScript(`uiController.isWebContentFirstResponder`, result => resolve(result === "true"));
}));
}, 0)
return isWebContentFirstResponder == expectFirstRespondership;
});
shouldBe("isWebContentFirstResponder", `${expectFirstRespondership}`);
}
async function resignWebContentFirstResponder()
{
await (new Promise(resolve => {
testRunner.runUIScript(`uiController.resignFirstResponder()`, resolve);
}));
}
window.addEventListener('load', performTest, false);
</script>
</head>
<body>
<input id="input" type="text">
</body>
</html>