| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| |
| <body id="body"> |
| |
| <select id="selectElement" title="selectElement"> |
| <option SELECTED>Option 1</option> |
| <option>Option 2</option> |
| <option DISABLED>Option 3</option> |
| </select> |
| |
| <p>This tests that non-multiple select elements expose their list options.</p> |
| |
| <p id="notDRT">This test should only be run inside of DumpRenderTree.</p> |
| |
| <p id="console"></p> |
| |
| <script> |
| function dumpListOptionAttributes(list) { |
| for (var i = 0; i < list.childrenCount; ++i) { |
| var option = list.childAtIndex(i); |
| debug('option.title: ' + option.title); |
| debug('option.role: ' + option.role); |
| debug('option.width: ' + option.width); |
| debug('option.height: ' + option.height); |
| debug('option.x: ' + option.x); |
| debug('option.y: ' + option.y); |
| debug('option.isOffScreen: ' + option.isOffScreen); |
| debug('option.isEnabled: ' + option.isEnabled); |
| debug('option.isVisible: ' + option.isVisible); |
| debug('option.isSelected: ' + option.isSelected); |
| debug('option.isSelectable: ' + option.isSelectable); |
| debug(""); |
| } |
| debug("---\n"); |
| } |
| if (window.testRunner && window.accessibilityController) { |
| document.getElementById("notDRT").style.visibility = "hidden"; |
| |
| document.getElementById("selectElement").focus(); |
| var selectElement = accessibilityController.focusedElement; |
| shouldBe('selectElement.role', '"AXRole: combo box"'); |
| shouldBeFalse('selectElement.isMultiSelectable'); |
| shouldBeTrue('selectElement.isCollapsed'); |
| shouldBeTrue('selectElement.hasPopup'); |
| debug(""); |
| |
| var list = accessibilityController.focusedElement.childAtIndex(0); |
| shouldBe('list.role', '"AXRole: list"'); |
| shouldBeFalse('list.isVisible'); |
| shouldBeTrue('list.isOffScreen'); |
| debug(""); |
| |
| dumpListOptionAttributes(list); |
| |
| document.getElementById("selectElement").selectedIndex = 1; |
| dumpListOptionAttributes(list); |
| |
| document.getElementById("selectElement").selectedIndex = 0; |
| document.getElementById("selectElement").disabled = true; |
| dumpListOptionAttributes(list); |
| |
| document.getElementById("selectElement").disabled = false; |
| selectElement.showMenu(); |
| shouldBeFalse('selectElement.isCollapsed'); |
| shouldBeFalse('list.isOffScreen'); |
| debug(""); |
| |
| dumpListOptionAttributes(list); |
| |
| // Test that accessing a detached <option> does not crash. |
| var option = list.childAtIndex(0); |
| shouldBeTrue('option.width != 0'); |
| document.getElementById("selectElement").options[0] = null; |
| shouldBeTrue('option.width == 0'); |
| } |
| </script> |
| </body> |
| </html> |