tor-browser

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

test_popup_blocker_form_target_blank.html (1769B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta charset="utf-8">
      5 <title>Test for triggering the popup blocker by submitting a target=_blank form</title>
      6 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      7 <script src="/tests/SimpleTest/EventUtils.js"></script>
      8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      9 </head>
     10 <body>
     11 <form action="file_self_close.html" target="_blank"><button>Submit</button></form>
     12 <script>
     13 
     14 let { ContentTaskUtils } = SpecialPowers.ChromeUtils.importESModule(
     15  "resource://testing-common/ContentTaskUtils.sys.mjs"
     16 );
     17 
     18 function testTargetBlankForm(aSubmitFun, aMsg) {
     19  add_task(async () => {
     20    info(aMsg);
     21    let popupBlockedPromise = ContentTaskUtils.waitForEvent(document, "DOMPopupBlocked", false, () => {
     22      ok(true, "received DOMPopupBlocked event");
     23      return true;
     24    });
     25    let form = document.querySelector("form");
     26    form.addEventListener("submit", () => {
     27      // Consume the user activation to ensure the popup is blocked.
     28      SpecialPowers.wrap(document).clearUserGestureActivation();
     29    });
     30    aSubmitFun();
     31    await popupBlockedPromise;
     32  });
     33 }
     34 
     35 add_setup(async function() {
     36  await SpecialPowers.pushPrefEnv({"set": [
     37    // Enbale popup blocker
     38    ["dom.disable_open_during_load", true],
     39  ]});
     40 });
     41 
     42 testTargetBlankForm(() => {
     43  synthesizeMouseAtCenter(document.querySelector("button"), {});
     44 }, "Submit form by clicking submit button");
     45 
     46 testTargetBlankForm(() => {
     47  // Bug 1930678, form.submit() throws an error when the popup is blocked.
     48  try {
     49    document.querySelector("form").submit();
     50  } catch(e) {}
     51 }, "Submit form by submit()");
     52 
     53 testTargetBlankForm(() => {
     54  document.querySelector("form").requestSubmit();
     55 }, "Submit form by requestSubmit()");
     56 
     57 </script>
     58 </body>
     59 </html>