file_bug1484371.html (3301B)
1 <html> 2 <head> 3 <script src="/tests/SimpleTest/EventUtils.js"></script> 4 <script> 5 var mouseEnterCount = 0; 6 function mouseEnter() { 7 ++mouseEnterCount; 8 } 9 var mouseLeaveCount = 0; 10 function mouseLeave() { 11 ++mouseLeaveCount; 12 } 13 14 var pointerEnterCount = 0; 15 function pointerEnter() { 16 ++pointerEnterCount; 17 } 18 var pointerLeaveCount = 0; 19 function pointerLeave() { 20 ++pointerLeaveCount; 21 } 22 23 function pointerEventsEnabled() { 24 return "onpointerenter" in document.body; 25 } 26 27 function checkEventCounts(expected, msg) { 28 parent.is(mouseEnterCount, expected.mouseEnterCount, msg + ": mouseenter event count"); 29 parent.is(mouseLeaveCount, expected.mouseLeaveCount, msg + ": mouseleave event count"); 30 if (pointerEventsEnabled()) { 31 parent.is(pointerEnterCount, expected.pointerEnterCount, msg + ": pointerenter event count"); 32 parent.is(pointerLeaveCount, expected.pointerLeaveCount, msg + ": pointerleave event count"); 33 } 34 } 35 36 function test() { 37 var lightDiv = document.getElementById("lightDiv"); 38 var host = document.getElementById("host"); 39 var sr = host.attachShadow({mode: "closed"}); 40 sr.innerHTML = "<div>shadow DOM<div>"; 41 var shadowDiv = sr.firstChild; 42 43 host.addEventListener("mouseenter", mouseEnter, true); 44 host.addEventListener("mouseleave", mouseLeave, true); 45 host.addEventListener("pointerenter", pointerEnter, true); 46 host.addEventListener("pointerleave", pointerLeave, true); 47 48 shadowDiv.addEventListener("mouseenter", mouseEnter, true); 49 shadowDiv.addEventListener("mouseleave", mouseLeave, true); 50 shadowDiv.addEventListener("pointerenter", pointerEnter, true); 51 shadowDiv.addEventListener("pointerleave", pointerLeave, true); 52 53 synthesizeMouseAtCenter(lightDiv, { type: "mousemove" }); 54 checkEventCounts({ mouseEnterCount: 0, 55 mouseLeaveCount: 0, 56 pointerEnterCount: 0, 57 pointerLeaveCount: 0 58 }, 59 "Entered light DOM" 60 ); 61 62 synthesizeMouseAtCenter(shadowDiv, { type: "mousemove" }) 63 checkEventCounts({ mouseEnterCount: 2, 64 mouseLeaveCount: 0, 65 pointerEnterCount: 2, 66 pointerLeaveCount: 0 67 }, 68 "Entered shadow DOM"); 69 70 synthesizeMouseAtCenter(lightDiv, { type: "mousemove" }) 71 checkEventCounts({ mouseEnterCount: 2, 72 mouseLeaveCount: 2, 73 pointerEnterCount: 2, 74 pointerLeaveCount: 2 75 }, 76 "Left shadow DOM" 77 ); 78 79 parent.SimpleTest.finish(); 80 } 81 82 function lazyRequestAnimationFrame(fn) { 83 requestAnimationFrame( 84 function() { 85 setTimeout(fn); 86 }); 87 } 88 </script> 89 </head> 90 <body onload="lazyRequestAnimationFrame(test)"> 91 <div id="lightDiv">light DOM</div> 92 <div id="host"></div> 93 </body> 94 </html>