<!DOCTYPE html>
<head>
<script src="../resources/js-test.js"></script>
</head>
<body>

<p id="description"></p>

<div style="border: 1px solid #000; height: 5000px;">5000-pixel box</div>
<button id="target" style="height: 5000px;">Target</button>

<div id="console"></div>

<script>
description("Tests that scrolling to make a certain region within an element visible successfully scrolls the main window.");

function runTest() {
    var target = document.getElementById("target");

    var targetAccessibleObject;
    if (window.accessibilityController) {
        target.focus();
        targetAccessibleObject = accessibilityController.focusedElement;
    }

    // Reset the initial scroll position (since calling focus() can scroll the page too).
    window.scrollTo(0, 0);
    shouldBeZero("window.pageYOffset");

    // Scroll to make the midpoint of the target visible and check.
    if (window.accessibilityController)
        targetAccessibleObject.scrollToMakeVisibleWithSubFocus(0, 2500, 100, 2600);
    window.minYOffset = target.offsetTop + 2500 - window.innerHeight;
    window.maxYOffset = target.offsetTop + 2500;
    shouldBeTrue("window.pageYOffset >= minYOffset");
    shouldBeTrue("window.pageYOffset <= maxYOffset");

    finishJSTest();
}

runTest();

</script>

</body>
</html>
