blob: 7ee485b7b663cd212ae0d6334ad7d2fef1e6bd45 [file] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
</head>
<body>
<div id="container" style="height: 100px; overflow: scroll">
<button id="upper_target">Upper Target</button>
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
<button id="lower_target">Lower Target</button>
</div>
<script>
var output = "Tests that scrolling to make an element visible successfully scrolls an arbitrary HTML element that has CSS overflow set to 'scroll'.\n\n";
var upperTarget = document.getElementById("upper_target");
var lowerTarget = document.getElementById("lower_target");
window.container = document.getElementById("container");
async function scrollToMakeVisibleAndCheck(axElement, domTarget) {
axElement.scrollToMakeVisible();
await waitFor(() => {
var top = domTarget.offsetTop - container.offsetTop;
window.minYOffset = top + domTarget.offsetHeight - container.offsetHeight;
window.maxYOffset = top;
return container.scrollTop >= minYOffset && container.scrollTop <= maxYOffset;
});
output += expect("container.scrollTop >= minYOffset", "true");
output += expect("container.scrollTop <= maxYOffset", "true");
}
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var lowerTargetAccessibleObject;
var upperTargetAccessibleObject;
setTimeout(async function() {
lowerTargetAccessibleObject = await waitForFocus("lower_target");
upperTargetAccessibleObject = await waitForFocus("upper_target");
// Reset the initial scroll position (since calling focus() can scroll the page too).
container.scrollTop = 0;
output += expect("container.scrollTop", "0");
// Scroll to make lower target visible and check.
await scrollToMakeVisibleAndCheck(lowerTargetAccessibleObject, lowerTarget);
// Do it again. It shouldn't scroll.
await scrollToMakeVisibleAndCheck(lowerTargetAccessibleObject, lowerTarget);
// Now do the upper target.
await scrollToMakeVisibleAndCheck(upperTargetAccessibleObject, upperTarget);
debug(output);
finishJSTest();
}, 0);
}
</script>
</body>
</html>