| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| |
| <body> |
| |
| <select id="selectElement" multiple title="selectElement"> |
| <option SELECTED>Option 0</option> |
| <option>Option 1</option> |
| <option>Option 2</option> |
| <option DISABLED>Option 3</option> |
| </select> |
| |
| <select id="selectElement2" title="selectElement"> |
| <option SELECTED>Option 0</option> |
| <option>Option 1</option> |
| <option>Option 2</option> |
| <option DISABLED>Option 3</option> |
| </select> |
| |
| <p>This tests that we can adjust focus and selection via accessibility API.</p> |
| |
| <p id="notDRT">This test should only be run inside of DumpRenderTree.</p> |
| |
| <p id="console"></p> |
| |
| <script> |
| function dumpSelection(element) |
| { |
| var options = element.options; |
| for (var i = 0; i < options.length; ++i) |
| debug("Option " + i + " is " + (options[i].selected ? "" : "not ") + "selected."); |
| debug(""); |
| } |
| |
| if (window.testRunner && window.accessibilityController) { |
| document.getElementById("notDRT").style.visibility = "hidden"; |
| |
| document.body.focus(); |
| shouldBe('accessibilityController.focusedElement.role', '"document"'); |
| |
| var anonymousBlock = accessibilityController.focusedElement.childAtIndex(0); |
| |
| // Focus the select element. |
| var select = anonymousBlock.childAtIndex(0); |
| select.takeFocus(); |
| shouldBe('accessibilityController.focusedElement.role', '"AXList"'); |
| |
| debug(""); |
| |
| var selectElement = document.getElementById("selectElement"); |
| |
| // Option 0 selected |
| accessibilityController.focusedElement.childAtIndex(0).takeSelection(); |
| dumpSelection(selectElement); |
| |
| // Option 1 selected |
| accessibilityController.focusedElement.childAtIndex(1).takeSelection(); |
| dumpSelection(selectElement); |
| |
| // Options 1, 2 selected |
| accessibilityController.focusedElement.childAtIndex(2).addSelection(); |
| dumpSelection(selectElement); |
| |
| // Option 2 selected |
| accessibilityController.focusedElement.childAtIndex(1).removeSelection(); |
| dumpSelection(selectElement); |
| |
| // Option 2 selected |
| accessibilityController.focusedElement.childAtIndex(0).removeSelection(); |
| dumpSelection(selectElement); |
| |
| // Options 0, 2 selected |
| accessibilityController.focusedElement.childAtIndex(0).addSelection(); |
| dumpSelection(selectElement); |
| |
| // Options 0, 2 selected |
| accessibilityController.focusedElement.childAtIndex(0).addSelection(); |
| dumpSelection(selectElement); |
| |
| // Option 2 selected |
| accessibilityController.focusedElement.childAtIndex(0).removeSelection(); |
| dumpSelection(selectElement); |
| |
| // No options selected |
| accessibilityController.focusedElement.childAtIndex(2).removeSelection(); |
| dumpSelection(selectElement); |
| |
| // No options selected (option at index 3 is disabled) |
| accessibilityController.focusedElement.childAtIndex(3).addSelection(); |
| dumpSelection(selectElement); |
| |
| debug("== single select =="); |
| |
| var selectElement2 = document.getElementById("selectElement2"); |
| selectElement2.focus(); |
| |
| var popupMenu = accessibilityController.focusedElement.childAtIndex(0); |
| |
| // Option 0 is selected |
| popupMenu.childAtIndex(0).takeSelection(); |
| dumpSelection(selectElement2); |
| |
| // Option 1 selected |
| popupMenu.childAtIndex(1).takeSelection(); |
| dumpSelection(selectElement2); |
| |
| // Options 1 selected - addSelection() is not valid for single-select. |
| popupMenu.childAtIndex(2).addSelection(); |
| dumpSelection(selectElement2); |
| |
| // Options 1 selected - removeSelection() is not valid for single-select. |
| popupMenu.childAtIndex(1).removeSelection(); |
| dumpSelection(selectElement2); |
| |
| // Options 1 selected - option at index 3 is disabled |
| popupMenu.childAtIndex(3).takeSelection(); |
| dumpSelection(selectElement2); |
| } |
| </script> |
| </body> |
| </html> |