| <html> |
| <head> |
| <script> |
| var sliderAXObject; |
| var thumbAXObject; |
| var valueDiv; |
| |
| if (window.testRunner) |
| { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function consoleWrite(text) |
| { |
| document.getElementById("console").innerHTML += text + "<br>"; |
| } |
| |
| function logResult(success, text) |
| { |
| if (success) |
| consoleWrite(text + " <span style='color:green'>OK<" + "/span>"); |
| else |
| consoleWrite(text + " <span style='color:red'>FAIL<" + "/span>"); |
| } |
| |
| function testExpected(testFuncString, expected) |
| { |
| try { |
| var observed = eval(testFuncString); |
| } catch (ex) { |
| consoleWrite(ex); |
| return; |
| } |
| |
| var success = (observed == expected); |
| var msg = msg = "EXPECTED (<em>" + testFuncString + " </em> == '<em>" + expected + "</em>')"; |
| if (!success) |
| msg += ", OBSERVED '<em>" + observed + "</em>'"; |
| logResult(success, msg); |
| } |
| |
| function run(testFuncString) |
| { |
| consoleWrite("RUN(" + testFuncString + ")"); |
| try { |
| eval(testFuncString); |
| } catch (ex) { |
| consoleWrite(ex); |
| } |
| } |
| |
| function testRanges(min, max) |
| { |
| testExpected("sliderAXObject.minValue", min); |
| testExpected("sliderAXObject.maxValue", max); |
| } |
| |
| function testValues(oldValue, direction) |
| { |
| // increment and decrement change by 5% of the slider's range |
| var range = sliderInput.getAttribute('max') - sliderInput.getAttribute('min'); |
| var expected = direction * range * 0.05 + (oldValue * 1); |
| testExpected("sliderInput.value", expected); |
| testExpected("valueDiv.innerText", expected); |
| } |
| |
| function testIncrement() |
| { |
| var oldValue = sliderInput.value; |
| run("sliderAXObject.increment()"); |
| testValues(oldValue, 1) |
| } |
| |
| function testDecrement() |
| { |
| var oldValue = sliderInput.value; |
| run("sliderAXObject.decrement()"); |
| testValues(oldValue, -1) |
| } |
| |
| function test() |
| { |
| if (!window.accessibilityController) |
| return; |
| |
| var oldValue; |
| var newValue; |
| |
| valueDiv = document.getElementById("val"); |
| sliderInput = document.getElementById("slider"); |
| |
| sliderInput.focus(); |
| |
| consoleWrite("** Test slider accessibility attributes"); |
| run("sliderAXObject = accessibilityController.focusedElement"); |
| testRanges(0, 100); |
| testExpected("sliderAXObject.childrenCount", 1); |
| testExpected("sliderAXObject.role", "AXRole: AXSlider"); |
| |
| consoleWrite(""); |
| consoleWrite("** Test thumb accessibility attributes"); |
| run("thumbAXObject = sliderAXObject.childAtIndex(0)"); |
| testExpected("thumbAXObject.childrenCount", 0); |
| consoleWrite("thumbAXObject.role = " + thumbAXObject.role); |
| testExpected("thumbAXObject.role", "AXRole: AXValueIndicator"); |
| |
| consoleWrite(""); |
| consoleWrite("** Increment the slider, test slider value and div set on 'update' event"); |
| testIncrement(); |
| |
| consoleWrite(""); |
| consoleWrite("** Decrement the slider, test slider value and div set on 'update' event"); |
| run("sliderInput.value = 22"); |
| testDecrement(); |
| |
| consoleWrite(""); |
| consoleWrite("** Change slider range"); |
| run("sliderInput.setAttribute('max', 1000)"); |
| run("sliderInput.setAttribute('min', 500)"); |
| testRanges(500, 1000); |
| |
| consoleWrite(""); |
| consoleWrite("** Re-test incrementing the slider"); |
| run("sliderInput.value = 600"); |
| testIncrement(); |
| |
| consoleWrite(""); |
| consoleWrite("** Re-test decrementing the slider"); |
| run("sliderInput.value = 850"); |
| testDecrement(); |
| |
| testRunner.notifyDone(); |
| } |
| |
| function update(obj) |
| { |
| document.getElementById('val').innerText = obj.value; |
| } |
| </script> |
| </head> |
| |
| <body onload="test()"> |
| |
| <input type=range min=0 max=100 value=50 id=slider onchange="update(this)" > |
| <span id=val>50</span> |
| |
| <br><br><br><br> |
| <div id=console></div> |
| |
| </body> |
| </html> |