<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<div role="region" id="region">
<span role="none" id="span1">This is a<a id="link" href="#1">test</a></span>
<span role="none" id="span2">of selection.</span>
</div>
<script>
function verifySelection(anchorNode, anchorOffset, focusNode, focusOffset, selectionString) {
const selection = getSelection();
assert_equals(selection.anchorNode, anchorNode, 'anchorNode');
assert_equals(selection.anchorOffset, anchorOffset, 'anchorOffset');
assert_equals(selection.focusNode, focusNode, 'focusNode');
assert_equals(selection.focusOffset, focusOffset, 'focusOffset');
assert_equals(selection.toString(), selectionString, 'getSelection.toString()');
}
setup(() => {
window.axRegion = accessibilityController.accessibleElementById('region');
window.span1 = document.querySelector('span');
window.text1 = span1.firstChild;
window.span2 = document.querySelectorAll('span')[1];
window.text2 = span2.firstChild;
window.link = document.querySelector('a');
window.linkText = link.firstChild;
window.lineBreak = span1.nextSibling;
});
test(() => {
axRegion.setSelection(axRegion, 0, axRegion, 0);
verifySelection(text1, 0, text1, 0, '');
}, 'Test creating a collapsed selection before the first character of the first span.');
test(() => {
axRegion.setSelection(axRegion, 0, axRegion, 1);
verifySelection(text1, 0, span1, 1, 'This is a');
}, 'Test creating a selection around the text in the first span.');
test(() => {
axRegion.setSelection(axRegion, 1, axRegion, 1);
verifySelection(span1, 1, span1, 1, '');
}, 'Test creating a collapsed selection before the link.');
test(() => {
axRegion.setSelection(axRegion, 1, axRegion, 2);
verifySelection(span1, 1, lineBreak, 0, 'test');
}, 'Test creating a selection around the link.');
test(() => {
axRegion.setSelection(axRegion, 3, axRegion, 3);
verifySelection(text2, 0, text2, 0, '');
}, 'Test creating a collapsed selection before the second span.');
test(() => {
axRegion.setSelection(axRegion, 3, axRegion, 4);
verifySelection(text2, 0, span2, 1, 'of selection.');
}, 'Test creating a selection around the second span.');
test(() => {
axRegion.setSelection(axRegion, 0, axRegion, 3);
verifySelection(text1, 0, text2, 0, 'This is atest ');
}, 'Test creating a selection from the first span and the link up to the second span.');
test(() => {
axRegion.setSelection(axRegion, 1, axRegion, 4);
verifySelection(span1, 1, span2, 1, 'test of selection.');
}, 'Test creating a selection around the link and the second span.');
test(() => {
axRegion.setSelection(axRegion, 0, axRegion, 4);
verifySelection(text1, 0, span2, 1, 'This is atest of selection.');
}, 'Test creating a selection around both spans.');
test(() => {
axRegion.setSelection(axRegion, 4, axRegion, 4);
verifySelection(span2, 1, span2, 1, '');
}, 'Test creating a collapsed selection after the second span.');
</script>