Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<html>
<body>
<meta name="author" title="Sean Feng" href="mailto:sean@seanfeng.dev">
<meta name="assert" content="Selection on clicks: direction should return none, forwad, or backward">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src='/resources/testdriver-vendor.js'></script>
<div id="container"></div>
<script>
// Note: This test should remain tentative until Selection API issue 177 is
// resolved and direction for clicks are specified.
promise_test(async () => {
container.innerHTML = 'hello, world';
const doubleClick = new test_driver.Actions()
.pointerMove(0, 0, container.firstChild)
.pointerDown()
.pointerUp()
.pointerDown()
.pointerUp()
.send();
await doubleClick;
const sel = getSelection();
assert_equals(sel.anchorNode, container.firstChild);
assert_equals(sel.anchorOffset, 0);
assert_equals(sel.focusNode, container.firstChild);
assert_equals(sel.focusOffset, 5); // hello
assert_equals(sel.direction, 'none');
}, 'direction returns "none" when there is a double click selection(directionless)');
promise_test(async () => {
container.innerHTML = 'hello, world';
const tripleClick = new test_driver.Actions()
.pointerMove(0, 0, container.firstChild)
.pointerDown()
.pointerUp()
.pointerDown()
.pointerUp()
.pointerDown()
.pointerUp()
.send();
await tripleClick;
const sel = getSelection();
assert_equals(sel.anchorNode, container);
assert_equals(sel.anchorOffset, 0);
assert_equals(sel.focusNode, container);
assert_equals(sel.focusOffset, 1);
assert_equals(sel.direction, 'none');
}, 'direction returns "none" when there is a triple click selection(directionless)');
promise_test(async () => {
container.innerHTML = 'hello, world';
const click = new test_driver.Actions()
.pointerMove(0, 0, container.firstChild)
.pointerDown()
.pointerUp()
.send();
await click;
const sel = getSelection();
assert_equals(sel.anchorNode, container.firstChild);
assert_equals(sel.anchorOffset, 0);
assert_equals(sel.focusNode, container.firstChild);
assert_equals(sel.focusOffset, 0);
assert_true(sel.isCollapsed);
assert_equals(sel.direction, 'none');
}, 'direction returns "none" when the selection is collapsed');
</script>
</body>
</html>