blob: db6789a5e7957baecb513673f6353232835fd364 [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 type="text" value="sum dolor si">t amet
Lorem ip<input type="search" value="sum dolor si">t amet
Lorem ip<input type="password" value="sum dolor si">t amet
</div>
<script>
if (window.layoutTestController)
layoutTestController.dumpAsText();
var result = "";
function elementIndex(node)
{
var index = 1;
while (node = node.previousSibling) {
if (node.nodeType == Node.ELEMENT_NODE)
++index;
}
return index;
}
function textNodeIndex(node)
{
var index = 1;
while (node = node.previousSibling) {
if (node.nodeType == Node.TEXT_NODE)
++index;
}
return index;
}
function findAll(target)
{
var ranges = [];
var sel = getSelection();
sel.empty();
document.execCommand("FindString", false, target);
if (!sel.rangeCount) {
result += "Target " + target + " not matched\n";
return;
}
var range = sel.getRangeAt(0);
while (!ranges[0] || range.startContainer != ranges[0].startContainer || range.startOffset != ranges[0].startOffset) {
ranges.push(range);
document.execCommand("FindString", false, target);
range = sel.getRangeAt(0);
}
sel.empty();
var div = document.getElementById("div");
result += "Target " + target + " matched at:\n";
while (range = ranges.shift()) {
result += " ";
result += range.startContainer.parentNode != div ? "text control" : "outer text node " + textNodeIndex(range.startContainer);
result += ", at offset " + range.startOffset + "\n";
}
}
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>