| OLD | NEW |
| (Empty) |
| 1 <html> | |
| 2 <head> | |
| 3 <title>SELECT pop-up page keys test</title> | |
| 4 <script> | |
| 5 function log(s) | |
| 6 { | |
| 7 document.getElementById('console').appendChild(document.createTextNode(s
+ "\n")); | |
| 8 } | |
| 9 | |
| 10 function sendKey(element, key) { | |
| 11 if (window.testRunner) { | |
| 12 key = key.substr(0,1).toLowerCase() + key.substr(1); // lowercase 1s
t letter for eventSender | |
| 13 eventSender.keyDown(key); | |
| 14 } else { | |
| 15 var event = document.createEvent("KeyboardEvents"); | |
| 16 event.initKeyboardEvent("keydown", true, true, document.defaultView,
key, 0, | |
| 17 false, false, false, false, false); | |
| 18 element.dispatchEvent(event); | |
| 19 } | |
| 20 } | |
| 21 | |
| 22 function sendKeyAndExpectIndex(selectId, key, initialIndex, expectedIndex) { | |
| 23 var select = document.getElementById(selectId); | |
| 24 clearSelection(select); | |
| 25 select.focus(); | |
| 26 select.selectedIndex = initialIndex; | |
| 27 if (select.selectedIndex != initialIndex) { | |
| 28 log("FAIL: can't set selectedIndex to " + initialIndex + ' (is ' | |
| 29 + select.selectedIndex + ')'); | |
| 30 return false; | |
| 31 } | |
| 32 sendKey(select, key); | |
| 33 if (select.selectedIndex != expectedIndex) { | |
| 34 log('FAIL: selectedIndex should be ' + expectedIndex + ' (is ' + | |
| 35 select.selectedIndex + ') after a ' + key + | |
| 36 ' from index ' + initialIndex); | |
| 37 return false; | |
| 38 } | |
| 39 return true; | |
| 40 } | |
| 41 | |
| 42 function clearSelection(select) { | |
| 43 for (i = 0; i < select.options.length; i++) | |
| 44 select.options[i].selected = false; | |
| 45 } | |
| 46 | |
| 47 function testPageDownNoDisabledElements() { | |
| 48 var passed = true; | |
| 49 | |
| 50 passed = sendKeyAndExpectIndex('ss', "PageDown", 0, 3) && passed; | |
| 51 passed = sendKeyAndExpectIndex('ss', "PageDown", 1, 4) && passed; | |
| 52 passed = sendKeyAndExpectIndex('ss', "PageDown", 2, 5) && passed; | |
| 53 passed = sendKeyAndExpectIndex('ss', "PageDown", 3, 6) && passed; | |
| 54 passed = sendKeyAndExpectIndex('ss', "PageDown", 4, 6) && passed; | |
| 55 passed = sendKeyAndExpectIndex('ss', "PageDown", 5, 6) && passed; | |
| 56 passed = sendKeyAndExpectIndex('ss', "PageDown", 6, 6) && passed; | |
| 57 | |
| 58 if (passed) | |
| 59 log('PASS: testPageDownNoDisabledElements passed'); | |
| 60 return passed; | |
| 61 } | |
| 62 | |
| 63 function testPageUpNoDisabledElements() { | |
| 64 var passed = true; | |
| 65 | |
| 66 passed = sendKeyAndExpectIndex('ss', "PageUp", 6, 3) && passed; | |
| 67 passed = sendKeyAndExpectIndex('ss', "PageUp", 5, 2) && passed; | |
| 68 passed = sendKeyAndExpectIndex('ss', "PageUp", 4, 1) && passed; | |
| 69 passed = sendKeyAndExpectIndex('ss', "PageUp", 3, 0) && passed; | |
| 70 passed = sendKeyAndExpectIndex('ss', "PageUp", 2, 0) && passed; | |
| 71 passed = sendKeyAndExpectIndex('ss', "PageUp", 1, 0) && passed; | |
| 72 passed = sendKeyAndExpectIndex('ss', "PageUp", 0, 0) && passed; | |
| 73 | |
| 74 if (passed) | |
| 75 log('PASS: testPageUpNoDisabledElements passed'); | |
| 76 return passed; | |
| 77 } | |
| 78 | |
| 79 function testHomeNoDisabledElements() { | |
| 80 var passed = true; | |
| 81 | |
| 82 passed = sendKeyAndExpectIndex('ss', "Home", 6, 0) && passed; | |
| 83 passed = sendKeyAndExpectIndex('ss', "Home", 5, 0) && passed; | |
| 84 passed = sendKeyAndExpectIndex('ss', "Home", 4, 0) && passed; | |
| 85 passed = sendKeyAndExpectIndex('ss', "Home", 3, 0) && passed; | |
| 86 passed = sendKeyAndExpectIndex('ss', "Home", 2, 0) && passed; | |
| 87 passed = sendKeyAndExpectIndex('ss', "Home", 1, 0) && passed; | |
| 88 passed = sendKeyAndExpectIndex('ss', "Home", 0, 0) && passed; | |
| 89 | |
| 90 if (passed) | |
| 91 log('PASS: testHomeNoDisabledElements passed'); | |
| 92 return passed; | |
| 93 } | |
| 94 | |
| 95 function testEndNoDisabledElements() { | |
| 96 var passed = true; | |
| 97 | |
| 98 passed = sendKeyAndExpectIndex('ss', "End", 6, 6) && passed; | |
| 99 passed = sendKeyAndExpectIndex('ss', "End", 5, 6) && passed; | |
| 100 passed = sendKeyAndExpectIndex('ss', "End", 4, 6) && passed; | |
| 101 passed = sendKeyAndExpectIndex('ss', "End", 3, 6) && passed; | |
| 102 passed = sendKeyAndExpectIndex('ss', "End", 2, 6) && passed; | |
| 103 passed = sendKeyAndExpectIndex('ss', "End", 1, 6) && passed; | |
| 104 passed = sendKeyAndExpectIndex('ss', "End", 0, 6) && passed; | |
| 105 | |
| 106 if (passed) | |
| 107 log('PASS: testEndNoDisabledElements passed'); | |
| 108 return passed; | |
| 109 } | |
| 110 | |
| 111 function testPageDownWithDisabledElements() { | |
| 112 var passed = true; | |
| 113 | |
| 114 passed = sendKeyAndExpectIndex('ssd', "PageDown", 1, 4) && passed; | |
| 115 passed = sendKeyAndExpectIndex('ssd', "PageDown", 2, 5) && passed; | |
| 116 passed = sendKeyAndExpectIndex('ssd', "PageDown", 4, 6) && passed; | |
| 117 passed = sendKeyAndExpectIndex('ssd', "PageDown", 5, 6) && passed; | |
| 118 passed = sendKeyAndExpectIndex('ssd', "PageDown", 6, 6) && passed; | |
| 119 | |
| 120 if (passed) | |
| 121 log('PASS: testPageDownWithDisabledElements passed'); | |
| 122 return passed; | |
| 123 } | |
| 124 | |
| 125 function testPageUpWithDisabledElements() { | |
| 126 var passed = true; | |
| 127 | |
| 128 passed = sendKeyAndExpectIndex('ssd', "PageUp", 6, 2) && passed; | |
| 129 passed = sendKeyAndExpectIndex('ssd', "PageUp", 5, 2) && passed; | |
| 130 passed = sendKeyAndExpectIndex('ssd', "PageUp", 4, 1) && passed; | |
| 131 passed = sendKeyAndExpectIndex('ssd', "PageUp", 2, 1) && passed; | |
| 132 passed = sendKeyAndExpectIndex('ssd', "PageUp", 1, 1) && passed; | |
| 133 | |
| 134 if (passed) | |
| 135 log('PASS: testPageUpWithDisabledElements passed'); | |
| 136 return passed; | |
| 137 } | |
| 138 | |
| 139 function testHomeWithDisabledElements() { | |
| 140 var passed = true; | |
| 141 | |
| 142 passed = sendKeyAndExpectIndex('ssd', "Home", 7, 1) && passed; | |
| 143 passed = sendKeyAndExpectIndex('ssd', "Home", 6, 1) && passed; | |
| 144 passed = sendKeyAndExpectIndex('ssd', "Home", 5, 1) && passed; | |
| 145 passed = sendKeyAndExpectIndex('ssd', "Home", 4, 1) && passed; | |
| 146 passed = sendKeyAndExpectIndex('ssd', "Home", 3, 1) && passed; | |
| 147 passed = sendKeyAndExpectIndex('ssd', "Home", 2, 1) && passed; | |
| 148 passed = sendKeyAndExpectIndex('ssd', "Home", 1, 1) && passed; | |
| 149 passed = sendKeyAndExpectIndex('ssd', "Home", 0, 1) && passed; | |
| 150 | |
| 151 if (passed) | |
| 152 log('PASS: testHomeWithDisabledElements passed'); | |
| 153 return passed; | |
| 154 } | |
| 155 | |
| 156 function testEndWithDisabledElements() { | |
| 157 var passed = true; | |
| 158 | |
| 159 passed = sendKeyAndExpectIndex('ssd', "End", 7, 6) && passed; | |
| 160 passed = sendKeyAndExpectIndex('ssd', "End", 6, 6) && passed; | |
| 161 passed = sendKeyAndExpectIndex('ssd', "End", 5, 6) && passed; | |
| 162 passed = sendKeyAndExpectIndex('ssd', "End", 4, 6) && passed; | |
| 163 passed = sendKeyAndExpectIndex('ssd', "End", 3, 6) && passed; | |
| 164 passed = sendKeyAndExpectIndex('ssd', "End", 2, 6) && passed; | |
| 165 passed = sendKeyAndExpectIndex('ssd', "End", 1, 6) && passed; | |
| 166 passed = sendKeyAndExpectIndex('ssd', "End", 0, 6) && passed; | |
| 167 | |
| 168 if (passed) | |
| 169 log('PASS: testEndWithDisabledElements passed'); | |
| 170 return passed; | |
| 171 } | |
| 172 | |
| 173 function test() | |
| 174 { | |
| 175 try{ | |
| 176 if (window.testRunner) | |
| 177 testRunner.dumpAsText(); | |
| 178 var passed = true; | |
| 179 passed = testPageDownNoDisabledElements() && passed; | |
| 180 passed = testPageUpNoDisabledElements() && passed; | |
| 181 passed = testHomeNoDisabledElements() && passed; | |
| 182 passed = testEndNoDisabledElements() && passed; | |
| 183 | |
| 184 passed = testPageDownWithDisabledElements() && passed; | |
| 185 passed = testPageUpWithDisabledElements() && passed; | |
| 186 passed = testHomeWithDisabledElements() && passed; | |
| 187 passed = testEndWithDisabledElements() && passed; | |
| 188 | |
| 189 if (passed) | |
| 190 log('\nPASS: ALL TESTS SUCCEEDED'); | |
| 191 else | |
| 192 log('\nFAIL: SOME TESTS FAILED (SEE ABOVE)'); | |
| 193 log(''); | |
| 194 } catch (exception) { | |
| 195 log('\nFAIL: Threw exception: ' + exception); | |
| 196 } | |
| 197 } | |
| 198 </script> | |
| 199 </head> | |
| 200 <body onload="test()"> | |
| 201 <p>This test verifies that the Home/End/PageUp/PageDown keys work correctly | |
| 202 for pop-up <select> elements that have focus but are not currently
popped-up.</p> | |
| 203 <p>Output below is a series of PASS or FAIL lines showing expected and actua
l selection indexes, | |
| 204 followed by a single PASS or FAIL for the status of the entire test.<p> | |
| 205 <p>NOTE: This test will fail on Mac OS, on which these keys are NOT supposed
to change | |
| 206 the selection of a focused pop-up.</p> | |
| 207 <hr> | |
| 208 <form> | |
| 209 <select name="singleselect" id="ss"> | |
| 210 <option value="0">0 </option> | |
| 211 <option value="1">1 </option> | |
| 212 <option value="2">2 </option> | |
| 213 <option value="3">3 </option> | |
| 214 <option value="4">4 </option> | |
| 215 <option value="5">5 </option> | |
| 216 <option value="6">6 </option> | |
| 217 </select> | |
| 218 <select name="singleselectwithdisabled" id="ssd"> | |
| 219 <option value="0" disabled="true">0 </option> | |
| 220 <option value="1">1 </option> | |
| 221 <option value="2">2 </option> | |
| 222 <option value="3" disabled="true">3 </option> | |
| 223 <option value="4">4 </option> | |
| 224 <option value="5">5 </option> | |
| 225 <option value="6">6 </option> | |
| 226 <option value="7" disabled = "true">7 </option> | |
| 227 </select> | |
| 228 </form> | |
| 229 <pre id="console"></pre> | |
| 230 </body> | |
| 231 </html> | |
| OLD | NEW |