| <html> |
| <body contenteditable><div><object></object></div>123456789</body> |
| <script> |
| var console_messages = document.createElement("ol"); |
| function log(message) |
| { |
| var item = document.createElement("li"); |
| item.appendChild(document.createTextNode(message)); |
| console_messages.appendChild(item); |
| } |
| function createConsole() |
| { |
| var console = document.createElement("pre"); |
| console.appendChild(console_messages); |
| document.body.appendChild(console); |
| } |
| |
| log("-"); |
| log("This tests a particular construction that screws up the text iterator."); |
| log("-"); |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| |
| // Set selection, because attributedSubstringFromRange only works on the run of text that's |
| // currently selected. |
| window.getSelection().setPosition(document.body, 0); |
| |
| var stringFromInnerText = document.body.innerText; |
| var stringFromAttributedSubstring = textInputController.attributedSubstringFromRange(0, 100).string(); |
| |
| log("actual text: \\n123456789"); |
| log("from innerText (TextIterator): " + stringFromInnerText.replace("\n", "\\n")); |
| log("from attributedSubstringFromRange: " + stringFromAttributedSubstring.replace("\n", "\\n")); |
| |
| if (stringFromInnerText != stringFromAttributedSubstring) |
| log("FAILED: Strings must match to keep input methods working."); |
| else if (stringFromInnerText == "\n123456789") |
| log("SUCCESS: Strings were correct."); |
| else |
| log("SUCCESS: Strings matched, although there is room for improvement because they were both wrong."); |
| } else { |
| log("DID NOT TEST: This test cannot run interactively."); |
| } |
| createConsole(); |
| |
| </script> |
| </body> |
| </html> |