blob: 7f46806af2337fb66aca722a65f5bf4a158736f1 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/js-test.js"></script>
<body contenteditable="true">
<p id="p"><span id="span" contenteditable="false" style="display: inline-block; height: 10mm; width:10mm; background-color:yellow;"></span></p>
<div id="console"></div><!-- to keep the test target at the top of the document -->
<script>
description('This confirms that settin the caret before an empty non-editable inline-block element with height.');
var sel = getSelection();
var range = document.createRange();
var p = document.getElementById('p');
range.setStart(p, 0);
range.setEnd(p, 0); // not needed, but to ensure the same code path as bug 428986
sel.removeAllRanges();
sel.addRange(range);
shouldBe('getSelection().rangeCount', '1');
shouldBe('getSelection().anchorNode', 'p');
shouldBe('getSelection().anchorOffset', '0');
shouldBe('getSelection().anchorNode', 'getSelection().focusNode');
shouldBe('getSelection().anchorOffset', 'getSelection().focusOffset');
caretShouldBe('span.getBoundingClientRect().left');
sel.modify('move', 'forward', 'character');
shouldBe('getSelection().rangeCount', '1');
shouldBe('getSelection().anchorNode', 'p');
shouldBe('getSelection().anchorOffset', '1');
shouldBe('getSelection().anchorNode', 'getSelection().focusNode');
shouldBe('getSelection().anchorOffset', 'getSelection().focusOffset');
caretShouldBe('span.getBoundingClientRect().right', 2);
function caretShouldBe(expected, tolerance) {
if (!window.internals) {
debug("TEST SKIPPED, cannot test the caret position without window.internals");
return;
}
shouldBe('internals.absoluteCaretBounds().left', expected, false, tolerance);
}
</script>
</body>