<!DOCTYPE HTML>
<title>Document.prototype.elementsFromPoint on SVG text content elements</title>
<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-document-elementsfrompoint">
<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);
}
text {
    font-size: 50px;
}
</style>
<div id='sandbox'>
  <svg id='svg' width='300' height='300'>
    <defs>
      <path id="path" d="M10,170h1000"/>
    </defs>
    <text id="text1" x="10" y="50">Some text</text>
    <text id="text2" x="10" y="110"><tspan id="tspan1">Some text</tspan></text>
    <text id="text3"><textPath id="textpath1" xlink:href="#path">Some text</textpath></text>
    <text id="text4" x="10" y="230">Text under<tspan id="tspan2" x="10">Text over</tspan></text>
  </svg>
</div>
<script>
test(function() {
    assertElementsFromPoint('document', 125, 125,
        [text1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside a <text>');

test(function() {
    assertElementsFromPoint('document', 125, 185,
        [tspan1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside a <tspan> nested in a <text> without content');

test(function() {
    assertElementsFromPoint('document', 125, 245,
        [textpath1, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside a <textPath> nested in a <text> without content');

test(function() {
    assertElementsFromPoint('document', 125, 305,
        [tspan2, text4, svg, sandbox, document.body, document.documentElement]);
}, 'elementsFromPoint for a point inside an overlapping <tspan> nested in a <text>');
</script>
