bug1162990_inner_2.html (5196B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1162990 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for Bug 1162990</title> 9 <meta name="author" content="Maksim Lebedev" /> 10 <script src="/tests/SimpleTest/SimpleTest.js"></script> 11 <script src="/tests/SimpleTest/EventUtils.js"></script> 12 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 13 <style> 14 div#basket { 15 background: red; 16 padding: 10px; 17 margin: 10px; 18 } 19 div#target { 20 background: lightgreen; 21 padding: 10px; 22 margin: 10px; 23 } 24 div#child { 25 background: lightblue; 26 padding: 10px; 27 margin: 10px; 28 } 29 div#listener { 30 background: yellow; 31 padding: 10px; 32 margin: 10px; 33 } 34 </style> 35 <script type="application/javascript"> 36 var basket; 37 var target; 38 var child; 39 var listener; 40 41 var test_basketLeave = 0; 42 var test_targetDown = 0; 43 var test_targetGotCapture = 0; 44 var test_targetLostCapture = 0; 45 var test_targetLeave = 0; 46 var test_childLeave = 0; 47 var test_listenerLeave = 0; 48 49 function basketLeaveHandler(event) { 50 logger("basket: " + event.type); 51 test_basketLeave++; 52 } 53 function targetDownHandler(event) { 54 logger("target: " + event.type); 55 target.setPointerCapture(event.pointerId); 56 test_targetDown++; 57 } 58 function targetGotHandler(event) { 59 logger("target: " + event.type); 60 test_targetGotCapture++; 61 } 62 function targetLostHandler(event) { 63 logger("target: " + event.type); 64 test_targetLostCapture++; 65 } 66 function targetLeaveHandler(event) { 67 logger("target: " + event.type); 68 test_targetLeave++; 69 } 70 function childLeaveHandler(event) { 71 logger("child: " + event.type); 72 test_childLeave++; 73 } 74 function listenerLeaveHandler(event) { 75 logger("listener: " + event.type); 76 test_listenerLeave++; 77 } 78 79 function prepareTest() { 80 SimpleTest.executeSoon(executeTest); 81 } 82 83 function setEventHandlers() { 84 basket = document.getElementById("basket"); 85 target = document.getElementById("target"); 86 child = document.getElementById("child"); 87 listener = document.getElementById("listener"); 88 89 basket.addEventListener("pointerleave", basketLeaveHandler); 90 target.addEventListener("pointerdown", targetDownHandler); 91 target.addEventListener("gotpointercapture", targetGotHandler); 92 target.addEventListener("lostpointercapture", targetLostHandler); 93 target.addEventListener("pointerleave", targetLeaveHandler); 94 child.addEventListener("pointerleave", childLeaveHandler); 95 listener.addEventListener("pointerleave", listenerLeaveHandler); 96 } 97 98 function executeTest() 99 { 100 synthesizeMouse(document.querySelector("a"), 0, 0, {type : "mousemove"}); 101 logger("executeTest"); 102 setEventHandlers(); 103 var rectTg = target.getBoundingClientRect(); 104 var rectCd = child.getBoundingClientRect(); 105 var rectLr = listener.getBoundingClientRect(); 106 synthesizeMouse(target, rectTg.width/3, rectTg.height/7, {type: "mousedown"}); 107 synthesizeMouse(child, rectCd.width/3, rectCd.height/2, {type: "mousemove"}); 108 synthesizeMouse(listener, rectLr.width/3, rectLr.height/2, {type: "mousemove"}); 109 synthesizeMouse(child, rectCd.width/3, rectCd.height/2, {type: "mousemove"}); 110 synthesizeMouse(target, rectTg.width/3, rectTg.height/7, {type: "mousemove"}); 111 synthesizeMouse(target, rectTg.width/3, rectTg.height/7, {type: "mouseup"}); 112 synthesizeMouse(target, rectTg.width/3, rectTg.height/9, {type: "mousemove"}); 113 finishTest(); 114 } 115 116 function finishTest() { 117 parent.is(test_basketLeave, 0, "Part2: basket should not receive pointerleave event after pointer capturing"); 118 parent.is(test_targetDown, 1, "Part2: target should receive pointerdown event"); 119 parent.is(test_targetGotCapture, 1, "Part2: target should receive gotpointercapture event"); 120 parent.is(test_targetLostCapture, 1, "Part2: target should receive lostpointercapture event"); 121 parent.is(test_targetLeave, 0, "Part2: target should not receive pointerleave event"); 122 parent.is(test_childLeave, 0, "Part2: child should not receive pointerleave event after pointer capturing"); 123 parent.is(test_listenerLeave, 0, "Part2: listener should not receive pointerleave event after pointer capturing"); 124 logger("finishTest"); 125 parent.finishTest(); 126 } 127 128 function logger(message) { 129 var log = document.getElementById('log'); 130 log.innerHTML = message + "<br>" + log.innerHTML; 131 } 132 </script> 133 </head> 134 <body onload="prepareTest()"> 135 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1162990">Mozilla Bug 1162990 Test 2</a> 136 <p id="display"></p> 137 <div id="content" style="display: none"> 138 </div> 139 <div id="basket">div id=basket 140 <div id="target">div id=target 141 <div id="child">div id=child</div> 142 </div> 143 </div> 144 <div id="listener">div id=listener</div> 145 <pre id="log"> 146 </pre> 147 </body> 148 </html>