| <html> | |
| <head> | |
| <style> | |
| .editing { | |
| margin: 10; padding: 0; | |
| } | |
| </style> | |
| <script src=../editing.js language="JavaScript" type="text/JavaScript" ></script> | |
| <script> | |
| function editingTest() { | |
| typeCharacterCommand('1'); | |
| typeCharacterCommand('2'); | |
| boldCommand(); | |
| typeCharacterCommand('3'); | |
| italicCommand(); | |
| typeCharacterCommand('4'); | |
| typeCharacterCommand('5'); | |
| typeCharacterCommand('6'); | |
| italicCommand(); | |
| boldCommand(); | |
| insertParagraphCommand(); | |
| typeCharacterCommand('l'); | |
| typeCharacterCommand('i'); | |
| typeCharacterCommand('n'); | |
| typeCharacterCommand('e'); | |
| typeCharacterCommand(' '); | |
| typeCharacterCommand('t'); | |
| typeCharacterCommand('w'); | |
| typeCharacterCommand('o'); | |
| insertLineBreakCommand(); | |
| insertLineBreakCommand(); | |
| typeCharacterCommand('a'); | |
| typeCharacterCommand('n'); | |
| typeCharacterCommand('d'); | |
| typeCharacterCommand(' '); | |
| fontSizeCommand("6"); | |
| underlineCommand(); | |
| typeCharacterCommand('t'); | |
| typeCharacterCommand('h'); | |
| typeCharacterCommand('r'); | |
| typeCharacterCommand('e'); | |
| typeCharacterCommand('e'); | |
| typeCharacterCommand(' '); | |
| typeCharacterCommand(' '); | |
| typeCharacterCommand(' '); | |
| underlineCommand(); | |
| insertLineBreakCommand(); | |
| } | |
| </script> | |
| <title>Attributed String Test</title> | |
| </head> | |
| <body contenteditable id="root"> | |
| <div id="wrapper"> | |
| <div class="editing" id="test"></div> | |
| </div> | |
| <script> | |
| runEditingTest(); | |
| </script> | |
| <script type="text/javascript"> | |
| var console_messages = document.createElement("ol"); | |
| function log(message) | |
| { | |
| var item = document.createElement("li"); | |
| item.appendChild(document.createTextNode(String(message).replace(/0x[0-9a-fA-F]{8}/g, "0xXXXXXXXX"))); | |
| console_messages.appendChild(item); | |
| } | |
| if (window.testRunner) { | |
| try { | |
| testRunner.dumpAsText(); | |
| log("Actual HTML:"); | |
| log("<pre>" + document.getElementById("wrapper").innerHTML + "</pre>"); | |
| window.getSelection().setPosition(document.body, 0); | |
| log("(0, 0): " + textInputController.attributedSubstringFromRange(0, 0)); | |
| log("(0, 0) length: " + textInputController.attributedSubstringFromRange(0, 0).length()); | |
| log("(0, 2): " + textInputController.attributedSubstringFromRange(0, 2)); | |
| log("(0, 2) length: " + textInputController.attributedSubstringFromRange(0, 2).length()); | |
| log("(1, 2): " + textInputController.attributedSubstringFromRange(1, 2)); | |
| log("(1, 2) length: " + textInputController.attributedSubstringFromRange(1, 2).length()); | |
| log("(0, 3): " + textInputController.attributedSubstringFromRange(0, 3)); | |
| log("(0, 3) length: " + textInputController.attributedSubstringFromRange(0, 3).length()); | |
| log("(0, 6): " + textInputController.attributedSubstringFromRange(0, 6)); | |
| log("(0, 6) length: " + textInputController.attributedSubstringFromRange(0, 6).length()); | |
| log("(0, 7): " + textInputController.attributedSubstringFromRange(0, 7)); | |
| log("(0, 7) length: " + textInputController.attributedSubstringFromRange(0, 7).length()); // should be 7 characters! | |
| log("(0, 31): " + textInputController.attributedSubstringFromRange(0, 31)); | |
| log("(0, 31) length: " + textInputController.attributedSubstringFromRange(0, 31).length()); // actual length IS 31 | |
| log("(0, 100): " + textInputController.attributedSubstringFromRange(0, 100)); | |
| log("(0, 100) length: " + textInputController.attributedSubstringFromRange(0, 100).length()); // should be 31 characters! | |
| log("(1, 100): " + textInputController.attributedSubstringFromRange(1, 100)); | |
| log("(1, 100) length: " + textInputController.attributedSubstringFromRange(1, 100).length()); // should be 30 characters! | |
| log("(2, 3): " + textInputController.attributedSubstringFromRange(2, 3)); | |
| log("(2, 3) length: " + textInputController.attributedSubstringFromRange(2, 3).length()); | |
| log("(5, 1): " + textInputController.attributedSubstringFromRange(5, 1)); | |
| log("(5, 1) length: " + textInputController.attributedSubstringFromRange(5, 1).length()); | |
| log("(5, 2): " + textInputController.attributedSubstringFromRange(5, 2)); | |
| log("(5, 2) length: " + textInputController.attributedSubstringFromRange(5, 2).length()); | |
| log("(5, 5): " + textInputController.attributedSubstringFromRange(5, 5)); | |
| log("(5, 5) length: " + textInputController.attributedSubstringFromRange(5, 5).length()); | |
| log("(15, 14): " + textInputController.attributedSubstringFromRange(15, 14)); | |
| log("(15, 14) length: " + textInputController.attributedSubstringFromRange(15, 14).length()); // should be 14 characters! | |
| log("(100, 0): " + textInputController.attributedSubstringFromRange(100, 0)); // should be undefined | |
| log("(100, 100): " + textInputController.attributedSubstringFromRange(100, 100)); // should be undefined | |
| } catch (ex) { | |
| log("Exception: " + ex.description); | |
| } | |
| var console = document.createElement("p"); | |
| console.appendChild(console_messages); | |
| document.body.appendChild(console); | |
| } else { | |
| document.write("(cannot run interactively)"); | |
| } | |
| </script> | |
| </body> | |
| </html> |