<!DOCTYPE HTML>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/elementsFromPoint.js"></script>
<script>
var loadedFrameCount = 0;
var t1 = async_test('elementsFromPoint on the root document for points in iframe elements');
var t2 = async_test('elementsFromPoint on inner documents');

function onFrameLoaded() {
    loadedFrameCount++;
    if (loadedFrameCount < 2)
        return;

    var body = document.body;
    var html = document.documentElement;
    var iframe = document.getElementById('iframe');
    var scrollableIframe = document.getElementById('scrollableIframe');
    t1.step(function() {
        checkElementsFromPointFourCorners('document', 'iframe',
            [iframe, body,  html],
            [iframe, body, html],
            [iframe, body, html],
            [scrollableIframe, iframe, body, html]);

        checkElementsFromPointFourCorners('document', 'scrollableIframe',
            [scrollableIframe, iframe, body, html],
            [scrollableIframe, iframe, body, html],
            [scrollableIframe, iframe, body, html],
            [scrollableIframe, iframe, body, html]);
    });
    t1.done();

    t2.step(function() {
        var iframeDocument = document.getElementById('iframe').contentDocument;
        var iframeRoot = iframeDocument.documentElement;
        var iframeBody = iframeDocument.body;
        var iframeDiv = iframeDocument.getElementById('div');
        checkElementsFromPointFourCorners('document.getElementById(\'iframe\').contentDocument', 'div',
            [iframeDiv, iframeBody, iframeRoot],
            [iframeDiv, iframeBody, iframeRoot],
            [iframeDiv, iframeBody, iframeRoot],
            [iframeDiv, iframeBody, iframeRoot]);

        var iframeDocument2 = document.getElementById('scrollableIframe').contentDocument;
        var iframeRoot2 = iframeDocument2.documentElement;
        var iframeBody2 = iframeDocument2.body;
        var iframeSmallDiv = iframeDocument2.getElementById('small');
        var iframeBigDiv = iframeDocument2.getElementById('big');
        checkElementsFromPointFourCorners('document.getElementById(\'scrollableIframe\').contentDocument', 'big',
            [iframeSmallDiv, iframeBigDiv, iframeBody2, iframeRoot2],
            [iframeBigDiv, iframeBody2, iframeRoot2],
            [],
            []);
    });
    t2.done();
}
</script>
<style>
html, body {
    margin: 0;
    padding: 0;
}
body {
    height: 500px;
}
#iframe {
    width: 200px;
    height: 200px;
}
#scrollableIframe {
    position: absolute;
    top: 0;
    left: 0;
    transform: translate(50px, 50px);
    width: 150px;
    height: 150px;
    overflow-y: scroll;
    overflow-x: scroll;
}
</style>
<iframe id="iframe" src="resources/iframe1.html"></iframe>
<iframe id="scrollableIframe" src="resources/iframe2.html"></iframe>
