<!DOCTYPE HTML>
<script src="../../../../../resources/testharness.js"></script>
<script src="../../../../../resources/testharnessreport.js"></script>
<script src="resources/elementsFromPoint.js"></script>
<style>
html, body {
    margin: 0;
    padding: 0;
}
#svg {
    margin: 100px;
    background-color: rgba(0,180,0,0.2);
}
rect {
    fill: rgba(180,0,0,0.2);
}
#topLeftRect2NoHitTest {
    pointer-events: none;
}
</style>
<div id='sandbox'>
    <svg id='svg' width='300' height='300'>
        <rect id='topLeftRect1' x='5' y='5' width='90' height='90'/>
        <rect id='topLeftRect2NoHitTest' x='10' y='10' width='80' height='80'/>
        <rect id='topLeftRect3' x='15' y='15' width='70' height='70'/>

        <g id='middleG1'>
            <g id='middleG2'>
                <rect id='middleRect1' x='105' y='105' width='90' height='90'/>
                <rect id='middleRect2' x='110' y='110' width='80' height='80'/>
            </g>
        </g>

        <g id='bottomLeftG'>
            <image id='bottomLeftImage1' x='5' y='205' width='90' height='90' xlink:href='data:image/svg+xml;utf8,<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="rgba(180,0,0,0.2)"/></svg>'/>
            <image id='bottomLeftImage2' x='10' y='210' width='80' height='80' xlink:href='data:image/svg+xml;utf8,<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="rgba(180,0,0,0.2)"/></svg>'/>
        </g>

        <g id='bottomRightG1' transform='translate(300, 300)'>
            <g id='bottomRightG2' transform='translate(-100, -100)'>
                <rect id='bottomRightRect1' x='5' y='5' width='90' height='90'/>
                <rect id='bottomRightRect2' x='110' y='110' width='80' height='80' transform='translate(-100, -100)'/>
            </g>
        </g>
    </svg>
</div>
<script>
test(function() {
    assertElementsFromPoint('document', 125, 125,
        [topLeftRect3, topLeftRect1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside two rects');

test(function() {
    assertElementsFromPoint('document', 225, 225,
        [middleRect2, middleRect1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside two rects that are inside a <g>');

test(function() {
    assertElementsFromPoint('document', 125, 325,
        [bottomLeftImage2, bottomLeftImage1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside two images');

test(function() {
    assertElementsFromPoint('document', 325, 325,
        [bottomRightRect2, bottomRightRect1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside transformed rects and <g>');
</script>
