tor-browser

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

element-meta-refresh.https.optional.sub.html (9283B)


      1 <!DOCTYPE html>
      2 <!--
      3 This test was procedurally generated. Please do not modify it directly.
      4 Sources:
      5 - fetch/metadata/tools/fetch-metadata.conf.yml
      6 - fetch/metadata/tools/templates/element-meta-refresh.optional.sub.html
      7 -->
      8 <html lang="en">
      9  <meta charset="utf-8">
     10  <title>HTTP headers on request for HTML "meta" element with http-equiv="refresh"</title>
     11  <script src="/resources/testharness.js"></script>
     12  <script src="/resources/testharnessreport.js"></script>
     13  <script src="/fetch/metadata/resources/helper.sub.js"></script>
     14  <body>
     15  <script>
     16  'use strict';
     17 
     18  function induceRequest(url, test) {
     19    const win = window.open();
     20    test.add_cleanup(() => win.close());
     21 
     22    win.document.open();
     23    win.document.write(
     24      `<meta http-equiv="Refresh" content="0; URL=${url}">`
     25    );
     26    win.document.close();
     27 
     28    return new Promise((resolve) => {
     29      addEventListener('message', (event) => {
     30          if (event.source === win) {
     31            resolve();
     32          }
     33        });
     34    });
     35  }
     36 
     37  const responseParams = {
     38    mime: 'text/html',
     39    body: `<script>opener.postMessage(0, '*')</${''}script>`
     40  };
     41 
     42  promise_test((t) => {
     43    const key = '{{uuid()}}';
     44 
     45    return induceRequest(
     46        makeRequestURL(key, ['httpsOrigin'], responseParams), t
     47      )
     48      .then(() => retrieve(key))
     49      .then((headers) => {
     50          assert_own_property(headers, 'sec-fetch-site');
     51          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
     52        });
     53  }, 'sec-fetch-site - Same origin');
     54 
     55  promise_test((t) => {
     56    const key = '{{uuid()}}';
     57 
     58    return induceRequest(
     59        makeRequestURL(key, ['httpsCrossSite'], responseParams), t
     60      )
     61      .then(() => retrieve(key))
     62      .then((headers) => {
     63          assert_own_property(headers, 'sec-fetch-site');
     64          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
     65        });
     66  }, 'sec-fetch-site - Cross-site');
     67 
     68  promise_test((t) => {
     69    const key = '{{uuid()}}';
     70 
     71    return induceRequest(
     72        makeRequestURL(key, ['httpsSameSite'], responseParams), t
     73      )
     74      .then(() => retrieve(key))
     75      .then((headers) => {
     76          assert_own_property(headers, 'sec-fetch-site');
     77          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
     78        });
     79  }, 'sec-fetch-site - Same site');
     80 
     81  promise_test((t) => {
     82    const key = '{{uuid()}}';
     83 
     84    return induceRequest(
     85        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin'], responseParams), t
     86      )
     87      .then(() => retrieve(key))
     88      .then((headers) => {
     89          assert_own_property(headers, 'sec-fetch-site');
     90          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
     91        });
     92  }, 'sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect');
     93 
     94  promise_test((t) => {
     95    const key = '{{uuid()}}';
     96 
     97    return induceRequest(
     98        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin'], responseParams), t
     99      )
    100      .then(() => retrieve(key))
    101      .then((headers) => {
    102          assert_own_property(headers, 'sec-fetch-site');
    103          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    104        });
    105  }, 'sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect');
    106 
    107  promise_test((t) => {
    108    const key = '{{uuid()}}';
    109 
    110    return induceRequest(
    111        makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin'], responseParams), t
    112      )
    113      .then(() => retrieve(key))
    114      .then((headers) => {
    115          assert_own_property(headers, 'sec-fetch-site');
    116          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    117        });
    118  }, 'sec-fetch-site - Cross-Site -> Same Origin');
    119 
    120  promise_test((t) => {
    121    const key = '{{uuid()}}';
    122 
    123    return induceRequest(
    124        makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite'], responseParams), t
    125      )
    126      .then(() => retrieve(key))
    127      .then((headers) => {
    128          assert_own_property(headers, 'sec-fetch-site');
    129          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    130        });
    131  }, 'sec-fetch-site - Cross-Site -> Same-Site');
    132 
    133  promise_test((t) => {
    134    const key = '{{uuid()}}';
    135 
    136    return induceRequest(
    137        makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite'], responseParams), t
    138      )
    139      .then(() => retrieve(key))
    140      .then((headers) => {
    141          assert_own_property(headers, 'sec-fetch-site');
    142          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    143        });
    144  }, 'sec-fetch-site - Cross-Site -> Cross-Site');
    145 
    146  promise_test((t) => {
    147    const key = '{{uuid()}}';
    148 
    149    return induceRequest(
    150        makeRequestURL(key, ['httpsOrigin', 'httpsOrigin'], responseParams), t
    151      )
    152      .then(() => retrieve(key))
    153      .then((headers) => {
    154          assert_own_property(headers, 'sec-fetch-site');
    155          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
    156        });
    157  }, 'sec-fetch-site - Same-Origin -> Same Origin');
    158 
    159  promise_test((t) => {
    160    const key = '{{uuid()}}';
    161 
    162    return induceRequest(
    163        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite'], responseParams), t
    164      )
    165      .then(() => retrieve(key))
    166      .then((headers) => {
    167          assert_own_property(headers, 'sec-fetch-site');
    168          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    169        });
    170  }, 'sec-fetch-site - Same-Origin -> Same-Site');
    171 
    172  promise_test((t) => {
    173    const key = '{{uuid()}}';
    174 
    175    return induceRequest(
    176        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite'], responseParams), t
    177      )
    178      .then(() => retrieve(key))
    179      .then((headers) => {
    180          assert_own_property(headers, 'sec-fetch-site');
    181          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    182        });
    183  }, 'sec-fetch-site - Same-Origin -> Cross-Site');
    184 
    185  promise_test((t) => {
    186    const key = '{{uuid()}}';
    187 
    188    return induceRequest(
    189        makeRequestURL(key, ['httpsSameSite', 'httpsOrigin'], responseParams), t
    190      )
    191      .then(() => retrieve(key))
    192      .then((headers) => {
    193          assert_own_property(headers, 'sec-fetch-site');
    194          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    195        });
    196  }, 'sec-fetch-site - Same-Site -> Same Origin');
    197 
    198  promise_test((t) => {
    199    const key = '{{uuid()}}';
    200 
    201    return induceRequest(
    202        makeRequestURL(key, ['httpsSameSite', 'httpsSameSite'], responseParams), t
    203      )
    204      .then(() => retrieve(key))
    205      .then((headers) => {
    206          assert_own_property(headers, 'sec-fetch-site');
    207          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    208        });
    209  }, 'sec-fetch-site - Same-Site -> Same-Site');
    210 
    211  promise_test((t) => {
    212    const key = '{{uuid()}}';
    213 
    214    return induceRequest(
    215        makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite'], responseParams), t
    216      )
    217      .then(() => retrieve(key))
    218      .then((headers) => {
    219          assert_own_property(headers, 'sec-fetch-site');
    220          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    221        });
    222  }, 'sec-fetch-site - Same-Site -> Cross-Site');
    223 
    224  promise_test((t) => {
    225    const key = '{{uuid()}}';
    226 
    227    return induceRequest(
    228        makeRequestURL(key, ['httpsOrigin', 'httpOrigin', 'httpsOrigin'], responseParams), t
    229      )
    230      .then(() => retrieve(key))
    231      .then((headers) => {
    232          assert_own_property(headers, 'sec-fetch-site');
    233          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    234        });
    235  }, 'sec-fetch-site - HTTPS downgrade-upgrade');
    236 
    237  promise_test((t) => {
    238    const key = '{{uuid()}}';
    239 
    240    return induceRequest(
    241        makeRequestURL(key, [], responseParams), t
    242      )
    243      .then(() => retrieve(key))
    244      .then((headers) => {
    245          assert_own_property(headers, 'sec-fetch-mode');
    246          assert_array_equals(headers['sec-fetch-mode'], ['navigate']);
    247        });
    248  }, 'sec-fetch-mode');
    249 
    250  promise_test((t) => {
    251    const key = '{{uuid()}}';
    252 
    253    return induceRequest(
    254        makeRequestURL(key, [], responseParams), t
    255      )
    256      .then(() => retrieve(key))
    257      .then((headers) => {
    258          assert_own_property(headers, 'sec-fetch-dest');
    259          assert_array_equals(headers['sec-fetch-dest'], ['document']);
    260        });
    261  }, 'sec-fetch-dest');
    262 
    263  promise_test((t) => {
    264    const key = '{{uuid()}}';
    265 
    266    return induceRequest(
    267        makeRequestURL(key, [], responseParams), t
    268      )
    269      .then(() => retrieve(key))
    270      .then((headers) => {
    271          assert_not_own_property(headers, 'sec-fetch-user');
    272        });
    273  }, 'sec-fetch-user');
    274 
    275  promise_test((t) => {
    276    const key = '{{uuid()}}';
    277 
    278    return induceRequest(
    279        makeRequestURL(key, ['httpsCrossSite'], responseParams), t
    280      )
    281      .then(() => retrieve(key))
    282      .then((headers) => {
    283          assert_not_own_property(headers, 'sec-fetch-storage-access');
    284        });
    285  }, 'sec-fetch-storage-access - Cross-site');
    286 
    287  promise_test((t) => {
    288    const key = '{{uuid()}}';
    289 
    290    return induceRequest(
    291        makeRequestURL(key, ['httpsSameSite'], responseParams), t
    292      )
    293      .then(() => retrieve(key))
    294      .then((headers) => {
    295          assert_not_own_property(headers, 'sec-fetch-storage-access');
    296        });
    297  }, 'sec-fetch-storage-access - Same site');
    298  </script>
    299  </body>
    300 </html>