test_bug1304044.html (3710B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1304044 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for Bug 1304044</title> 9 <script src="/tests/SimpleTest/SimpleTest.js"></script> 10 <script src="/tests/SimpleTest/EventUtils.js"></script> 11 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 12 <script type="application/javascript"> 13 var eventsFired = []; 14 var target; 15 var eventsExpected; 16 17 function GetNodeString(node) { 18 if (node == window) 19 return "window"; 20 if (node == document) 21 return "document"; 22 if (node.id) 23 return node.id; 24 if (node.nodeName) 25 return node.nodeName; 26 return node; 27 } 28 29 function TargetAndListener(listener, targetInner) { 30 this.listener = listener; 31 this.target = targetInner; 32 } 33 34 TargetAndListener.prototype.toString = function() { 35 var targetName = GetNodeString(this.target); 36 var listenerName = GetNodeString(this.listener); 37 return "(listener: " + listenerName + ", target: " + targetName + ")"; 38 } 39 40 var tests = [ 41 TestAuxClickBubblesForEventListener, 42 TestAuxClickBubblesForOnAuxClick, 43 ]; 44 45 function CompareEvents(evt, expected) { 46 return evt && expected && evt.listener == expected.listener && 47 evt.target == expected.target; 48 } 49 50 function ResetEventsFired() { 51 eventsFired = []; 52 } 53 54 function ClearEventListeners() { 55 for (i in arguments) { 56 arguments[i].removeEventListener("auxclick", log_event); 57 } 58 } 59 60 function ClickTarget(tgt) { 61 synthesizeMouseAtCenter(tgt, {type : "mousedown", button: 2}, window); 62 synthesizeMouseAtCenter(tgt, {type : "mouseup", button: 2}, window); 63 } 64 65 function log_event(e) { 66 eventsFired[eventsFired.length] = new TargetAndListener(this, e.target); 67 } 68 69 function CompareEventsToExpected(expected, actual) { 70 for (var i = 0; i < expected.length || i < actual.length; i++) { 71 ok(CompareEvents(actual[i], expected[i]), 72 "Auxclick receiver's don't match: TargetAndListener " + 73 i + ": Expected: " + expected[i] + ", Actual: " + actual[i]); 74 } 75 } 76 77 function TestAuxClickBubblesForEventListener() { 78 target.addEventListener("auxclick", log_event); 79 document.addEventListener("auxclick", log_event); 80 window.addEventListener("auxclick", log_event); 81 82 ClickTarget(target) 83 CompareEventsToExpected(eventsExpected, eventsFired); 84 ResetEventsFired(); 85 ClearEventListeners(target, document, window); 86 } 87 88 function TestAuxClickBubblesForOnAuxClick() { 89 target.onauxclick = log_event; 90 document.onauxclick = log_event; 91 window.onauxclick = log_event; 92 93 ClickTarget(target); 94 CompareEventsToExpected(eventsExpected, eventsFired); 95 ResetEventsFired(); 96 } 97 98 function RunTests(){ 99 for (var i = 0; i < tests.length; i++) { 100 tests[i](); 101 } 102 } 103 104 function Begin() { 105 target = document.getElementById("target"); 106 eventsExpected = [ 107 new TargetAndListener(target, target), 108 new TargetAndListener(document, target), 109 new TargetAndListener(window, target), 110 ]; 111 RunTests(); 112 target.remove(); 113 SimpleTest.finish(); 114 } 115 116 window.onload = function() { 117 SimpleTest.waitForExplicitFinish(); 118 SimpleTest.executeSoon(Begin); 119 } 120 </script> 121 </head> 122 <body> 123 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1304044">Mozilla Bug 1304044</a> 124 <p id="display"> 125 <div id="target">Target</div> 126 </p> 127 <div id="content" style:"display:none"> 128 129 </div> 130 <pre id="test"> 131 </pre> 132 </body> 133 </html>