bug1078327_inner.html (4500B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1078327 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for Bug 1078327</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 #target, #listener { background: yellow; padding: 10px; } 15 #mediator { background: red; padding: 20px; } 16 </style> 17 <script type="application/javascript"> 18 var target = undefined; 19 var mediator = undefined; 20 var listener = undefined; 21 var test_target = false; 22 var test_capture = false; 23 var test_mediator_over = false; 24 var test_mediator_move = false; 25 var test_mediator_out = false; 26 var test_listener = false; 27 var test_lost_capture = false; 28 29 function TargetHandler(event) { 30 logger("Target receive event: " + event.type + ". Mediator.setPointerCapture()"); 31 mediator.setPointerCapture(event.pointerId); 32 test_target = true; 33 test_capture = true; 34 } 35 function MediatorHandler(event) { 36 logger("Mediator receive event: " + event.type); 37 if(!test_capture) 38 return; 39 if(event.type == "pointermove") 40 test_mediator_move++; 41 if(event.type == "pointerover") 42 test_mediator_over++; 43 if(event.type == "pointerout") 44 test_mediator_out++; 45 if(event.type == "lostpointercapture") 46 test_lost_capture = true; 47 } 48 function ListenerHandler(event) { 49 logger("Listener receive event: " + event.type); 50 test_listener = true; 51 } 52 function logger(message) { 53 console.log(message); 54 var log = document.getElementById('log'); 55 log.innerHTML = message + "<br>" + log.innerHTML; 56 } 57 58 function prepareTest() { 59 SimpleTest.executeSoon(executeTest); 60 } 61 function executeTest() 62 { 63 logger("executeTest"); 64 target = document.getElementById("target"); 65 mediator = document.getElementById("mediator"); 66 listener = document.getElementById("listener"); 67 target.addEventListener("pointerdown", TargetHandler); 68 mediator.addEventListener("gotpointercapture", MediatorHandler); 69 mediator.addEventListener("pointerover", MediatorHandler); 70 mediator.addEventListener("pointermove", MediatorHandler); 71 mediator.addEventListener("pointerout", MediatorHandler); 72 mediator.addEventListener("lostpointercapture", MediatorHandler); 73 listener.addEventListener("pointermove", ListenerHandler); 74 var rect_t = target.getBoundingClientRect(); 75 var rect_m = mediator.getBoundingClientRect(); 76 var rect_l = listener.getBoundingClientRect(); 77 synthesizeMouse(target, rect_t.width/2, rect_t.height/20, {type: "mousedown"}); 78 synthesizeMouse(target, rect_t.width/2, rect_t.height/20, {type: "mousemove"}); 79 synthesizeMouse(mediator, rect_m.width/2, rect_m.height/20, {type: "mousemove"}); 80 synthesizeMouse(listener, rect_l.width/2, rect_l.height/20, {type: "mousemove"}); 81 synthesizeMouse(mediator, rect_m.width/2, rect_m.height/20, {type: "mousemove"}); 82 synthesizeMouse(target, rect_t.width/2, rect_t.height/20, {type: "mousemove"}); 83 synthesizeMouse(target, rect_t.width/2, rect_t.height/20, {type: "mouseup"}); 84 synthesizeMouse(target, rect_t.width/2, rect_t.height/20, {type: "mousemove"}); 85 finishTest(); 86 } 87 function finishTest() { 88 parent.is(test_target, true, "pointerdown event should be received by target"); 89 parent.is(test_lost_capture, true, "mediator should receive lostpointercapture"); 90 parent.is(test_mediator_over, 1, "mediator should receive pointerover event only once"); 91 parent.is(test_mediator_move, 5, "mediator should receive pointermove event five times"); 92 parent.is(test_mediator_out, 1, "mediator should receive pointerout event only once"); 93 parent.is(test_listener, false, "listener should not receive any events"); 94 logger("finishTest"); 95 parent.finishTest(); 96 } 97 </script> 98 </head> 99 <body onload="prepareTest()"> 100 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1078327">Mozilla Bug 1078327</a> 101 <div id="mediator"> 102 <div id="listener">div id=listener</div> 103 </div> 104 <div id="target">div id=target</div> 105 <pre id="log"></pre> 106 </body> 107 </html>