<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>

<textarea id="textarea">abcdefghijklmnopqrstuvwxyz0123456789 abcdefghijklmnopqrstuvwxyz0123456789 abcdefghijklmnopqrstuvwxyz0123456789-abcdefghijklmnopqrstuvwxyz0123456789-abcdefghijklmnopqrstuvwxyz0123456789</textarea>
<br>
<div contenteditable="true" id="contenteditable">abcdefghijklmnopqrstuvwxyz0123456789 abcdefghijklmnopqrstuvwxyz0123456789 abcdefghijklmnopqrstuvwxyz0123456789-abcdefghijklmnopqrstuvwxyz0123456789-abcdefghijklmnopqrstuvwxyz0123456789</div>
<br>

<script>
    description("Test for lineIndexForTextMarker in editable text elements. The text contains soft and hard linebreaks.");

    function logLineIndexesForElement(elementID) {
        debug(`${elementID}:`);
        var p = accessibilityController.accessibleElementById(elementID).children[0];
        var range = p.textMarkerRangeForElement(p);
        var length = p.textMarkerRangeLength(range);
        var current = p.startTextMarkerForTextMarkerRange(range);
        for (let i = 0; i < length; ++i) {
            let character = p.stringForTextMarkerRange(p.textMarkerRangeForMarkers(current, p.nextTextMarker(current)));
            debug(`${i} ${character} ${p.lineIndexForTextMarker(current)}`);
            current = p.nextTextMarker(current);
        }
    }

    if (window.accessibilityController) {
        logLineIndexesForElement("textarea");
        logLineIndexesForElement("contenteditable");
    }
</script>
</body>
</html>
