|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=582771 |
|
5 --> |
|
6 <head> |
|
7 <title>Test for Bug 582771</title> |
|
8 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> |
|
10 <style> |
|
11 .test { |
|
12 width: 20px; |
|
13 height: 20px; |
|
14 border: 1px solid black; |
|
15 -moz-user-select: none; |
|
16 } |
|
17 </style> |
|
18 </head> |
|
19 <body onload="setTimeout('runTest()', 0)"> |
|
20 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=582771">Mozilla Bug 582771</a> |
|
21 <p id="display"></p> |
|
22 <div id="content" style="display: none"> |
|
23 |
|
24 </div> |
|
25 <pre id="test"> |
|
26 <script type="application/javascript"> |
|
27 |
|
28 /** Test for Bug 582771 **/ |
|
29 |
|
30 SimpleTest.waitForExplicitFinish(); |
|
31 var d1; |
|
32 var d2; |
|
33 var d1mousemovecount = 0; |
|
34 var d2mousemovecount = 0; |
|
35 |
|
36 function sendMouseMove(el) { |
|
37 var rect = el.getBoundingClientRect(); |
|
38 var utils = SpecialPowers.getDOMWindowUtils(window); |
|
39 utils.sendMouseEvent('mousemove', rect.left + 5, rect.top + 5, 0, 0, 0); |
|
40 } |
|
41 |
|
42 function sendMouseDown(el) { |
|
43 var rect = el.getBoundingClientRect(); |
|
44 var utils = SpecialPowers.getDOMWindowUtils(window); |
|
45 utils.sendMouseEvent('mousedown', rect.left + 5, rect.top + 5, 0, 1, 0); |
|
46 } |
|
47 |
|
48 function sendMouseUp(el) { |
|
49 var rect = el.getBoundingClientRect(); |
|
50 var utils = SpecialPowers.getDOMWindowUtils(window); |
|
51 utils.sendMouseEvent('mouseup', rect.left + 5, rect.top + 5, 0, 1, 0); |
|
52 } |
|
53 |
|
54 function log(s) { |
|
55 document.getElementById("l").textContent += s + "\n"; |
|
56 } |
|
57 |
|
58 function d2Listener(e) { |
|
59 log(e.type + ", " + e.target.id); |
|
60 is(e.target, d2, "d2 should have got mousemove."); |
|
61 ++d2mousemovecount; |
|
62 } |
|
63 |
|
64 function d1Listener(e) { |
|
65 log(e.type + ", " + e.target.id); |
|
66 d1.setCapture(true); |
|
67 } |
|
68 |
|
69 function d1Listener2(e) { |
|
70 log(e.type + ", " + e.target.id); |
|
71 d2.setCapture(true); |
|
72 } |
|
73 |
|
74 function d1MouseMoveListener(e) { |
|
75 log(e.type + ", " + e.target.id); |
|
76 ++d1mousemovecount; |
|
77 } |
|
78 |
|
79 function runTest() { |
|
80 d1 = document.getElementById("d1"); |
|
81 d2 = document.getElementById("d2"); |
|
82 d2.addEventListener("mousemove", d2Listener, true); |
|
83 document.body.offsetLeft; |
|
84 sendMouseMove(d2); |
|
85 is(d2mousemovecount, 1, "Should have got mousemove"); |
|
86 |
|
87 // This shouldn't enable capturing, since we're not in a right kind of |
|
88 // event listener. |
|
89 d1.setCapture(true); |
|
90 sendMouseDown(d1); |
|
91 sendMouseMove(d2); |
|
92 sendMouseUp(d1); |
|
93 is(d2mousemovecount, 2, "Should have got mousemove"); |
|
94 |
|
95 d1.addEventListener("mousedown", d1Listener, true); |
|
96 d1.addEventListener("mousemove", d1MouseMoveListener, true); |
|
97 sendMouseDown(d1); |
|
98 sendMouseMove(d2); |
|
99 is(d2mousemovecount, 2, "Shouldn't have got mousemove"); |
|
100 is(d1mousemovecount, 1, "Should have got mousemove"); |
|
101 sendMouseUp(d1); |
|
102 d1.removeEventListener("mousedown", d1Listener, true); |
|
103 d1.removeEventListener("mousemove", d1MouseMoveListener, true); |
|
104 |
|
105 // Nothing should be capturing the event. |
|
106 sendMouseMove(d2); |
|
107 is(d2mousemovecount, 3, "Should have got mousemove"); |
|
108 |
|
109 |
|
110 d1.addEventListener("mousemove", d1Listener2, true); |
|
111 sendMouseDown(d1); |
|
112 sendMouseMove(d1); // This should call setCapture to d2! |
|
113 d1.removeEventListener("mousemove", d1Listener2, true); |
|
114 d1.addEventListener("mousemove", d1MouseMoveListener, true); |
|
115 sendMouseMove(d1); // This should send mouse event to d2. |
|
116 is(d1mousemovecount, 1, "Shouldn't have got mousemove"); |
|
117 is(d2mousemovecount, 4, "Should have got mousemove"); |
|
118 sendMouseUp(d1); |
|
119 |
|
120 SimpleTest.finish(); |
|
121 } |
|
122 |
|
123 </script> |
|
124 </pre> |
|
125 <div class="test" id="d1"> </div><br><div class="test" id="d2"> </div> |
|
126 <pre id="l"></pre> |
|
127 </body> |
|
128 </html> |