| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../resources/js-test-pre.js"></script> |
| <title></title> |
| </head> |
| <body> |
| <p>Select multiple options with mouse drag with no. of options less than the size attribute</p> |
| <p>Also test mouse drag on select element without multiple attribute select only the option under mouse</p> |
| |
| <select multiple="multiple" size="7" id="selectId"> |
| <option value="P1">P1</option> |
| <option value="P2">P2</option> |
| <option value="P3">P3</option> |
| <option value="P4">P4</option> |
| <option value="P5">P5</option> |
| </select> |
| |
| <select size="7" id="nonmultiple"> |
| <option value="P1">P1</option> |
| <option value="P2">P2</option> |
| <option value="P3">P3</option> |
| <option value="P4">P4</option> |
| <option value="P5">P5</option> |
| </select> |
| |
| <div id="console"></div> |
| <script> |
| if (window.eventSender) { |
| debug("Test for select element with multiple attribute"); |
| var selectObject = document.getElementById("selectId"); |
| |
| var optionHeight = selectObject.offsetHeight / selectObject.size; |
| var x = selectObject.offsetLeft + selectObject.offsetWidth / 2; |
| var y = selectObject.offsetTop + optionHeight / 2; |
| |
| eventSender.dragMode = false; |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| |
| debug("Dragging down"); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(x, y + (optionHeight * 3)); |
| eventSender.mouseUp(); |
| testOptionSelection(0, 4, "true", "selectId"); |
| |
| debug("Dragging up"); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseUp(); |
| testOptionSelection(0, 4, "true", "selectId"); |
| |
| debug("Dragging with addSelectionKey") |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| eventSender.mouseMoveTo(x, y + (optionHeight * 2)); |
| eventSender.mouseDown(0, ["addSelectionKey"]); |
| eventSender.mouseMoveTo(x, y + (optionHeight * 4)); |
| eventSender.mouseUp(0, ["addSelectionKey"]); |
| testOptionSelection(0, 1, "true", "selectId"); |
| testOptionSelection(2, 5, "true", "selectId"); |
| |
| debug("Dragging with rangeSelectionKey"); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| eventSender.mouseMoveTo(x, y + (optionHeight * 2)); |
| eventSender.mouseDown(0, ["rangeSelectionKey"]); |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseUp(0, ["rangeSelectionKey"]); |
| testOptionSelection(0, 4, "true", "selectId"); |
| |
| debug("Test for select element without multiple attribute"); |
| var nonMultipleObject = document.getElementById("nonmultiple"); |
| var optionHeight = nonMultipleObject.offsetHeight / nonMultipleObject.size; |
| x = nonMultipleObject.offsetLeft + nonMultipleObject.offsetWidth / 2; |
| y = nonMultipleObject.offsetTop + optionHeight / 2; |
| |
| eventSender.dragMode = false; |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| |
| debug("Dragging down"); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(x, y + (optionHeight * 3)); |
| eventSender.mouseUp(); |
| testOptionSelection(0, 3, "false", "nonmultiple"); |
| testOptionSelection(3, 4, "true", "nonmultiple"); |
| |
| debug("Dragging up"); |
| eventSender.mouseDown(); |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseUp(); |
| testOptionSelection(0, 1, "true", "nonmultiple"); |
| testOptionSelection(1, 4, "false", "nonmultiple"); |
| |
| debug("Dragging with addSelectionKey") |
| eventSender.mouseDown(); |
| eventSender.mouseDown(0, "addSelectionKey"); |
| eventSender.mouseMoveTo(x, y + (optionHeight * 3)); |
| eventSender.mouseUp(0, "addSelectionKey"); |
| testOptionSelection(0, 3, "false", "nonmultiple"); |
| testOptionSelection(3, 4, "true", "nonmultiple"); |
| |
| debug("Dragging with rangeSelectionKey"); |
| eventSender.mouseDown(); |
| eventSender.mouseDown(0, "rangeSelectionKey"); |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseUp(0, "rangeSelectionKey"); |
| testOptionSelection(0, 1, "true", "nonmultiple"); |
| testOptionSelection(1, 4, "false", "nonmultiple"); |
| |
| } else { |
| debug("Test manually if options are getting selected by dragging on the select element."); |
| } |
| |
| function testOptionSelection(start, end, criteria, element) { |
| for (var i = start; i < end; i++) { |
| shouldBe("document.getElementById(\"" + element + "\").options[" + i + "].selected", criteria); |
| } |
| } |
| |
| successfullyParsed = true; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |