tor-browser

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

test_bug582412-2.html (8259B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=566160
      5 -->
      6 <head>
      7  <title>Test for Bug 566160</title>
      8  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      9  <script src="/tests/SimpleTest/EventUtils.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11 </head>
     12 <body>
     13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=566160">Mozilla Bug 566160</a>
     14 <p id="display"></p>
     15 <style>
     16  iframe { width: 130px; height: 100px;}
     17 </style>
     18 <iframe name='frame1' id='frame1'></iframe>
     19 <iframe name='frame2' id='frame2'></iframe>
     20 <iframe name='frame3' id='frame3'></iframe>
     21 <iframe name='frame3bis' id='frame3bis'></iframe>
     22 <iframe name='frame4' id='frame4'></iframe>
     23 <iframe name='frame5' id='frame5'></iframe>
     24 <iframe name='frame6' id='frame6'></iframe>
     25 <iframe name='frame7' id='frame7'></iframe>
     26 <iframe name='frame8' id='frame8'></iframe>
     27 <iframe name='frame9' id='frame9'></iframe>
     28 <div id="content">
     29  <!-- submit controls with formaction that are validated with a CLICK -->
     30  <form target="frame1" action="form_submit_server.sjs" method="POST">
     31    <input name='foo' value='foo'>
     32    <input type='submit' id='is' formenctype='multipart/form-data'>
     33  </form>
     34  <form target="frame2" action="form_submit_server.sjs" method="POST">
     35    <input name='bar' value='bar'>
     36    <input type='image' id='ii' formenctype='multipart/form-data'>
     37  </form>
     38  <form target="frame3" action="form_submit_server.sjs" method="POST">
     39    <input name='tulip' value='tulip'>
     40    <button type='submit' id='bs' formenctype="multipart/form-data">submit</button>
     41  </form>
     42  <form target="frame3bis" action="form_submit_server.sjs" method="POST">
     43    <input name='tulipbis' value='tulipbis'>
     44    <button type='submit' id='bsbis' formenctype="multipart/form-data">submit</button>
     45  </form>
     46 
     47  <!-- submit controls with formaction that are validated with ENTER -->
     48  <form target="frame4" action="form_submit_server.sjs" method="POST">
     49    <input name='footulip' value='footulip'>
     50    <input type='submit' id='is2' formenctype="multipart/form-data">
     51  </form>
     52  <form target="frame5" action="form_submit_server.sjs" method="POST">
     53    <input name='foobar' value='foobar'>
     54    <input type='image' id='ii2' formenctype="multipart/form-data">
     55  </form>
     56  <form target="frame6" action="form_submit_server.sjs" method="POST">
     57    <input name='tulip2' value='tulip2'>
     58    <button type='submit' id='bs2' formenctype="multipart/form-data">submit</button>
     59  </form>
     60 
     61  <!-- check that when submitting a from from an element
     62       which is not a submit control, @formaction isn't used -->
     63  <form target='frame7' action="form_submit_server.sjs" method="POST">
     64    <input id='enter' name='input' value='enter' formenctype="multipart/form-data">
     65  </form>
     66 
     67  <!-- If formenctype isn't set, it's default value shouldn't be used -->
     68  <form target="frame8" action="form_submit_server.sjs" method="POST" enctype="multipart/form-data">
     69    <input name='tulip8' value='tulip8'>
     70    <input type='submit' id='i8'>
     71  </form>
     72 
     73  <!-- If formenctype is set but has an invalid value, the default value should
     74       be used. -->
     75  <form target="frame9" action="form_submit_server.sjs" method="POST" enctype="multipart/form-data">
     76    <input name='tulip9' value='tulip9'>
     77    <input type='submit' id='i9' formenctype="">
     78  </form>
     79 </div>
     80 <pre id="test">
     81 <script type="application/javascript">
     82 
     83 /** Test for Bug 566160 */
     84 
     85 SimpleTest.waitForExplicitFinish();
     86 addLoadEvent(function() {
     87  setTimeout(runTests, 0);
     88 });
     89 
     90 var gTestResults = {
     91  frame1: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"foo\\\"\"},\"body\":\"foo\"}]',
     92  frame2: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"bar\\\"\"},\"body\":\"bar\"},{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"x\\\"\"},\"body\":\"0\"},{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"y\\\"\"},\"body\":\"0\"}]',
     93  frame3: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"tulip\\\"\"},\"body\":\"tulip\"}]',
     94  frame3bis: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"tulipbis\\\"\"},\"body\":\"tulipbis\"}]',
     95  frame4: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"footulip\\\"\"},\"body\":\"footulip\"}]',
     96  frame5: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"foobar\\\"\"},\"body\":\"foobar\"},{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"x\\\"\"},\"body\":\"0\"},{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"y\\\"\"},\"body\":\"0\"}]',
     97  frame6: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"tulip2\\\"\"},\"body\":\"tulip2\"}]',
     98  frame7: '[]',
     99  frame8: '[{\"headers\":{\"Content-Disposition\":\"form-data; name=\\\"tulip8\\\"\"},\"body\":\"tulip8\"}]',
    100  frame9: '[]',
    101 };
    102 
    103 var gPendingLoad = 0; // Has to be set after depending on the frames number.
    104 
    105 function runTests()
    106 {
    107  // We add a load event for the frames which will be called when the forms
    108  // will be submitted.
    109  var frames = [ document.getElementById('frame1'),
    110                 document.getElementById('frame2'),
    111                 document.getElementById('frame3'),
    112                 document.getElementById('frame3bis'),
    113                 document.getElementById('frame4'),
    114                 document.getElementById('frame5'),
    115                 document.getElementById('frame6'),
    116                 document.getElementById('frame7'),
    117                 document.getElementById('frame8'),
    118                 document.getElementById('frame9'),
    119               ];
    120  gPendingLoad = frames.length;
    121 
    122  for (var i=0; i<frames.length; i++) {
    123    frames[i].setAttribute('onload', "frameLoaded(this);");
    124  }
    125 
    126  /**
    127   * We are going to focus each element before interacting with either for
    128   * simulating the ENTER key (synthesizeKey) or a click (synthesizeMouse) or
    129   * using .click(). This because it may be needed (ENTER) and because we want
    130   * to have the element visible in the iframe.
    131   *
    132   * Focusing the first element (id='is') is launching the tests.
    133   */
    134  document.getElementById('is').addEventListener('focus', function(aEvent) {
    135    synthesizeMouse(document.getElementById('is'), 5, 5, {});
    136    document.getElementById('ii').focus();
    137  }, {once: true});
    138 
    139  document.getElementById('ii').addEventListener('focus', function(aEvent) {
    140    synthesizeMouse(document.getElementById('ii'), 5, 5, {});
    141    document.getElementById('bs').focus();
    142  }, {once: true});
    143 
    144  document.getElementById('bs').addEventListener('focus', function(aEvent) {
    145    synthesizeMouse(document.getElementById('bs'), 5, 5, {});
    146    document.getElementById('bsbis').focus();
    147  }, {once: true});
    148 
    149  document.getElementById('bsbis').addEventListener('focus', function(aEvent) {
    150    document.getElementById('bsbis').click();
    151    document.getElementById('is2').focus();
    152  }, {once: true});
    153 
    154  document.getElementById('is2').addEventListener('focus', function(aEvent) {
    155    synthesizeKey("KEY_Enter");
    156    document.getElementById('ii2').focus();
    157  }, {once: true});
    158 
    159  document.getElementById('ii2').addEventListener('focus', function(aEvent) {
    160    synthesizeKey("KEY_Enter");
    161    document.getElementById('bs2').focus();
    162  }, {once: true});
    163 
    164  document.getElementById('bs2').addEventListener('focus', function(aEvent) {
    165    synthesizeKey("KEY_Enter");
    166    document.getElementById('enter').focus();
    167  }, {once: true});
    168 
    169  document.getElementById('enter').addEventListener('focus', function(aEvent) {
    170    synthesizeKey("KEY_Enter");
    171    document.getElementById('i8').focus();
    172  }, {once: true});
    173 
    174  document.getElementById('i8').addEventListener('focus', function(aEvent) {
    175    synthesizeKey("KEY_Enter");
    176    document.getElementById('i9').focus();
    177  }, {once: true});
    178 
    179  document.getElementById('i9').addEventListener('focus', function(aEvent) {
    180    synthesizeKey("KEY_Enter");
    181  }, {once: true});
    182 
    183  document.getElementById('is').focus();
    184 }
    185 
    186 function frameLoaded(aFrame) {
    187  // Check if formaction/action has the correct behavior.
    188  is(aFrame.contentDocument.documentElement.textContent, gTestResults[aFrame.name],
    189     "the enctype/formenctype attribute doesn't have the correct behavior");
    190 
    191  if (--gPendingLoad == 0) {
    192    SimpleTest.finish();
    193  }
    194 }
    195 
    196 </script>
    197 </pre>
    198 </body>
    199 </html>