<html>
<body>
    This test is to ensure that we do not crash when attempting to determine the dimension properties of an SVG text element with no renderer.
    <div id="log"><span style='color: red;'>FAIL:</span> Did not complete test</div>
<script>
    if (window.layoutTestController)
        layoutTestController.dumpAsText();
    var svgns = "http://www.w3.org/2000/svg";
    var svg = document.createElementNS(svgns, "svg");
    svg.setAttribute("style", "width:100px;height:100px;display:none;");
    var text = document.createElementNS(svgns, "text");
    var textContent = document.createTextNode("text");
    text.getNumberOfChars();
    text.getComputedTextLength();
    text.appendChild(textContent);
    text.getNumberOfChars();
    text.getComputedTextLength();
    svg.appendChild(text);
    text.getNumberOfChars();
    text.getComputedTextLength();
    document.body.appendChild(svg);
    text.getNumberOfChars();
    text.getComputedTextLength();
    document.getElementById("log").innerHTML = "<span style='color: green;'>PASS:</span> Did not crash when attempting to access SVG text dimensions.";
</script>
</body>
</html>
