| OLD | NEW |
| 1 <html> | 1 <html> |
| 2 <head> | 2 <head> |
| 3 <script> | 3 <script> |
| 4 function print(message, color) { | 4 function print(message, color) { |
| 5 var paragraph = document.createElement("div"); | 5 var paragraph = document.createElement("div"); |
| 6 paragraph.appendChild(document.createTextNode(message)); | 6 paragraph.appendChild(document.createTextNode(message)); |
| 7 paragraph.style.fontFamily = "monospace"; | 7 paragraph.style.fontFamily = "monospace"; |
| 8 if (color) | 8 if (color) |
| 9 paragraph.style.color = color; | 9 paragraph.style.color = color; |
| 10 document.getElementById("console").appendChild(paragraph); | 10 document.getElementById("console").appendChild(paragraph); |
| 11 } | 11 } |
| 12 function shouldBe(description, actual, expected) | 12 function shouldBe(description, actual, expected) |
| 13 { | 13 { |
| 14 if (expected === actual) { | 14 if (expected === actual) { |
| 15 print("PASS: " + description + " should be " + expected + | 15 print("PASS: " + description + " should be " + expected + |
| 16 " and is\n", | 16 " and is\n", |
| 17 "green"); | 17 "green"); |
| 18 } else { | 18 } else { |
| 19 print("FAIL: " + description + " should be " + expected + | 19 print("FAIL: " + description + " should be " + expected + |
| 20 " but instead is " + actual + "\n", | 20 " but instead is " + actual + "\n", |
| 21 "red"); | 21 "red"); |
| 22 } | 22 } |
| 23 } | 23 } |
| 24 function mouseeventverify(event, x, y, target, type) | 24 function testEvent(listener, offsetX, offsetY, target, type) |
| 25 { | 25 { |
| 26 shouldBe("event type", event.type, type); | 26 var rect = target.getBoundingClientRect(); |
| 27 shouldBe("event target", event.target, target); | 27 var x = rect.left + offsetX; |
| 28 shouldBe("event.pageX", event.pageX, x); | 28 var y = rect.top + offsetY; |
| 29 shouldBe("event.pageY", event.pageY, y); | 29 listener.addEventListener(type, function () { |
| 30 shouldBe("event.offsetX", event.offsetX, x); | 30 shouldBe("event type", event.type, type); |
| 31 shouldBe("event.offsetY", event.offsetY, y); | 31 shouldBe("event target", event.target, target); |
| 32 shouldBe("event.x", event.x, x); | 32 shouldBe("event.pageX", event.pageX, x); |
| 33 shouldBe("event.y", event.y, y); | 33 shouldBe("event.pageY", event.pageY, y); |
| 34 } | 34 shouldBe("event.offsetX", event.offsetX, offsetX); |
| 35 function mouseeventverify2(event, x, y, offsetX, offsetY, target, type) | 35 shouldBe("event.offsetY", event.offsetY, offsetY); |
| 36 { | 36 shouldBe("event.x", event.x, x); |
| 37 shouldBe("event type", event.type, type); | 37 shouldBe("event.y", event.y, y); |
| 38 shouldBe("event target", event.target, target); | 38 }, false); |
| 39 shouldBe("event.pageX", event.pageX, x); | 39 eventSender.mouseMoveTo(x, y); |
| 40 shouldBe("event.pageY", event.pageY, y); | 40 eventSender.mouseDown(); |
| 41 shouldBe("event.offsetX", event.offsetX, offsetX); | 41 eventSender.mouseUp(); |
| 42 shouldBe("event.offsetY", event.offsetY, offsetY); | 42 if (type == "dblclick") { |
| 43 shouldBe("event.x", event.x, x); | 43 eventSender.mouseDown(); |
| 44 shouldBe("event.y", event.y, y); | 44 eventSender.mouseUp(); |
| 45 } |
| 45 } | 46 } |
| 46 function test() { | 47 function test() { |
| 47 if (window.testRunner) { | 48 if (window.testRunner) { |
| 48 testRunner.dumpAsText(); | 49 testRunner.dumpAsText(); |
| 49 testRunner.waitUntilDone(); | 50 testRunner.waitUntilDone(); |
| 50 } | 51 } |
| 51 | 52 |
| 52 if (window.eventSender) { | 53 testEvent(document.getElementById('s1'), 11, 3, document.getElementById('o1'
), 'mousedown'); |
| 53 eventSender.mouseMoveTo(22, 104); | 54 testEvent(document.getElementById('o1'), 11, 3, document.getElementById('o1'
), 'mousedown'); |
| 54 eventSender.mouseDown(); | 55 testEvent(document.getElementById('s2'), 11, 3, document.getElementById('o2'
), 'mouseup'); |
| 55 eventSender.mouseUp(); | 56 testEvent(document.getElementById('o2'), 11, 3, document.getElementById('o2'
), 'mouseup'); |
| 56 } | 57 testEvent(document.getElementById('s3'), 11, 3, document.getElementById('o3'
), 'click'); |
| 57 | 58 testEvent(document.getElementById('o3'), 11, 3, document.getElementById('o3'
), 'click'); |
| 58 if (window.eventSender) { | 59 testEvent(document.getElementById('s3'), 11, 3, document.getElementById('o3'
), 'click'); |
| 59 eventSender.mouseMoveTo(22, 184); | 60 testEvent(document.getElementById('o3'), 11, 3, document.getElementById('o3'
), 'click'); |
| 60 eventSender.mouseDown(); | |
| 61 eventSender.mouseUp(); | |
| 62 } | |
| 63 | |
| 64 if (window.eventSender) { | |
| 65 eventSender.mouseMoveTo(22, 262); | |
| 66 eventSender.mouseDown(); | |
| 67 eventSender.mouseUp(); | |
| 68 } | |
| 69 | |
| 70 if (window.eventSender) { | |
| 71 eventSender.mouseMoveTo(22, 344); | |
| 72 eventSender.mouseDown(); | |
| 73 eventSender.mouseUp(); | |
| 74 eventSender.mouseDown(); | |
| 75 eventSender.mouseUp(); | |
| 76 } | |
| 77 | |
| 78 if (window.eventSender) { | |
| 79 eventSender.mouseMoveTo(22, 448); | |
| 80 eventSender.mouseDown(); | |
| 81 eventSender.mouseUp(); | |
| 82 eventSender.mouseDown(); | |
| 83 eventSender.mouseUp(); | |
| 84 } | |
| 85 | 61 |
| 86 if (window.testRunner) | 62 if (window.testRunner) |
| 87 testRunner.notifyDone(); | 63 testRunner.notifyDone(); |
| 88 } | 64 } |
| 89 </script> | 65 </script> |
| 90 </head> | 66 </head> |
| 91 <body onload="test();"> | 67 <body onload="test();"> |
| 92 <p>This page tests whether a click event on a list box item propogates with the
correct target and positioning values.<br> | 68 <p>This page tests whether a click event on a list box item propogates with the
correct target and positioning values.<br> |
| 93 Bug 3248: Mouse events on OPTION element seem to be ignored<br> | 69 Bug 3248: Mouse events on OPTION element seem to be ignored<br> |
| 94 <a href="https://bugs.webkit.org/show_bug.cgi?id=3248">https://bugs.webkit.org/s
how_bug.cgi?id=3248</a></p> | 70 <a href="https://bugs.webkit.org/show_bug.cgi?id=3248">https://bugs.webkit.org/s
how_bug.cgi?id=3248</a></p> |
| 95 <form action="" method="post"> | 71 <form action="" method="post"> |
| 96 <select style="position:absolute; top: 84;" size="2" onmousedown="mouseeventveri
fy(event, 22, 104, document.getElementById('o1'), 'mousedown')"> | 72 <select id="s1" style="position:absolute; top: 84;" size="2"> |
| 97 <option>One | 73 <option>One |
| 98 <option id="o1" onmousedown="mouseeventverify(event, 22, 104, this, 'mousedown')
">Two | 74 <option id="o1">Two |
| 99 </select> | 75 </select> |
| 100 </form> | 76 </form> |
| 101 <form action="" method="post"> | 77 <form action="" method="post"> |
| 102 <select style="position:absolute; top: 164;" size="2" onmouseup="mouseeventverif
y(event, 22, 184, document.getElementById('o2'), 'mouseup')"> | 78 <select id="s2" style="position:absolute; top: 164;" size="2", 'mouseup')"> |
| 103 <option>One | 79 <option>One |
| 104 <option id="o2" onmouseup="mouseeventverify(event, 22, 184, this, 'mouseup')">Tw
o | 80 <option id="o2">Two |
| 105 </select> | 81 </select> |
| 106 </form> | 82 </form> |
| 107 <form action="" method="post"> | 83 <form action="" method="post"> |
| 108 <select style="position:absolute; top: 242;" size="2" onclick="mouseeventverify(
event, 22, 262, document.getElementById('o3'), 'click')"> | 84 <select id="s3" style="position:absolute; top: 242;" size="2", 'click')"> |
| 109 <option>One | 85 <option>One |
| 110 <option id="o3" onclick="mouseeventverify(event, 22, 262, this, 'click')">Two | 86 <option id="o3">Two |
| 111 </select> | 87 </select> |
| 112 </form> | 88 </form> |
| 113 <form action="" method="post"> | 89 <form action="" method="post"> |
| 114 <select style="position:absolute; top: 324;" size="2" ondblclick="mouseeventveri
fy(event, 22, 344, document.getElementById('o4'), 'dblclick')"> | 90 <select style="position:absolute; top: 324;" size="2", 'dblclick')"> |
| 115 <option>One | 91 <option>One |
| 116 <option id="o4" ondblclick="mouseeventverify(event, 22, 344, this, 'dblclick')">
Two | 92 <option id="o4">Two |
| 117 </select> | 93 </select> |
| 118 </form> | 94 </form> |
| 119 <select style="position:absolute; top: 408;" size="3" onmousedown="mouseeventver
ify2(event, 22, 448, 12, 38, this, 'mousedown')"> | 95 <select style="position:absolute; top: 408;" size="3"> |
| 120 <option>One | 96 <option>One |
| 121 <option id="o5" onmousedown="mouseeventverify2(event, 22, 448, 12, 38, this, 'mo
usedown')">Two | 97 <option id="o5">Two |
| 122 </select> | 98 </select> |
| 123 </form> | 99 </form> |
| 124 <div style="position:absolute; top: 550;" id='console'></div> | 100 <div style="position:absolute; top: 550;" id='console'></div> |
| 125 </body> | 101 </body> |
| 126 </html> | 102 </html> |
| OLD | NEW |