| <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> |