tor-browser

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

test_SpecialPowersSpawn.html (2346B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test for SpecialPowers.spawn</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      7 </head>
      8 <body>
      9 
     10 <iframe id="iframe"></iframe>
     11 
     12 <span id="hello">World.</span>
     13 
     14 <script>
     15 /* globals SpecialPowers, content */
     16 
     17  add_task(async function() {
     18    let frame = document.getElementById("iframe");
     19    frame.src = "https://example.com/tests/testing/mochitest/tests/Harness_sanity/file_spawn.html";
     20 
     21    await new Promise(resolve => {
     22      frame.addEventListener("load", resolve, {once: true});
     23    });
     24 
     25    let result = await SpecialPowers.spawn(frame, ["#span"], selector => {
     26      let elem = content.document.querySelector(selector);
     27      return elem.textContent;
     28    });
     29 
     30    is(result, "Hello there.", "Got correct element text from frame");
     31 
     32    /* eslint-disable no-shadow */
     33    result = await SpecialPowers.spawn(frame, ["#hello"], selector => {
     34      return SpecialPowers.spawn(content.parent, [selector], selector => {
     35        let elem = content.document.querySelector(selector);
     36        return elem.textContent;
     37      });
     38    });
     39 
     40    is(result, "World.", "Got correct element text from frame's window.parent");
     41 
     42    result = await SpecialPowers.spawn(frame.contentWindow, ["#span"], selector => {
     43      let elem = content.document.querySelector(selector);
     44      return elem.textContent;
     45    });
     46 
     47    is(result, "Hello there.", "Got correct element text from window proxy");
     48 
     49    result = await SpecialPowers.spawn(SpecialPowers.getPrivilegedProps(frame, "browsingContext"),
     50                                       ["#span"], selector => {
     51      let elem = content.document.querySelector(selector);
     52      return elem.textContent;
     53    });
     54 
     55    is(result, "Hello there.", "Got correct element text from browsing context");
     56 
     57    let line = 58; // Keep this in sync with the line number where the callback function starts.
     58    let callback = () => {
     59      let e = new Error("Hello.");
     60      return { filename: e.fileName, lineNumber: e.lineNumber };
     61    };
     62 
     63    let loc = await SpecialPowers.spawn(frame, [], callback);
     64    is(loc.filename, location.href, "Error should have correct script filename");
     65    is(loc.lineNumber, line + 2, "Error should have correct script line number");
     66  });
     67 </script>
     68 </body>
     69 </html>