<html>
<head>
<script src="../resources/js-test.js"></script>
<style>
button {
border: 0;
}
</style>
</head>
<body>
<p id="description"></p>
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
<div id="outer_container" style="height: 100px; overflow: scroll">
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
<div id="inner_container" style="height: 100px; overflow: scroll">
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
<button id="target">Target</button>
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
</div>
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
</div>
<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
<div id="console"></div>
<script>
description("Tests that scrolling an element to a specific point can successfully scroll multiple nested scrolling views'.");
function runTest() {
window.outerContainer = document.getElementById("outer_container");
window.innerContainer = document.getElementById("inner_container");
window.target = document.getElementById("target");
if (window.accessibilityController) {
target.focus();
var targetAccessibleObject = accessibilityController.focusedElement;
}
// Reset the initial scroll positions (since calling focus() can scroll the page too).
window.scrollTo(0, 0);
outerContainer.scrollTop = 0;
innerContainer.scrollTop = 0;
shouldBe("window.pageYOffset", "0");
shouldBe("outerContainer.scrollTop", "0");
shouldBe("innerContainer.scrollTop", "0");
shouldBeGreaterThanOrEqual("target.getBoundingClientRect().top", "15000");
// Scroll to various locations and check.
if (window.accessibilityController)
targetAccessibleObject.scrollToGlobalPoint(0, 0);
shouldBe("target.getBoundingClientRect().top", "0");
if (window.accessibilityController)
targetAccessibleObject.scrollToGlobalPoint(0, 300);
shouldBe("target.getBoundingClientRect().top", "300");
if (window.accessibilityController)
targetAccessibleObject.scrollToGlobalPoint(0, 3000);
shouldBe("target.getBoundingClientRect().top", "3000");
finishJSTest();
}
runTest();
</script>
</body>
</html>