| <!DOCTYPE html> |
| <html> |
| <head> |
| <style> |
| |
| #tests p { |
| font-size: 20px; |
| width: 12ex; |
| word-wrap: normal; |
| } |
| |
| </style> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p>This test ensures WebKit takes paddings and borders into account when moving vertically.</p> |
| <ol id="tests"> |
| <li><p contenteditable>left1 <a href="">right1 left2</a> right2</p></li> |
| <li><p contenteditable>left1 <a style="border: solid 5px blue;" href="">right1 left2</a> right2</p></li> |
| <li><p contenteditable>left1 <a style="padding: 5px;" href="">right1 left2</a> right2</p></li> |
| <li><p contenteditable>left1 <a style="padding: 5px;" href="">right1 left2 right2 left3</a> right3</p></li> |
| </ol> |
| <div id="console"></div> |
| <script> |
| |
| function moveToMiddleOfWord(node, word) { |
| window.getSelection().setPosition(node, 0); |
| if (!window.find(word)) |
| return false; |
| window.getSelection().modify('move', 'backward', 'character'); |
| window.getSelection().modify('move', 'forward', 'character'); |
| window.getSelection().modify('move', 'forward', 'character'); |
| return true; |
| } |
| |
| function selectWord() { |
| window.getSelection().modify('move', 'backward', 'word'); |
| window.getSelection().modify('extend', 'forward', 'word'); |
| return getSelection().toString().trim(); |
| } |
| |
| function moveVerticallyAndVerify(node, direction, from, to) { |
| if (node.innerText.indexOf(from) === -1 || node.innerText.indexOf(to) === -1) |
| return; |
| if (!moveToMiddleOfWord(node, from)) |
| return; |
| window.getSelection().modify('move', direction, 'line'); |
| shouldBe('selectWord()', '"' + to + '"'); |
| } |
| |
| var tests = document.getElementById('tests').getElementsByTagName('p'); |
| for (var i = 0; i < tests.length; i++) { |
| var node = tests[i]; |
| |
| debug('test ' + (i + 1)); |
| |
| node.focus(); |
| for (var j = 1; j <= 2; j++) { |
| moveVerticallyAndVerify(node, 'forward', 'left' + j, 'left' + (j + 1)); |
| moveVerticallyAndVerify(node, 'forward', 'right' + j, 'right' + (j + 1)); |
| moveVerticallyAndVerify(node, 'backward', 'left' + (j + 1), 'left' + j); |
| moveVerticallyAndVerify(node, 'backward', 'right' + (j + 1), 'right' + j); |
| } |
| |
| debug(''); |
| } |
| |
| document.getElementById('tests').style.display = 'none'; |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |