<!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>

<iframe id="frame" srcdoc="<body> 
    <style>button { border: 0; }</style> 
    <div style='border: 1px solid #000; height: 5000px;'>5000-pixel box</div> 
    <div id='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> 
</body>"></iframe>

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

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

<script>
description("Tests that scrolling to move an element to a specific point successfully scrolls both an iframe and a div with overflow.");

if (window.testRunner)
    testRunner.waitUntilDone();

window.jsTestIsAsync = true;

function runTest() {
    window.frame = document.getElementById("frame");
    window.frameWindow = frame.contentWindow;
    window.frameDoc = frameWindow.document;
    window.container = frameDoc.getElementById("container");
    window.target = frameDoc.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);
    frameWindow.scrollTo(0, 0);
    container.scrollTop = 0;
    shouldBeZero("window.pageYOffset");
    shouldBeZero("frameWindow.pageYOffset");
    shouldBeZero("container.scrollTop");

    // Scroll to various locations and check.
    if (window.accessibilityController)
        targetAccessibleObject.scrollToGlobalPoint(0, 0);
    shouldBeZero("target.getBoundingClientRect().top");
    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();
}

window.addEventListener("load", function() {
    setTimeout(runTest, 0);
}, false);

</script>

</body>
</html>
