| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description('<select> selection test for multiple but non contiguous selection with keyboard.'); |
| |
| function keyDownOnSelect(selId, identifier, modifier) { |
| document.getElementById(selId).focus(); |
| if (window.eventSender) |
| eventSender.keyDown(identifier, [modifier]); |
| } |
| |
| function createSelect(idName, sz, mlt, selIndex) { |
| var sl = document.createElement("select"); |
| var i = 0; |
| sl.size = sz; |
| while (i < sz) { |
| var opt = document.createElement("option"); |
| if (i == selIndex) |
| opt.selected = true; |
| opt.textContent = "item " + i; |
| sl.appendChild(opt); |
| i++; |
| } |
| sl.multiple = mlt; |
| sl.id = idName; |
| var parent = document.getElementById("parent"); |
| parent.appendChild(sl); |
| } |
| |
| function selectionPattern(selId) { |
| var sl = document.getElementById(selId); |
| var result = ''; |
| for (var i = 0; i < sl.options.length; i++) |
| result += sl.options[i].selected ? '1' : '0'; |
| return result; |
| } |
| |
| var parent = document.createElement('div'); |
| parent.id = "parent"; |
| document.body.appendChild(parent); |
| |
| createSelect("sl1", 5, true, -1); |
| |
| debug("1) Select multiple non-adjacent items with the keyboard"); |
| // Move to second item. |
| keyDownOnSelect("sl1", "downArrow", "addSelectionKey"); |
| keyDownOnSelect("sl1", "downArrow", "addSelectionKey"); |
| // Select it. |
| keyDownOnSelect("sl1", " "); |
| // Move to fourth item. |
| keyDownOnSelect("sl1", "downArrow", "addSelectionKey"); |
| keyDownOnSelect("sl1", "downArrow", "addSelectionKey"); |
| // Select it. |
| keyDownOnSelect("sl1", " "); |
| shouldBe('selectionPattern("sl1")', '"01010"'); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |