chromium/third_party/blink/web_tests/accessibility/inline-text-bounds-for-range-br.html

<!DOCTYPE HTML>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<p id="paragraph">Line 1<br>Line 2</p>

<script>
test(function(t) {
    // Due to rounding we won't get identical bounds as getBoundingClientRect(),
    // so allow the test to pass if we're within 1 pixel.
    var epsilon = 1;

    var axParagraph = accessibilityController.accessibleElementById("paragraph");
    var axStaticText1 = axParagraph.childAtIndex(0);
    eval("var axTextBounds1 = " + axStaticText1.boundsForRange(0, 6));

    var paragraph = document.getElementById("paragraph");
    var range = new Range();
    range.setStart(paragraph.firstChild, 0);
    range.setEnd(paragraph.firstChild, 6);
    var rangeBounds = range.getBoundingClientRect();

    assert_approx_equals(axTextBounds1.x, rangeBounds.left, epsilon, "Line 1 left");
    assert_approx_equals(axTextBounds1.y, rangeBounds.top, epsilon, "Line 1 top");
    assert_approx_equals(axTextBounds1.width, rangeBounds.width, epsilon, "Line 1 width");
    assert_approx_equals(axTextBounds1.height, rangeBounds.height, epsilon, "Line 1 height");

    var axStaticText2 = axParagraph.childAtIndex(2);
    eval("var axTextBounds2 = " + axStaticText2.boundsForRange(0, 6));
    range.setStart(paragraph.lastChild, 0);
    range.setEnd(paragraph.lastChild, 6);
    rangeBounds = range.getBoundingClientRect();

    assert_approx_equals(axTextBounds2.x, rangeBounds.left, epsilon, "Line 2 left");
    assert_approx_equals(axTextBounds2.y, rangeBounds.top, epsilon, "Line 2 top");
    assert_approx_equals(axTextBounds2.width, rangeBounds.width, epsilon, "Line 2 width");
    assert_approx_equals(axTextBounds2.height, rangeBounds.height, epsilon, "Line 2 height");
}, "Check bounds of inline text boxes after line breaks");
</script>