| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <body> |
| <span id="not-editable" contenteditable>I'm not editable.</span> |
| <dialog> |
| <span id="editable" contenteditable>I'm editable.</span> |
| </dialog> |
| <script> |
| function clickOn(element) |
| { |
| if (!window.eventSender) |
| return; |
| |
| var absoluteTop = 0; |
| var absoluteLeft = 0; |
| for (var parentNode = element; parentNode; parentNode = parentNode.offsetParent) { |
| absoluteLeft += parentNode.offsetLeft; |
| absoluteTop += parentNode.offsetTop; |
| } |
| |
| var x = absoluteLeft + element.offsetWidth / 2; |
| var y = absoluteTop + element.offsetHeight / 2; |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| eventSender.mouseMoveTo(0, 0); |
| } |
| |
| function test() |
| { |
| description('Test that inert nodes cannot be edited. The test passes if the only text you can edit is in the dialog.'); |
| |
| dialog = document.querySelector('dialog'); |
| dialog.showModal(); |
| notEditable = document.querySelector('#not-editable'); |
| editable = document.querySelector('#editable'); |
| |
| if (!window.eventSender) |
| return; |
| clickOn(notEditable); |
| oldValue = notEditable.textContent; |
| eventSender.keyDown('a'); |
| shouldBe('notEditable.textContent', 'oldValue'); |
| |
| clickOn(editable); |
| oldValue = editable.textContent; |
| eventSender.keyDown('a'); |
| shouldNotBe('editable.textContent', 'oldValue'); |
| |
| notEditable.remove(); |
| editable.remove(); |
| } |
| |
| test(); |
| </script> |
| </body> |
| </html> |