test_bug428135.xhtml (5540B)
1 <?xml version="1.0"?> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=428135 5 --> 6 <head> 7 <title>Test for Bug 428135</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 <body> 12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=428135">Mozilla Bug 428135</a> 13 <p id="display"></p> 14 <div id="content" style="display: none"> 15 16 </div> 17 <pre id="test"> 18 <script class="testbody" type="text/javascript"> 19 <![CDATA[ 20 21 /** Test for Bug 428135 */ 22 23 var expectedCurrentTargets = new Array(); 24 25 function d(el, ename) { 26 var e = document.createEvent("Events"); 27 e.initEvent(ename, true, true); 28 el.dispatchEvent(e); 29 } 30 31 function testListener(e) { 32 e.preventDefault(); 33 var expected = expectedCurrentTargets.shift(); 34 ok(expected == e.currentTarget, 35 "Unexpected current target [" + e.currentTarget + "], event=" + e.type + 36 ", phase=" + e.eventPhase + ", target should have been " + expected); 37 } 38 39 function getAndAddListeners(elname) { 40 var el = document; 41 if (elname) { 42 el = document.getElementById(elname); 43 } 44 el.addEventListener("submit", testListener, true); 45 el.addEventListener("submit", testListener); 46 el.addEventListener("reset", testListener, true); 47 el.addEventListener("reset", testListener); 48 el.addEventListener("fooEvent", testListener, true); 49 el.addEventListener("fooEvent", testListener); 50 return el; 51 } 52 53 function testSubmitResetEvents() { 54 getAndAddListeners(null); 55 var outerForm = getAndAddListeners("outerForm"); 56 var outerSubmit = getAndAddListeners("outerSubmit"); 57 var outerReset = getAndAddListeners("outerReset"); 58 var outerSubmitDispatcher = getAndAddListeners("outerSubmitDispatcher"); 59 var outerResetDispatcher = getAndAddListeners("outerResetDispatcher"); 60 var outerChild = getAndAddListeners("outerChild"); 61 var innerForm = getAndAddListeners("innerForm"); 62 var innerSubmit = getAndAddListeners("innerSubmit"); 63 var innerReset = getAndAddListeners("innerReset"); 64 var innerSubmitDispatcher = getAndAddListeners("innerSubmitDispatcher"); 65 var innerResetDispatcher = getAndAddListeners("innerResetDispatcher"); 66 67 expectedCurrentTargets = new Array(document, outerForm, outerForm, document); 68 outerSubmit.click(); 69 ok(!expectedCurrentTargets.length, 70 "(1) expectedCurrentTargets isn't empty!"); 71 72 expectedCurrentTargets = new Array(document, outerForm, outerForm, document); 73 outerReset.click(); 74 ok(!expectedCurrentTargets.length, 75 "(2) expectedCurrentTargets isn't empty!"); 76 77 // Because of bug 428135, submit shouldn't propagate 78 // back to outerForm and document! 79 expectedCurrentTargets = 80 new Array(document, outerForm, outerSubmitDispatcher, outerSubmitDispatcher); 81 outerSubmitDispatcher.click(); 82 ok(!expectedCurrentTargets.length, 83 "(3) expectedCurrentTargets isn't empty!"); 84 85 // Because of bug 428135, reset shouldn't propagate 86 // back to outerForm and document! 87 expectedCurrentTargets = 88 new Array(document, outerForm, outerResetDispatcher, outerResetDispatcher); 89 outerResetDispatcher.click(); 90 ok(!expectedCurrentTargets.length, 91 "(4) expectedCurrentTargets isn't empty!"); 92 93 // Because of bug 428135, submit shouldn't propagate 94 // back to outerForm and document! 95 expectedCurrentTargets = 96 new Array(document, outerForm, outerChild, innerForm, innerForm, outerChild); 97 innerSubmit.click(); 98 ok(!expectedCurrentTargets.length, 99 "(5) expectedCurrentTargets isn't empty!"); 100 101 // Because of bug 428135, reset shouldn't propagate 102 // back to outerForm and document! 103 expectedCurrentTargets = 104 new Array(document, outerForm, outerChild, innerForm, innerForm, outerChild); 105 innerReset.click(); 106 ok(!expectedCurrentTargets.length, 107 "(6) expectedCurrentTargets isn't empty!"); 108 109 // Because of bug 428135, submit shouldn't propagate 110 // back to inner/outerForm or document! 111 expectedCurrentTargets = 112 new Array(document, outerForm, outerChild, innerForm, innerSubmitDispatcher, 113 innerSubmitDispatcher); 114 innerSubmitDispatcher.click(); 115 ok(!expectedCurrentTargets.length, 116 "(7) expectedCurrentTargets isn't empty!"); 117 118 // Because of bug 428135, reset shouldn't propagate 119 // back to inner/outerForm or document! 120 expectedCurrentTargets = 121 new Array(document, outerForm, outerChild, innerForm, innerResetDispatcher, 122 innerResetDispatcher); 123 innerResetDispatcher.click(); 124 ok(!expectedCurrentTargets.length, 125 "(8) expectedCurrentTargets isn't empty!"); 126 } 127 128 SimpleTest.waitForExplicitFinish(); 129 addLoadEvent(testSubmitResetEvents); 130 addLoadEvent(SimpleTest.finish); 131 132 133 ]]> 134 </script> 135 </pre> 136 <form id="outerForm"> 137 <input type="submit" value="outer" id="outerSubmit"/> 138 <input type="reset" value="reset outer" id="outerReset"/> 139 <input type="button" value="dispatch submit" onclick="d(this, 'submit')" 140 id="outerSubmitDispatcher"/> 141 <input type="button" value="dispatch reset" onclick="d(this, 'reset')" 142 id="outerResetDispatcher"/> 143 <div id="outerChild"> 144 <form id="innerForm"> 145 <input type="submit" value="inner" id="innerSubmit"/> 146 <input type="reset" value="reset inner" id="innerReset"/> 147 <input type="button" value="dispatch submit" onclick="d(this, 'submit')" 148 id="innerSubmitDispatcher"/> 149 <input type="button" value="dispatch reset" onclick="d(this, 'reset')" 150 id="innerResetDispatcher"/> 151 </form> 152 </div> 153 </form> 154 </body> 155 </html>