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 |