<p id="description" style="display: none;">
    Test for <i><a href="https://bugs.webkit.org/show_bug.cgi?id=7023">https://bugs.webkit.org/show_bug.cgi?id=7023</a> Searching in text areas</i>.
</p>
<div id="div">
    Lorem ip<textarea id="textarea">sum dolor si</textarea>t amet
    Lorem ip<input id="input: text" type="text" value="sum dolor si">t amet
    Lorem ip<input id="input: search" type="search" value="sum dolor si">t amet
    Lorem ip<input id="input: password" type="password" value="sum dolor si">t amet
</div>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();

    var result = "";

    function textNodeIndex(node)
    {
        var index = 1;
        while (node = node.previousSibling) {
            if (node.nodeType == Node.TEXT_NODE)
                ++index;
        }
        return index;
    }

    function clearSelection()
    {
        getSelection().selectAllChildren(document.body);
        getSelection().empty();
    }

    function selectionLocationAsString()
    {
        if (document.activeElement.selectionStart != document.activeElement.selectionEnd)
            return document.activeElement.id + ", at offset " + document.activeElement.selectionStart;
        if (getSelection().rangeCount == 0)
            return "";
        var range = getSelection().getRangeAt(0);
        return "outer text node " + textNodeIndex(range.startContainer) + ", at offset " + range.startOffset;
    }

    function findAll(target)
    {
        var sel = getSelection();
        var ranges = [];

        clearSelection();
        document.execCommand("FindString", false, target);

        var firstMatch = selectionLocationAsString();
        if (firstMatch == "") {
            result += "Target " + target + " not matched\n";
            return;
        }

        result += "Target " + target + " matched at:\n    " + firstMatch + "\n";

        document.execCommand("FindString", false, target);
        var match = selectionLocationAsString();
        while (match !== firstMatch) {
            result += "    " + match + "\n";
            document.execCommand("FindString", false, target);
            match = selectionLocationAsString();
        }

        clearSelection();
    }

    findAll("m");
    findAll("s");
    findAll("si");
    findAll("rem");
    findAll("ipsum");
    findAll("sit");
    findAll("amet");

    document.body.appendChild(document.createElement("pre")).appendChild(document.createTextNode(result));
    document.getElementById("description").style.display = "";
</script>
