| <!DOCTYPE html> |
| <html> |
| <head> |
| <style type="text/css"> |
| |
| #test:first-letter { |
| color: red; |
| } |
| |
| </style> |
| </head> |
| <body> |
| <p>This tests moving caret around a word with a first-letter rule. WebKit should not crash. |
| This test also demonstrates a bug that word position is incorrectly reported.</p> |
| <div id="test" contenteditable> hello world'</div> |
| <pre id="console"></pre> |
| <script> |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| if (window.internals) |
| internals.settings.setEditingBehavior("mac"); |
| |
| function runTest(actor, expectedOffset) { |
| window.getSelection().setPosition(test.firstChild, 4); |
| var action = actor() + ' from offset ' + 4 + ' put caret at offset '; |
| var startOffset = window.getSelection().getRangeAt(0).startOffset; |
| action += startOffset; |
| if (startOffset == expectedOffset) |
| console.innerHTML += 'PASS: ' + action + '\n'; |
| else |
| console.innerHTML += 'FAIL: ' + action + ' but expected ' + expectedOffset + '\n'; |
| } |
| |
| var test = document.getElementById('test'); |
| var console = document.getElementById('console'); |
| |
| console.innerHTML += 'white-space: normal;\n'; |
| runTest(function () {window.getSelection().modify('move', 'forward', 'word'); return 'moving forward by word';}, 6); |
| runTest(function () {window.getSelection().modify('move', 'backward', 'word'); return 'moving backward by word';}, 1); |
| |
| console.innerHTML += 'white-space: pre;\n'; |
| test.style.whiteSpace = 'pre'; |
| runTest(function () {window.getSelection().modify('move', 'forward', 'word'); return 'moving forward by word';}, 6); |
| runTest(function () {window.getSelection().modify('move', 'backward', 'word'); return 'moving backward by word';}, 1); |
| |
| </script> |
| </body> |
| </html> |