| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| |
| <style> |
| img { |
| width: 200px; |
| height: 150px; |
| } |
| </style> |
| |
| <div id="container"><img src="resources/cake.png" id="image1" alt="One"><img src="resources/cake.png" id="image2" alt="Two"><img src="resources/cake.png" id="image3" alt="Three"></div> |
| |
| <script> |
| function setDOMSelection(anchorNode, anchorOffset, focusNode, focusOffset) { |
| getSelection().removeAllRanges(); |
| let selectionRange = document.createRange(); |
| selectionRange.setStart(anchorNode, anchorOffset); |
| selectionRange.setEnd(focusNode, focusOffset); |
| getSelection().addRange(selectionRange); |
| } |
| |
| function verifyAXSelection(anchorObject, anchorOffset, focusObject, focusOffset) { |
| assert_equals(axRoot.selectionAnchorObject, anchorObject, 'anchorObject'); |
| assert_equals(axRoot.selectionAnchorOffset, anchorOffset, 'anchorOffset'); |
| assert_equals(axRoot.selectionFocusObject, focusObject, 'focusObject'); |
| assert_equals(axRoot.selectionFocusOffset, focusOffset, 'focusOffset'); |
| } |
| |
| setup(() => { |
| window.axRoot = accessibilityController.rootElement; |
| window.axContainer = accessibilityController.accessibleElementById('container'); |
| window.axImage1 = accessibilityController.accessibleElementById('image1'); |
| window.axImage2 = accessibilityController.accessibleElementById('image2'); |
| window.axImage3 = accessibilityController.accessibleElementById('image3'); |
| window.container = document.getElementById('container'); |
| window.image1 = document.querySelectorAll('img')[0]; |
| window.image2 = document.querySelectorAll('img')[1]; |
| window.image3 = document.querySelectorAll('img')[2]; |
| }); |
| |
| test(() => { |
| setDOMSelection(image1, 0, image1, 0); |
| verifyAXSelection(axImage1, 0, axImage1, 0); |
| }, 'Test creating a collapsed selection before the first image.'); |
| |
| test(() => { |
| setDOMSelection(image1, 0, image2, 0); |
| verifyAXSelection(axImage1, 0, axImage2, 0); |
| }, 'Test creating a selection around the first image.'); |
| |
| test(() => { |
| setDOMSelection(image1, 0, image3, 0); |
| verifyAXSelection(axImage1, 0, axImage3, 0); |
| }, 'Test creating a selection around the first two images.'); |
| |
| test(() => { |
| setDOMSelection(image1, 0, container, 3); |
| verifyAXSelection(axImage1, 0, axContainer, 3); |
| }, 'Test creating a selection around all the images.'); |
| |
| test(() => { |
| setDOMSelection(container, 0, container, 0); |
| verifyAXSelection(axContainer, 0, axContainer, 0); |
| }, 'Test creating a collapsed selection before the first image from the body.'); |
| |
| test(() => { |
| setDOMSelection(container, 0, container, 1); |
| verifyAXSelection(axContainer, 0, axContainer, 1); |
| }, 'Test creating a selection around the first image from the body.'); |
| |
| test(() => { |
| setDOMSelection(container, 0, container, 2); |
| verifyAXSelection(axContainer, 0, axContainer, 2); |
| }, 'Test creating a selection before the first two images from the body.'); |
| |
| test(() => { |
| setDOMSelection(container, 0, container, 3); |
| verifyAXSelection(axContainer, 0, axContainer, 3); |
| }, 'Test creating a selection around all the images from the body.'); |
| |
| test(() => { |
| setDOMSelection(image2, 0, image2, 0); |
| verifyAXSelection(axImage2, 0, axImage2, 0); |
| }, 'Test creating a collapsed selection before the second image.'); |
| |
| test(() => { |
| setDOMSelection(container, 1, container, 1); |
| verifyAXSelection(axContainer, 1, axContainer, 1); |
| }, 'Test creating a collapsed selection before the second image from the body.'); |
| |
| test(() => { |
| setDOMSelection(image2, 0, container, 3); |
| verifyAXSelection(axImage2, 0, axContainer, 3); |
| }, 'Test creating a selection around the last two images.'); |
| |
| test(() => { |
| setDOMSelection(container, 1, container, 3); |
| verifyAXSelection(axContainer, 1, axContainer, 3); |
| }, 'Test creating a selection around the last two images from the body.'); |
| |
| test(() => { |
| setDOMSelection(image3, 0, image3, 0); |
| verifyAXSelection(axImage3, 0, axImage3, 0); |
| }, 'Test creating a collapsed selection before the third image.'); |
| |
| test(() => { |
| setDOMSelection(container, 2, container, 2); |
| verifyAXSelection(axContainer, 2, axContainer, 2); |
| }, 'Test creating a collapsed selection before the third image from the body.'); |
| |
| test(() => { |
| setDOMSelection(container, 3, container, 3); |
| verifyAXSelection(axContainer, 3, axContainer, 3); |
| }, 'Test creating a collapsed selection after the last image from the body.'); |
| </script> |