tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>