tor-browser

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

window-open.https.sub.html (5958B)


      1 <!DOCTYPE html>
      2 <script src=/resources/testharness.js></script>
      3 <script src=/resources/testharnessreport.js></script>
      4 <script src=/resources/testdriver.js></script>
      5 <script src=/resources/testdriver-vendor.js></script>
      6 <script src=/fetch/metadata/resources/helper.js></script>
      7 <body>
      8 <script>
      9  // Forced navigations:
     10  async_test(t => {
     11    let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
     12    t.add_cleanup(_ => w.close());
     13    window.addEventListener('message', t.step_func(e => {
     14      if (e.source != w)
     15        return;
     16 
     17      assert_header_equals(e.data, {
     18        "site": "same-origin",
     19        "user": "",
     20        "mode": "navigate",
     21        "dest": "document"
     22      }, "Same-origin window, forced");
     23      t.done();
     24    }));
     25  }, "Same-origin window, forced");
     26 
     27  async_test(t => {
     28    let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
     29    t.add_cleanup(_ => w.close());
     30    window.addEventListener('message', t.step_func(e => {
     31      if (e.source != w)
     32        return;
     33 
     34      assert_header_equals(e.data, {
     35        "site": "same-site",
     36        "user": "",
     37        "mode": "navigate",
     38        "dest": "document"
     39      }, "Same-site window, forced");
     40      t.done();
     41    }));
     42  }, "Same-site window, forced");
     43 
     44  async_test(t => {
     45    let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
     46    t.add_cleanup(_ => w.close());
     47    window.addEventListener('message', t.step_func(e => {
     48      if (e.source != w)
     49        return;
     50 
     51      assert_header_equals(e.data, {
     52        "site": "cross-site",
     53        "user": "",
     54        "mode": "navigate",
     55        "dest": "document"
     56      }, "Cross-site window, forced");
     57      t.done();
     58    }));
     59  }, "Cross-site window, forced");
     60 
     61  async_test(t => {
     62    let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
     63    t.add_cleanup(_ => w.close());
     64    let messages = 0;
     65    window.addEventListener('message', t.step_func(e => {
     66      messages++;
     67      if (e.source != w)
     68        return;
     69 
     70      assert_header_equals(e.data, {
     71        "site": "same-origin",
     72        "user": "",
     73        "mode": "navigate",
     74        "dest": "document"
     75      }, "Same-origin window, forced, reloaded");
     76 
     77      if (messages == 1) {
     78        w.location.reload();
     79      } else {
     80        t.done();
     81      }
     82    }));
     83  }, "Same-origin window, forced, reloaded");
     84 
     85  async_test(t => {
     86    let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
     87    t.add_cleanup(_ => w.close());
     88    let messages = 0;
     89    window.addEventListener('message', t.step_func(e => {
     90      messages++;
     91      if (e.source != w)
     92        return;
     93 
     94      assert_header_equals(e.data, {
     95        "site": "same-site",
     96        "user": "",
     97        "mode": "navigate",
     98        "dest": "document"
     99      }, "Same-site window, forced, reloaded");
    100 
    101      if (messages == 1) {
    102        w.location.reload();
    103      } else {
    104        t.done();
    105      }
    106    }));
    107  }, "Same-site window, forced, reloaded");
    108 
    109  async_test(t => {
    110    let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
    111    t.add_cleanup(_ => w.close());
    112    let messages = 0;
    113    window.addEventListener('message', t.step_func(e => {
    114      messages++;
    115      if (e.source != w)
    116        return;
    117 
    118      assert_header_equals(e.data, {
    119        "site": "cross-site",
    120        "user": "",
    121        "mode": "navigate",
    122        "dest": "document"
    123      }, "Cross-site window, forced, reloaded");
    124 
    125      if (messages == 1) {
    126        w.location.reload();
    127      } else {
    128        t.done();
    129      }
    130    }));
    131  }, "Cross-site window, forced, reloaded");
    132 
    133  // User-activated navigations:
    134  async_test(t => {
    135    let b = document.createElement('button');
    136    b.onclick = t.step_func(_ => {
    137      let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
    138      t.add_cleanup(_ => w.close());
    139      window.addEventListener('message', t.step_func(e => {
    140        if (e.source != w)
    141          return;
    142 
    143        assert_header_equals(e.data, {
    144          "site": "same-origin",
    145          "user": "?1",
    146          "mode": "navigate",
    147          "dest": "document"
    148        }, "Same-origin window, user-activated");
    149        t.done();
    150      }));
    151    });
    152    document.body.appendChild(b);
    153    test_driver.click(b);
    154  }, "Same-origin window, user-activated");
    155 
    156  async_test(t => {
    157    let b = document.createElement('button');
    158    b.onclick = t.step_func(_ => {
    159      let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
    160      t.add_cleanup(_ => w.close());
    161      window.addEventListener('message', t.step_func(e => {
    162        if (e.source != w)
    163          return;
    164 
    165        assert_header_equals(e.data, {
    166          "site": "same-site",
    167          "user": "?1",
    168          "mode": "navigate",
    169          "dest": "document"
    170        }, "Same-site window, user-activated");
    171        t.done();
    172      }));
    173    });
    174    document.body.appendChild(b);
    175    test_driver.click(b);
    176  }, "Same-site window, user-activated");
    177 
    178  async_test(t => {
    179    let b = document.createElement('button');
    180    b.onclick = t.step_func(_ => {
    181      let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py");
    182      t.add_cleanup(_ => w.close());
    183      window.addEventListener('message', t.step_func(e => {
    184        if (e.source != w)
    185          return;
    186 
    187        assert_header_equals(e.data, {
    188          "site": "cross-site",
    189          "user": "?1",
    190          "mode": "navigate",
    191          "dest": "document"
    192        }, "Cross-site window, user-activated");
    193        t.done();
    194      }));
    195    });
    196    document.body.appendChild(b);
    197    test_driver.click(b);
    198  }, "Cross-site window, user-activated");
    199 </script>