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