blob: a46ab1354ae47051c5538a112d3b5d8893fd9329 [file] [log] [blame]
<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>