| <!DOCTYPE html> |
| <html> |
| <head> |
| <title> Testcase for bug https://bugs.webkit.org/show_bug.cgi?id=89649 </title> |
| <style> |
| @font-face { |
| font-family:ahem; |
| src: url(../../resources/Ahem.ttf); |
| } |
| .editableDiv { |
| overflow:auto; |
| height:50px; |
| width:500px; |
| word-wrap:normal; |
| font-family:ahem; |
| } |
| </style> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| function runTest() { |
| description('Testcase for bug <a href="http://www.webkit.org/b/89649">http://www.webkit.org/b/89649</a>. \ |
| The test case checks if caret is drawn properly(especially scrolls properly) inside a editable container having word-wrap:normal.'); |
| |
| editableContainer = document.getElementById('test'); |
| editableContainer.focus(); |
| if (window.internals) |
| startCaretRect = internals.absoluteCaretBounds(); |
| |
| window.getSelection().setPosition(editableContainer,0); |
| if (window.testRunner) |
| testRunner.execCommand('MoveToEndOfLine'); |
| |
| finalCaretRect = {right:-1,left:-1}; |
| if (window.internals) |
| finalCaretRect = internals.absoluteCaretBounds(); |
| |
| caretWidth = finalCaretRect.right - finalCaretRect.left; |
| |
| debug('To manually test, move the caret to the end of the line. \nThe content must scroll for the caret to reach the end of the editable text.'); |
| shouldBeTrue("editableContainer.scrollLeft > 0"); |
| |
| debug('<br>Final caret rect is calculated by following constraints'); |
| debug('1) ScrollWidth = text content width + caret width'); |
| debug('2) Caret rect is always within container bounding box (thus substracting the scroll left)'); |
| shouldBe("startCaretRect.left + editableContainer.scrollWidth - editableContainer.scrollLeft - caretWidth", "finalCaretRect.right"); |
| |
| document.body.removeChild(editableContainer); |
| isSuccessfullyParsed(); |
| } |
| </script> |
| </head> |
| <body onload="runTest();"> |
| <div id="test" contenteditable="true" class="editableDiv" > |
| SOMEFILLERTEXTSOMEFILLERTEXTSOMEFILLERFILLERSFILLERSFILLERSFILLERSFILLERS |
| </div> |
| <div id="description"></div> |
| <div id="console"></div> |
| </body> |
| </html> |