blob: b3e860b4855ccfe5276306d91a3dea1bc64c68b9 [file] [log] [blame]
<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script src="../../../resources/ahem.js"></script>
<script>
// This test verifies mouse drag should not cross editing boundary.
function drag(selection) {
if (!window.eventSender)
throw 'This test requires eventSender.';
// Reset mouse state
eventSender.mouseMoveTo(0, 0);
eventSender.leapForward(9999);
const from = selection.document.getElementById('from');
eventSender.mouseMoveTo(
selection.computeLeft(from) + from.offsetWidth / 2,
selection.computeTop(from) + from.offsetHeight / 2);
eventSender.mouseDown();
eventSender.leapForward(200);
const to = selection.document.getElementById('to');
eventSender.mouseMoveTo(
selection.computeLeft(to) + to.offsetWidth / 2,
selection.computeTop(to) + to.offsetHeight / 2);
eventSender.mouseUp();
}
const kStyle = [
'<style>',
'* { font: 10px Ahem; }',
'input { width: 64px; }',
'</style>',
].join('');
selection_test(
[
kStyle,
'<span id="from">ABCDEF</span>',
'<span id="to">012345</span>',
],
selection => drag(selection),
[
kStyle,
'<span id="from">ABC^DEF</span>',
'<span id="to">012|345</span>',
],
{dumpAs: 'flattree'},
'1 Drag left to right from SPAN to SPAN');
selection_test(
[
kStyle,
'<input id="from" readonly type="text" value="ABCDEF">',
'<span id="to">012345</span>',
],
selection => drag(selection),
[
kStyle,
'<input id="from" readonly type="text" value="ABCDEF">',
'<div>ABC^DEF|</div>',
'</input>',
'<span id="to">012345</span>',
],
{dumpAs: 'flattree'},
'2 Drag left to right from INPUT to SPAN');
selection_test(
[
kStyle,
'<input id="to" readonly type="text" value="ABCDEF">',
'<span id="from">012345</span>',
],
selection => drag(selection),
[
kStyle,
'<input id="to" readonly type="text" value="ABCDEF">',
'<div>ABCDEF</div>',
'</input>',
'<span id="from">|012^345</span>',
],
{dumpAs: 'flattree'},
'3 Drag right to left from SPAN to INPUT');
selection_test(
[
kStyle,
'<span id="from">012345</span>',
'<input id="to" readonly type="text" value="ABCDEF">',
],
selection => drag(selection),
[
kStyle,
'<span id="from">012^345|</span>',
'<input id="to" readonly type="text" value="ABCDEF">',
'<div>ABCDEF</div>',
'</input>',
],
{dumpAs: 'flattree'},
'4 Drag left to right from SPAN to INPUT');
selection_test(
[
kStyle,
'<input id="from" readonly type="text" value="ABCDEF">',
'<span>xyz</span>',
'<input id="to" readonly type="text" value="012345">',
],
selection => drag(selection),
[
kStyle,
'<input id="from" readonly type="text" value="ABCDEF">',
'<div>ABC^DEF|</div>',
'</input>',
'<span>xyz</span>',
'<input id="to" readonly type="text" value="012345">',
'<div>012345</div>',
'</input>',
],
{dumpAs: 'flattree'},
'5 Drag left to right from INPUT to INPUT');
selection_test(
[
kStyle,
'<input id="to" readonly type="text" value="ABCDEF">',
'<span>xyz</span>',
'<input id="from" readonly type="text" value="012345">',
],
selection => drag(selection),
[
kStyle,
'<input id="to" readonly type="text" value="ABCDEF">',
'<div>ABCDEF</div>',
'</input>',
'<span>xyz</span>',
'<input id="from" readonly type="text" value="012345">',
'<div>|012^345</div>',
'</input>',
],
{dumpAs: 'flattree'},
'6 Drag right to left from INPUT to INPUT');
</script>