tor-browser

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

embed-javascript-url.html (1797B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>embed - javascript: URL</title>
      4 <link rel="help" href="https://html.spec.whatwg.org/#the-embed-element-setup-steps">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <div id="log"></div>
      8 <script>
      9  // embed element setup steps fetches url, which results in a network error
     10  // and thus "Display no plugin".
     11  promise_test(async function (t) {
     12    const embed = document.createElement('embed');
     13    embed.src = 'javascript:"foo"';
     14    embed.onload = t.unreached_func('No load event expected');
     15    document.body.append(embed);
     16    t.add_cleanup(() => { embed.remove(); });
     17    await new Promise(resolve => { t.step_timeout(resolve, 100); });
     18  }, "javascript: in src attribute should do nothing");
     19 
     20  function insertEmbedNavigable(t) {
     21    const embed = document.createElement('embed');
     22    embed.src = '/resources/blank.html';
     23    document.body.append(embed);
     24    t.add_cleanup(() => { embed.remove(); });
     25    return embed;
     26  }
     27 
     28  promise_test(async function (t) {
     29    const embed = insertEmbedNavigable(t);
     30    await new Promise(resolve => { embed.onload = resolve; });
     31    const loaded = new Promise(resolve => { embed.onload = resolve; });
     32    window[0].location.href = 'javascript:"test"';
     33    await loaded;
     34  }, 'location.href = \'javascript:"test"\' should fire a load event');
     35 
     36  promise_test(async function (t) {
     37    const embed = insertEmbedNavigable(t);
     38    await new Promise(resolve => { embed.onload = resolve; });
     39    embed.onload = t.unreached_func('No second load event expected');
     40    window[0].location.href = 'javascript:1';
     41    await new Promise(resolve => { t.step_timeout(resolve, 100); });
     42  }, 'location.href = \'javascript:1\' should not fire a load event');
     43 </script>