tor-browser

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

dialog-same-origin-ynn.html (2190B)


      1 <!doctype html>
      2 <meta name="timeout" content="long">
      3 <link rel="author" href="mailto:wpt@keithcirkel.co.uk" />
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/resources/testdriver.js"></script>
      7 <script src="/resources/testdriver-vendor.js"></script>
      8 <script src="/resources/testdriver-actions.js"></script>
      9 <script src="../resources/helpers.js"></script>
     10 
     11 <body>
     12  <iframe id="iframe1" src="resources/dialog-prevents-close.html"></iframe>
     13  <iframe id="iframe2" src="resources/dialog-prevents-close.html"></iframe>
     14 
     15  <script>
     16    function awaitEvent(el, type, signal) {
     17      return new Promise((resolve) =>
     18        el.addEventListener(type, resolve, { once: true, signal }),
     19      );
     20    }
     21 
     22    async function iframeDialogIsOpen(iframe, signal) {
     23      const reply = awaitEvent(window, "message", signal);
     24      iframe.contentWindow.postMessage("dialog_open", "*");
     25      const {data} = (await reply);
     26      if (data.error) throw new Error(data.error);
     27      return data.open;
     28    }
     29 
     30    promise_test(async (t) => {
     31      await awaitEvent(iframe1, "load", t.get_signal());
     32      await awaitEvent(iframe2, "load", t.get_signal());
     33 
     34      test_driver.bless();
     35 
     36      assert_true(await iframeDialogIsOpen(iframe1, t.get_signal()), "Dialog 1 is open");
     37      assert_true(await iframeDialogIsOpen(iframe2, t.get_signal()), "Dialog 2 is open");
     38 
     39      await test_driver.send_keys(iframe1, "\uE00C");
     40 
     41      assert_true(await iframeDialogIsOpen(iframe1, t.get_signal()), "Dialog 1 is still open");
     42      assert_true(await iframeDialogIsOpen(iframe2, t.get_signal()), "Dialog 2 is still open");
     43 
     44      await test_driver.send_keys(iframe1, "\uE00C");
     45 
     46      assert_false(await iframeDialogIsOpen(iframe1, t.get_signal()), "Dialog 1 is now closed");
     47      assert_true(await iframeDialogIsOpen(iframe2, t.get_signal()), "Dialog 2 is still open");
     48 
     49      await test_driver.send_keys(iframe2, "\uE00C");
     50 
     51      assert_false(await iframeDialogIsOpen(iframe1, t.get_signal()), "Dialog 1 is still closed");
     52      assert_false(await iframeDialogIsOpen(iframe2, t.get_signal()), "Dialog 2 is now closed");
     53    });
     54  </script>
     55 </body>