blob: 0342afbd730337733f14bded560b9164a69b6f1c [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
const kStyle = `
<style>
div.test {
font: 10px/10px Ahem;
width: 30px;
word-break: break-all;
padding-right: 10px;
}
</style>`;
// Regression tests for https://crbug.com/919146
// Mouse down at the end of the first line. Without releasing, slightly move
// the mouse around. Caret shouldn't be moved to the second line.
selection_test(
`${kStyle}<div class="test" contenteditable>foobar</div>`,
selection => {
assert_own_property(window, 'eventSender');
assert_own_property(window, 'internals');
const div = selection.document.querySelector('div.test');
const x = selection.computeLeft(div) + 35;
const y = selection.computeTop(div) + 5;
eventSender.mouseMoveTo(x - 3, y);
eventSender.mouseDown();
eventSender.mouseMoveTo(x + 3, y);
eventSender.mouseUp();
assert_equals(internals.textAffinity, 'Upstream');
},
`${kStyle}<div class="test" contenteditable>foo|bar</div>`,
'Drag with upstream caret');
// Set upstream caret at the end of the first line. Then shift+click around the
// caret. Caret should remain upstream at the end of the first line.
selection_test(
`${kStyle}<div class="test" contenteditable>foobar</div>`,
selection => {
assert_own_property(window, 'eventSender');
assert_own_property(window, 'internals');
const div = selection.document.querySelector('div.test');
const x = selection.computeLeft(div) + 35;
const y = selection.computeTop(div) + 5;
eventSender.mouseMoveTo(x - 3, y);
eventSender.mouseDown();
eventSender.mouseUp();
eventSender.mouseMoveTo(x + 3, y);
eventSender.mouseDown(0, ['shiftKey']);
eventSender.mouseUp(0, ['shiftKey']);
assert_equals(internals.textAffinity, 'Upstream');
},
`${kStyle}<div class="test" contenteditable>foo|bar</div>`,
'Shift+Click around upstream caret');
</script>