blob: 063f5021c66e30ff435f4c65747564e5008a918a [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
function clickAt(x, y) {
if (!window.eventSender)
assert_not_reached('This test requires eventSender.');
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.mouseUp();
}
function clickLeft(selection, elmID) {
const elm = selection.document.getElementById(elmID);
const x = selection.computeLeft(elm);
const y = selection.computeTop(elm) + elm.offsetHeight / 2;
clickAt(x, y);
}
function clickRight(selection, elmID) {
const elm = selection.document.getElementById(elmID);
const x = selection.computeLeft(elm) + elm.offsetWidth - 1;
const y = selection.computeTop(elm) + elm.offsetHeight / 2;
clickAt(x, y);
}
function clickCenter(selection, elmID) {
const elm = selection.document.getElementById(elmID);
const x = selection.computeLeft(elm) + elm.offsetWidth / 2;
const y = selection.computeTop(elm) + elm.offsetHeight / 2;
clickAt(x, y);
}
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickLeft(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'|<span contenteditable="false">Hello</span>',
'</div>'],
'Click left of contenteditable align center'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickCenter(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'<span contenteditable="false">He|llo</span>',
'</div>'],
'Click inside of contenteditable=false'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickRight(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'<span contenteditable="false">Hello</span>|',
'</div>'],
'Click right of contenteditable'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: left;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickLeft(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: left;">',
'|<span contenteditable="false">Hello</span>',
'</div>'],
'Click left of contenteditable align left'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: left;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickRight(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: left;">',
'<span contenteditable="false">Hello</span>|',
'</div>'],
'Click right of contenteditable align left'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: right;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickLeft(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: right;">',
'|<span contenteditable="false">Hello</span>',
'</div>'],
'Click left of contenteditable align right'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: right;">',
'<span contenteditable="false">Hello</span>',
'</div>'],
selection => clickRight(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: right;">',
'<span contenteditable="false">Hello</span>|',
'</div>'],
'Click right of contenteditable align right'
);
selection_test(
[ '<div contenteditable style="width:100px;">',
'<span contenteditable="false">Hello </span>',
'<span contenteditable="false" id="test">World</span>',
'</div>'],
selection => clickLeft(selection, 'test'),
[ '<div contenteditable style="width:100px;">',
'<span contenteditable="false">Hello </span>',
'|<span contenteditable="false" id="test">World</span>',
'</div>'],
'Click left of contenteditable=false following contenteditable=false'
);
selection_test(
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'</div>'],
selection => clickCenter(selection, 'test'),
[ '<div contenteditable id="test" style="width:100px;text-align: center;">',
'|',
'</div>'],
'Click inside of empty contenteditable'
);
selection_test(
[ '<div style="width:100px;">',
'Hello<span contenteditable id="test"> </span>',
'</div>'],
selection => clickCenter(selection, 'test'),
[ '<div style="width:100px;">',
'Hello<span contenteditable id="test">| </span>',
'</div>'],
'Click inside of inner empty contenteditable'
);
</script>