tor-browser

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

test_submitevent_on_form.html (1874B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test submit event on form</title>
      5  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      8 </head>
      9 <body>
     10  <form action="javascript:doDefault()" id="form">
     11    <input name="n1" value="v1">
     12    <input type="submit" value="Do Default Action">
     13  </form>
     14  <pre id="test">
     15  <script type="application/javascript">
     16 SimpleTest.waitForExplicitFinish();
     17 SimpleTest.waitForFocus(runTests);
     18 
     19 var defaultActionCount = 0;
     20 
     21 function doDefault()
     22 {
     23  defaultActionCount++;
     24 }
     25 
     26 async function runTests()
     27 {
     28  const form = document.getElementById("form");
     29  let formDataInEvent = null;
     30 
     31  // Test if submission from submit() is deferred.
     32  await SpecialPowers.pushPrefEnv({
     33    set: [["dom.forms.submit.trusted_event_only", false]],
     34  });
     35 
     36  form.addEventListener("submit", function(e) {
     37    form.elements[0].value = "v1";
     38    form.submit();
     39    form.elements[0].value = "v2";
     40  }, { once: true });
     41 
     42  form.addEventListener('formdata', e => {
     43    formDataInEvent = e.formData;
     44  });
     45 
     46  form.dispatchEvent(new Event('submit'));
     47  await new Promise(resolve => SimpleTest.executeSoon(resolve));
     48 
     49  is(defaultActionCount, 1, "should only submit once");
     50  is(formDataInEvent.get('n1'), 'v2', "submission from submit() should be deferred");
     51 
     52  // Test untrusted submit event shouldn't trigger form default action.
     53  defaultActionCount = 0;
     54  await SpecialPowers.pushPrefEnv({
     55    set: [["dom.forms.submit.trusted_event_only", true]],
     56  });
     57 
     58  form.dispatchEvent(new Event('submit'));
     59  setTimeout(() => {
     60    is(defaultActionCount, 0, "untrusted submit event shouldn't trigger form default action");
     61    SimpleTest.finish();
     62  });
     63 }
     64  </script>
     65  </pre>
     66 </body>
     67 </html>