tor-browser

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

element-picture.https.sub.html (31716B)


      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-picture.sub.html
      7 -->
      8 <html lang="en">
      9  <meta charset="utf-8">
     10  <title>HTTP headers on request for HTML "picture" element source</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, sourceEl, sourceAttr, attributes) {
     19    const picture = document.createElement('picture');
     20    const els = {
     21      img: document.createElement('img'),
     22      source: document.createElement('source')
     23    };
     24    picture.appendChild(els.source);
     25    picture.appendChild(els.img);
     26    document.body.appendChild(picture);
     27 
     28    for (const [ name, value ] of Object.entries(attributes)) {
     29      els.img.setAttribute(name, value);
     30    }
     31 
     32    return new Promise((resolve) => {
     33        els[sourceEl].setAttribute(sourceAttr, url);
     34        els.img.onload = els.img.onerror = resolve;
     35      });
     36  }
     37 
     38  promise_test(() => {
     39    const key = '{{uuid()}}';
     40 
     41    return induceRequest(
     42        makeRequestURL(key, ['httpsOrigin']),
     43        'img',
     44        'src',
     45        {}
     46      )
     47      .then(() => retrieve(key))
     48      .then((headers) => {
     49          assert_own_property(headers, 'sec-fetch-site');
     50          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
     51        });
     52  }, 'sec-fetch-site - img[src] - Same origin, no attributes');
     53 
     54  promise_test(() => {
     55    const key = '{{uuid()}}';
     56 
     57    return induceRequest(
     58        makeRequestURL(key, ['httpsOrigin']),
     59        'img',
     60        'srcset',
     61        {}
     62      )
     63      .then(() => retrieve(key))
     64      .then((headers) => {
     65          assert_own_property(headers, 'sec-fetch-site');
     66          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
     67        });
     68  }, 'sec-fetch-site - img[srcset] - Same origin, no attributes');
     69 
     70  promise_test(() => {
     71    const key = '{{uuid()}}';
     72 
     73    return induceRequest(
     74        makeRequestURL(key, ['httpsOrigin']),
     75        'source',
     76        'srcset',
     77        {}
     78      )
     79      .then(() => retrieve(key))
     80      .then((headers) => {
     81          assert_own_property(headers, 'sec-fetch-site');
     82          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
     83        });
     84  }, 'sec-fetch-site - source[srcset] - Same origin, no attributes');
     85 
     86  promise_test(() => {
     87    const key = '{{uuid()}}';
     88 
     89    return induceRequest(
     90        makeRequestURL(key, ['httpsCrossSite']),
     91        'img',
     92        'src',
     93        {}
     94      )
     95      .then(() => retrieve(key))
     96      .then((headers) => {
     97          assert_own_property(headers, 'sec-fetch-site');
     98          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
     99        });
    100  }, 'sec-fetch-site - img[src] - Cross-site, no attributes');
    101 
    102  promise_test(() => {
    103    const key = '{{uuid()}}';
    104 
    105    return induceRequest(
    106        makeRequestURL(key, ['httpsCrossSite']),
    107        'img',
    108        'srcset',
    109        {}
    110      )
    111      .then(() => retrieve(key))
    112      .then((headers) => {
    113          assert_own_property(headers, 'sec-fetch-site');
    114          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    115        });
    116  }, 'sec-fetch-site - img[srcset] - Cross-site, no attributes');
    117 
    118  promise_test(() => {
    119    const key = '{{uuid()}}';
    120 
    121    return induceRequest(
    122        makeRequestURL(key, ['httpsCrossSite']),
    123        'source',
    124        'srcset',
    125        {}
    126      )
    127      .then(() => retrieve(key))
    128      .then((headers) => {
    129          assert_own_property(headers, 'sec-fetch-site');
    130          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    131        });
    132  }, 'sec-fetch-site - source[srcset] - Cross-site, no attributes');
    133 
    134  promise_test(() => {
    135    const key = '{{uuid()}}';
    136 
    137    return induceRequest(
    138        makeRequestURL(key, ['httpsSameSite']),
    139        'img',
    140        'src',
    141        {}
    142      )
    143      .then(() => retrieve(key))
    144      .then((headers) => {
    145          assert_own_property(headers, 'sec-fetch-site');
    146          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    147        });
    148  }, 'sec-fetch-site - img[src] - Same site, no attributes');
    149 
    150  promise_test(() => {
    151    const key = '{{uuid()}}';
    152 
    153    return induceRequest(
    154        makeRequestURL(key, ['httpsSameSite']),
    155        'img',
    156        'srcset',
    157        {}
    158      )
    159      .then(() => retrieve(key))
    160      .then((headers) => {
    161          assert_own_property(headers, 'sec-fetch-site');
    162          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    163        });
    164  }, 'sec-fetch-site - img[srcset] - Same site, no attributes');
    165 
    166  promise_test(() => {
    167    const key = '{{uuid()}}';
    168 
    169    return induceRequest(
    170        makeRequestURL(key, ['httpsSameSite']),
    171        'source',
    172        'srcset',
    173        {}
    174      )
    175      .then(() => retrieve(key))
    176      .then((headers) => {
    177          assert_own_property(headers, 'sec-fetch-site');
    178          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    179        });
    180  }, 'sec-fetch-site - source[srcset] - Same site, no attributes');
    181 
    182  promise_test(() => {
    183    const key = '{{uuid()}}';
    184 
    185    return induceRequest(
    186        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin']),
    187        'img',
    188        'src',
    189        {}
    190      )
    191      .then(() => retrieve(key))
    192      .then((headers) => {
    193          assert_own_property(headers, 'sec-fetch-site');
    194          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    195        });
    196  }, 'sec-fetch-site - img[src] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes');
    197 
    198  promise_test(() => {
    199    const key = '{{uuid()}}';
    200 
    201    return induceRequest(
    202        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin']),
    203        'img',
    204        'srcset',
    205        {}
    206      )
    207      .then(() => retrieve(key))
    208      .then((headers) => {
    209          assert_own_property(headers, 'sec-fetch-site');
    210          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    211        });
    212  }, 'sec-fetch-site - img[srcset] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes');
    213 
    214  promise_test(() => {
    215    const key = '{{uuid()}}';
    216 
    217    return induceRequest(
    218        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin']),
    219        'source',
    220        'srcset',
    221        {}
    222      )
    223      .then(() => retrieve(key))
    224      .then((headers) => {
    225          assert_own_property(headers, 'sec-fetch-site');
    226          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    227        });
    228  }, 'sec-fetch-site - source[srcset] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes');
    229 
    230  promise_test(() => {
    231    const key = '{{uuid()}}';
    232 
    233    return induceRequest(
    234        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin']),
    235        'img',
    236        'src',
    237        {}
    238      )
    239      .then(() => retrieve(key))
    240      .then((headers) => {
    241          assert_own_property(headers, 'sec-fetch-site');
    242          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    243        });
    244  }, 'sec-fetch-site - img[src] - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes');
    245 
    246  promise_test(() => {
    247    const key = '{{uuid()}}';
    248 
    249    return induceRequest(
    250        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin']),
    251        'img',
    252        'srcset',
    253        {}
    254      )
    255      .then(() => retrieve(key))
    256      .then((headers) => {
    257          assert_own_property(headers, 'sec-fetch-site');
    258          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    259        });
    260  }, 'sec-fetch-site - img[srcset] - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes');
    261 
    262  promise_test(() => {
    263    const key = '{{uuid()}}';
    264 
    265    return induceRequest(
    266        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin']),
    267        'source',
    268        'srcset',
    269        {}
    270      )
    271      .then(() => retrieve(key))
    272      .then((headers) => {
    273          assert_own_property(headers, 'sec-fetch-site');
    274          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    275        });
    276  }, 'sec-fetch-site - source[srcset] - Same-Origin -> Same-Site -> Same-Origin redirect, no attributes');
    277 
    278  promise_test(() => {
    279    const key = '{{uuid()}}';
    280 
    281    return induceRequest(
    282        makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin']),
    283        'img',
    284        'src',
    285        {}
    286      )
    287      .then(() => retrieve(key))
    288      .then((headers) => {
    289          assert_own_property(headers, 'sec-fetch-site');
    290          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    291        });
    292  }, 'sec-fetch-site - img[src] - Cross-Site -> Same Origin, no attributes');
    293 
    294  promise_test(() => {
    295    const key = '{{uuid()}}';
    296 
    297    return induceRequest(
    298        makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin']),
    299        'img',
    300        'srcset',
    301        {}
    302      )
    303      .then(() => retrieve(key))
    304      .then((headers) => {
    305          assert_own_property(headers, 'sec-fetch-site');
    306          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    307        });
    308  }, 'sec-fetch-site - img[srcset] - Cross-Site -> Same Origin, no attributes');
    309 
    310  promise_test(() => {
    311    const key = '{{uuid()}}';
    312 
    313    return induceRequest(
    314        makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin']),
    315        'source',
    316        'srcset',
    317        {}
    318      )
    319      .then(() => retrieve(key))
    320      .then((headers) => {
    321          assert_own_property(headers, 'sec-fetch-site');
    322          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    323        });
    324  }, 'sec-fetch-site - source[srcset] - Cross-Site -> Same Origin, no attributes');
    325 
    326  promise_test(() => {
    327    const key = '{{uuid()}}';
    328 
    329    return induceRequest(
    330        makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite']),
    331        'img',
    332        'src',
    333        {}
    334      )
    335      .then(() => retrieve(key))
    336      .then((headers) => {
    337          assert_own_property(headers, 'sec-fetch-site');
    338          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    339        });
    340  }, 'sec-fetch-site - img[src] - Cross-Site -> Same-Site, no attributes');
    341 
    342  promise_test(() => {
    343    const key = '{{uuid()}}';
    344 
    345    return induceRequest(
    346        makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite']),
    347        'img',
    348        'srcset',
    349        {}
    350      )
    351      .then(() => retrieve(key))
    352      .then((headers) => {
    353          assert_own_property(headers, 'sec-fetch-site');
    354          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    355        });
    356  }, 'sec-fetch-site - img[srcset] - Cross-Site -> Same-Site, no attributes');
    357 
    358  promise_test(() => {
    359    const key = '{{uuid()}}';
    360 
    361    return induceRequest(
    362        makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite']),
    363        'source',
    364        'srcset',
    365        {}
    366      )
    367      .then(() => retrieve(key))
    368      .then((headers) => {
    369          assert_own_property(headers, 'sec-fetch-site');
    370          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    371        });
    372  }, 'sec-fetch-site - source[srcset] - Cross-Site -> Same-Site, no attributes');
    373 
    374  promise_test(() => {
    375    const key = '{{uuid()}}';
    376 
    377    return induceRequest(
    378        makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite']),
    379        'img',
    380        'src',
    381        {}
    382      )
    383      .then(() => retrieve(key))
    384      .then((headers) => {
    385          assert_own_property(headers, 'sec-fetch-site');
    386          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    387        });
    388  }, 'sec-fetch-site - img[src] - Cross-Site -> Cross-Site, no attributes');
    389 
    390  promise_test(() => {
    391    const key = '{{uuid()}}';
    392 
    393    return induceRequest(
    394        makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite']),
    395        'img',
    396        'srcset',
    397        {}
    398      )
    399      .then(() => retrieve(key))
    400      .then((headers) => {
    401          assert_own_property(headers, 'sec-fetch-site');
    402          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    403        });
    404  }, 'sec-fetch-site - img[srcset] - Cross-Site -> Cross-Site, no attributes');
    405 
    406  promise_test(() => {
    407    const key = '{{uuid()}}';
    408 
    409    return induceRequest(
    410        makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite']),
    411        'source',
    412        'srcset',
    413        {}
    414      )
    415      .then(() => retrieve(key))
    416      .then((headers) => {
    417          assert_own_property(headers, 'sec-fetch-site');
    418          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    419        });
    420  }, 'sec-fetch-site - source[srcset] - Cross-Site -> Cross-Site, no attributes');
    421 
    422  promise_test(() => {
    423    const key = '{{uuid()}}';
    424 
    425    return induceRequest(
    426        makeRequestURL(key, ['httpsOrigin', 'httpsOrigin']),
    427        'img',
    428        'src',
    429        {}
    430      )
    431      .then(() => retrieve(key))
    432      .then((headers) => {
    433          assert_own_property(headers, 'sec-fetch-site');
    434          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
    435        });
    436  }, 'sec-fetch-site - img[src] - Same-Origin -> Same Origin, no attributes');
    437 
    438  promise_test(() => {
    439    const key = '{{uuid()}}';
    440 
    441    return induceRequest(
    442        makeRequestURL(key, ['httpsOrigin', 'httpsOrigin']),
    443        'img',
    444        'srcset',
    445        {}
    446      )
    447      .then(() => retrieve(key))
    448      .then((headers) => {
    449          assert_own_property(headers, 'sec-fetch-site');
    450          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
    451        });
    452  }, 'sec-fetch-site - img[srcset] - Same-Origin -> Same Origin, no attributes');
    453 
    454  promise_test(() => {
    455    const key = '{{uuid()}}';
    456 
    457    return induceRequest(
    458        makeRequestURL(key, ['httpsOrigin', 'httpsOrigin']),
    459        'source',
    460        'srcset',
    461        {}
    462      )
    463      .then(() => retrieve(key))
    464      .then((headers) => {
    465          assert_own_property(headers, 'sec-fetch-site');
    466          assert_array_equals(headers['sec-fetch-site'], ['same-origin']);
    467        });
    468  }, 'sec-fetch-site - source[srcset] - Same-Origin -> Same Origin, no attributes');
    469 
    470  promise_test(() => {
    471    const key = '{{uuid()}}';
    472 
    473    return induceRequest(
    474        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite']),
    475        'img',
    476        'src',
    477        {}
    478      )
    479      .then(() => retrieve(key))
    480      .then((headers) => {
    481          assert_own_property(headers, 'sec-fetch-site');
    482          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    483        });
    484  }, 'sec-fetch-site - img[src] - Same-Origin -> Same-Site, no attributes');
    485 
    486  promise_test(() => {
    487    const key = '{{uuid()}}';
    488 
    489    return induceRequest(
    490        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite']),
    491        'img',
    492        'srcset',
    493        {}
    494      )
    495      .then(() => retrieve(key))
    496      .then((headers) => {
    497          assert_own_property(headers, 'sec-fetch-site');
    498          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    499        });
    500  }, 'sec-fetch-site - img[srcset] - Same-Origin -> Same-Site, no attributes');
    501 
    502  promise_test(() => {
    503    const key = '{{uuid()}}';
    504 
    505    return induceRequest(
    506        makeRequestURL(key, ['httpsOrigin', 'httpsSameSite']),
    507        'source',
    508        'srcset',
    509        {}
    510      )
    511      .then(() => retrieve(key))
    512      .then((headers) => {
    513          assert_own_property(headers, 'sec-fetch-site');
    514          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    515        });
    516  }, 'sec-fetch-site - source[srcset] - Same-Origin -> Same-Site, no attributes');
    517 
    518  promise_test(() => {
    519    const key = '{{uuid()}}';
    520 
    521    return induceRequest(
    522        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite']),
    523        'img',
    524        'src',
    525        {}
    526      )
    527      .then(() => retrieve(key))
    528      .then((headers) => {
    529          assert_own_property(headers, 'sec-fetch-site');
    530          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    531        });
    532  }, 'sec-fetch-site - img[src] - Same-Origin -> Cross-Site, no attributes');
    533 
    534  promise_test(() => {
    535    const key = '{{uuid()}}';
    536 
    537    return induceRequest(
    538        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite']),
    539        'img',
    540        'srcset',
    541        {}
    542      )
    543      .then(() => retrieve(key))
    544      .then((headers) => {
    545          assert_own_property(headers, 'sec-fetch-site');
    546          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    547        });
    548  }, 'sec-fetch-site - img[srcset] - Same-Origin -> Cross-Site, no attributes');
    549 
    550  promise_test(() => {
    551    const key = '{{uuid()}}';
    552 
    553    return induceRequest(
    554        makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite']),
    555        'source',
    556        'srcset',
    557        {}
    558      )
    559      .then(() => retrieve(key))
    560      .then((headers) => {
    561          assert_own_property(headers, 'sec-fetch-site');
    562          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    563        });
    564  }, 'sec-fetch-site - source[srcset] - Same-Origin -> Cross-Site, no attributes');
    565 
    566  promise_test(() => {
    567    const key = '{{uuid()}}';
    568 
    569    return induceRequest(
    570        makeRequestURL(key, ['httpsSameSite', 'httpsOrigin']),
    571        'img',
    572        'src',
    573        {}
    574      )
    575      .then(() => retrieve(key))
    576      .then((headers) => {
    577          assert_own_property(headers, 'sec-fetch-site');
    578          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    579        });
    580  }, 'sec-fetch-site - img[src] - Same-Site -> Same Origin, no attributes');
    581 
    582  promise_test(() => {
    583    const key = '{{uuid()}}';
    584 
    585    return induceRequest(
    586        makeRequestURL(key, ['httpsSameSite', 'httpsOrigin']),
    587        'img',
    588        'srcset',
    589        {}
    590      )
    591      .then(() => retrieve(key))
    592      .then((headers) => {
    593          assert_own_property(headers, 'sec-fetch-site');
    594          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    595        });
    596  }, 'sec-fetch-site - img[srcset] - Same-Site -> Same Origin, no attributes');
    597 
    598  promise_test(() => {
    599    const key = '{{uuid()}}';
    600 
    601    return induceRequest(
    602        makeRequestURL(key, ['httpsSameSite', 'httpsOrigin']),
    603        'source',
    604        'srcset',
    605        {}
    606      )
    607      .then(() => retrieve(key))
    608      .then((headers) => {
    609          assert_own_property(headers, 'sec-fetch-site');
    610          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    611        });
    612  }, 'sec-fetch-site - source[srcset] - Same-Site -> Same Origin, no attributes');
    613 
    614  promise_test(() => {
    615    const key = '{{uuid()}}';
    616 
    617    return induceRequest(
    618        makeRequestURL(key, ['httpsSameSite', 'httpsSameSite']),
    619        'img',
    620        'src',
    621        {}
    622      )
    623      .then(() => retrieve(key))
    624      .then((headers) => {
    625          assert_own_property(headers, 'sec-fetch-site');
    626          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    627        });
    628  }, 'sec-fetch-site - img[src] - Same-Site -> Same-Site, no attributes');
    629 
    630  promise_test(() => {
    631    const key = '{{uuid()}}';
    632 
    633    return induceRequest(
    634        makeRequestURL(key, ['httpsSameSite', 'httpsSameSite']),
    635        'img',
    636        'srcset',
    637        {}
    638      )
    639      .then(() => retrieve(key))
    640      .then((headers) => {
    641          assert_own_property(headers, 'sec-fetch-site');
    642          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    643        });
    644  }, 'sec-fetch-site - img[srcset] - Same-Site -> Same-Site, no attributes');
    645 
    646  promise_test(() => {
    647    const key = '{{uuid()}}';
    648 
    649    return induceRequest(
    650        makeRequestURL(key, ['httpsSameSite', 'httpsSameSite']),
    651        'source',
    652        'srcset',
    653        {}
    654      )
    655      .then(() => retrieve(key))
    656      .then((headers) => {
    657          assert_own_property(headers, 'sec-fetch-site');
    658          assert_array_equals(headers['sec-fetch-site'], ['same-site']);
    659        });
    660  }, 'sec-fetch-site - source[srcset] - Same-Site -> Same-Site, no attributes');
    661 
    662  promise_test(() => {
    663    const key = '{{uuid()}}';
    664 
    665    return induceRequest(
    666        makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite']),
    667        'img',
    668        'src',
    669        {}
    670      )
    671      .then(() => retrieve(key))
    672      .then((headers) => {
    673          assert_own_property(headers, 'sec-fetch-site');
    674          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    675        });
    676  }, 'sec-fetch-site - img[src] - Same-Site -> Cross-Site, no attributes');
    677 
    678  promise_test(() => {
    679    const key = '{{uuid()}}';
    680 
    681    return induceRequest(
    682        makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite']),
    683        'img',
    684        'srcset',
    685        {}
    686      )
    687      .then(() => retrieve(key))
    688      .then((headers) => {
    689          assert_own_property(headers, 'sec-fetch-site');
    690          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    691        });
    692  }, 'sec-fetch-site - img[srcset] - Same-Site -> Cross-Site, no attributes');
    693 
    694  promise_test(() => {
    695    const key = '{{uuid()}}';
    696 
    697    return induceRequest(
    698        makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite']),
    699        'source',
    700        'srcset',
    701        {}
    702      )
    703      .then(() => retrieve(key))
    704      .then((headers) => {
    705          assert_own_property(headers, 'sec-fetch-site');
    706          assert_array_equals(headers['sec-fetch-site'], ['cross-site']);
    707        });
    708  }, 'sec-fetch-site - source[srcset] - Same-Site -> Cross-Site, no attributes');
    709 
    710  promise_test(() => {
    711    const key = '{{uuid()}}';
    712 
    713    return induceRequest(
    714        makeRequestURL(key, []),
    715        'img',
    716        'src',
    717        {}
    718      )
    719      .then(() => retrieve(key))
    720      .then((headers) => {
    721          assert_own_property(headers, 'sec-fetch-mode');
    722          assert_array_equals(headers['sec-fetch-mode'], ['no-cors']);
    723        });
    724  }, 'sec-fetch-mode - img[src] - no attributes');
    725 
    726  promise_test(() => {
    727    const key = '{{uuid()}}';
    728 
    729    return induceRequest(
    730        makeRequestURL(key, []),
    731        'img',
    732        'srcset',
    733        {}
    734      )
    735      .then(() => retrieve(key))
    736      .then((headers) => {
    737          assert_own_property(headers, 'sec-fetch-mode');
    738          assert_array_equals(headers['sec-fetch-mode'], ['no-cors']);
    739        });
    740  }, 'sec-fetch-mode - img[srcset] - no attributes');
    741 
    742  promise_test(() => {
    743    const key = '{{uuid()}}';
    744 
    745    return induceRequest(
    746        makeRequestURL(key, []),
    747        'source',
    748        'srcset',
    749        {}
    750      )
    751      .then(() => retrieve(key))
    752      .then((headers) => {
    753          assert_own_property(headers, 'sec-fetch-mode');
    754          assert_array_equals(headers['sec-fetch-mode'], ['no-cors']);
    755        });
    756  }, 'sec-fetch-mode - source[srcset] - no attributes');
    757 
    758  promise_test(() => {
    759    const key = '{{uuid()}}';
    760 
    761    return induceRequest(
    762        makeRequestURL(key, []),
    763        'img',
    764        'src',
    765        {"crossorigin": ""}
    766      )
    767      .then(() => retrieve(key))
    768      .then((headers) => {
    769          assert_own_property(headers, 'sec-fetch-mode');
    770          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    771        });
    772  }, 'sec-fetch-mode - img[src] - attributes: crossorigin');
    773 
    774  promise_test(() => {
    775    const key = '{{uuid()}}';
    776 
    777    return induceRequest(
    778        makeRequestURL(key, []),
    779        'img',
    780        'srcset',
    781        {"crossorigin": ""}
    782      )
    783      .then(() => retrieve(key))
    784      .then((headers) => {
    785          assert_own_property(headers, 'sec-fetch-mode');
    786          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    787        });
    788  }, 'sec-fetch-mode - img[srcset] - attributes: crossorigin');
    789 
    790  promise_test(() => {
    791    const key = '{{uuid()}}';
    792 
    793    return induceRequest(
    794        makeRequestURL(key, []),
    795        'source',
    796        'srcset',
    797        {"crossorigin": ""}
    798      )
    799      .then(() => retrieve(key))
    800      .then((headers) => {
    801          assert_own_property(headers, 'sec-fetch-mode');
    802          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    803        });
    804  }, 'sec-fetch-mode - source[srcset] - attributes: crossorigin');
    805 
    806  promise_test(() => {
    807    const key = '{{uuid()}}';
    808 
    809    return induceRequest(
    810        makeRequestURL(key, []),
    811        'img',
    812        'src',
    813        {"crossorigin": "anonymous"}
    814      )
    815      .then(() => retrieve(key))
    816      .then((headers) => {
    817          assert_own_property(headers, 'sec-fetch-mode');
    818          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    819        });
    820  }, 'sec-fetch-mode - img[src] - attributes: crossorigin=anonymous');
    821 
    822  promise_test(() => {
    823    const key = '{{uuid()}}';
    824 
    825    return induceRequest(
    826        makeRequestURL(key, []),
    827        'img',
    828        'srcset',
    829        {"crossorigin": "anonymous"}
    830      )
    831      .then(() => retrieve(key))
    832      .then((headers) => {
    833          assert_own_property(headers, 'sec-fetch-mode');
    834          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    835        });
    836  }, 'sec-fetch-mode - img[srcset] - attributes: crossorigin=anonymous');
    837 
    838  promise_test(() => {
    839    const key = '{{uuid()}}';
    840 
    841    return induceRequest(
    842        makeRequestURL(key, []),
    843        'source',
    844        'srcset',
    845        {"crossorigin": "anonymous"}
    846      )
    847      .then(() => retrieve(key))
    848      .then((headers) => {
    849          assert_own_property(headers, 'sec-fetch-mode');
    850          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    851        });
    852  }, 'sec-fetch-mode - source[srcset] - attributes: crossorigin=anonymous');
    853 
    854  promise_test(() => {
    855    const key = '{{uuid()}}';
    856 
    857    return induceRequest(
    858        makeRequestURL(key, []),
    859        'img',
    860        'src',
    861        {"crossorigin": "use-credentials"}
    862      )
    863      .then(() => retrieve(key))
    864      .then((headers) => {
    865          assert_own_property(headers, 'sec-fetch-mode');
    866          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    867        });
    868  }, 'sec-fetch-mode - img[src] - attributes: crossorigin=use-credentials');
    869 
    870  promise_test(() => {
    871    const key = '{{uuid()}}';
    872 
    873    return induceRequest(
    874        makeRequestURL(key, []),
    875        'img',
    876        'srcset',
    877        {"crossorigin": "use-credentials"}
    878      )
    879      .then(() => retrieve(key))
    880      .then((headers) => {
    881          assert_own_property(headers, 'sec-fetch-mode');
    882          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    883        });
    884  }, 'sec-fetch-mode - img[srcset] - attributes: crossorigin=use-credentials');
    885 
    886  promise_test(() => {
    887    const key = '{{uuid()}}';
    888 
    889    return induceRequest(
    890        makeRequestURL(key, []),
    891        'source',
    892        'srcset',
    893        {"crossorigin": "use-credentials"}
    894      )
    895      .then(() => retrieve(key))
    896      .then((headers) => {
    897          assert_own_property(headers, 'sec-fetch-mode');
    898          assert_array_equals(headers['sec-fetch-mode'], ['cors']);
    899        });
    900  }, 'sec-fetch-mode - source[srcset] - attributes: crossorigin=use-credentials');
    901 
    902  promise_test(() => {
    903    const key = '{{uuid()}}';
    904 
    905    return induceRequest(
    906        makeRequestURL(key, []),
    907        'img',
    908        'src',
    909        {}
    910      )
    911      .then(() => retrieve(key))
    912      .then((headers) => {
    913          assert_own_property(headers, 'sec-fetch-dest');
    914          assert_array_equals(headers['sec-fetch-dest'], ['image']);
    915        });
    916  }, 'sec-fetch-dest - img[src] - no attributes');
    917 
    918  promise_test(() => {
    919    const key = '{{uuid()}}';
    920 
    921    return induceRequest(
    922        makeRequestURL(key, []),
    923        'img',
    924        'srcset',
    925        {}
    926      )
    927      .then(() => retrieve(key))
    928      .then((headers) => {
    929          assert_own_property(headers, 'sec-fetch-dest');
    930          assert_array_equals(headers['sec-fetch-dest'], ['image']);
    931        });
    932  }, 'sec-fetch-dest - img[srcset] - no attributes');
    933 
    934  promise_test(() => {
    935    const key = '{{uuid()}}';
    936 
    937    return induceRequest(
    938        makeRequestURL(key, []),
    939        'source',
    940        'srcset',
    941        {}
    942      )
    943      .then(() => retrieve(key))
    944      .then((headers) => {
    945          assert_own_property(headers, 'sec-fetch-dest');
    946          assert_array_equals(headers['sec-fetch-dest'], ['image']);
    947        });
    948  }, 'sec-fetch-dest - source[srcset] - no attributes');
    949 
    950  promise_test(() => {
    951    const key = '{{uuid()}}';
    952 
    953    return induceRequest(
    954        makeRequestURL(key, []),
    955        'img',
    956        'src',
    957        {}
    958      )
    959      .then(() => retrieve(key))
    960      .then((headers) => {
    961          assert_not_own_property(headers, 'sec-fetch-user');
    962        });
    963  }, 'sec-fetch-user - img[src] - no attributes');
    964 
    965  promise_test(() => {
    966    const key = '{{uuid()}}';
    967 
    968    return induceRequest(
    969        makeRequestURL(key, []),
    970        'img',
    971        'srcset',
    972        {}
    973      )
    974      .then(() => retrieve(key))
    975      .then((headers) => {
    976          assert_not_own_property(headers, 'sec-fetch-user');
    977        });
    978  }, 'sec-fetch-user - img[srcset] - no attributes');
    979 
    980  promise_test(() => {
    981    const key = '{{uuid()}}';
    982 
    983    return induceRequest(
    984        makeRequestURL(key, []),
    985        'source',
    986        'srcset',
    987        {}
    988      )
    989      .then(() => retrieve(key))
    990      .then((headers) => {
    991          assert_not_own_property(headers, 'sec-fetch-user');
    992        });
    993  }, 'sec-fetch-user - source[srcset] - no attributes');
    994 
    995  promise_test(() => {
    996    const key = '{{uuid()}}';
    997 
    998    return induceRequest(
    999        makeRequestURL(key, ['httpsCrossSite']),
   1000        'img',
   1001        'src',
   1002        {}
   1003      )
   1004      .then(() => retrieve(key))
   1005      .then((headers) => {
   1006          assert_own_property(headers, 'sec-fetch-storage-access');
   1007          assert_array_equals(headers['sec-fetch-storage-access'], ['none']);
   1008        });
   1009  }, 'sec-fetch-storage-access - img[src] - Cross-site, no attributes');
   1010 
   1011  promise_test(() => {
   1012    const key = '{{uuid()}}';
   1013 
   1014    return induceRequest(
   1015        makeRequestURL(key, ['httpsCrossSite']),
   1016        'img',
   1017        'srcset',
   1018        {}
   1019      )
   1020      .then(() => retrieve(key))
   1021      .then((headers) => {
   1022          assert_own_property(headers, 'sec-fetch-storage-access');
   1023          assert_array_equals(headers['sec-fetch-storage-access'], ['none']);
   1024        });
   1025  }, 'sec-fetch-storage-access - img[srcset] - Cross-site, no attributes');
   1026 
   1027  promise_test(() => {
   1028    const key = '{{uuid()}}';
   1029 
   1030    return induceRequest(
   1031        makeRequestURL(key, ['httpsCrossSite']),
   1032        'source',
   1033        'srcset',
   1034        {}
   1035      )
   1036      .then(() => retrieve(key))
   1037      .then((headers) => {
   1038          assert_own_property(headers, 'sec-fetch-storage-access');
   1039          assert_array_equals(headers['sec-fetch-storage-access'], ['none']);
   1040        });
   1041  }, 'sec-fetch-storage-access - source[srcset] - Cross-site, no attributes');
   1042 
   1043  promise_test(() => {
   1044    const key = '{{uuid()}}';
   1045 
   1046    return induceRequest(
   1047        makeRequestURL(key, ['httpsSameSite']),
   1048        'img',
   1049        'src',
   1050        {}
   1051      )
   1052      .then(() => retrieve(key))
   1053      .then((headers) => {
   1054          assert_not_own_property(headers, 'sec-fetch-storage-access');
   1055        });
   1056  }, 'sec-fetch-storage-access - img[src] - Same site, no attributes');
   1057 
   1058  promise_test(() => {
   1059    const key = '{{uuid()}}';
   1060 
   1061    return induceRequest(
   1062        makeRequestURL(key, ['httpsSameSite']),
   1063        'img',
   1064        'srcset',
   1065        {}
   1066      )
   1067      .then(() => retrieve(key))
   1068      .then((headers) => {
   1069          assert_not_own_property(headers, 'sec-fetch-storage-access');
   1070        });
   1071  }, 'sec-fetch-storage-access - img[srcset] - Same site, no attributes');
   1072 
   1073  promise_test(() => {
   1074    const key = '{{uuid()}}';
   1075 
   1076    return induceRequest(
   1077        makeRequestURL(key, ['httpsSameSite']),
   1078        'source',
   1079        'srcset',
   1080        {}
   1081      )
   1082      .then(() => retrieve(key))
   1083      .then((headers) => {
   1084          assert_not_own_property(headers, 'sec-fetch-storage-access');
   1085        });
   1086  }, 'sec-fetch-storage-access - source[srcset] - Same site, no attributes');
   1087  </script>
   1088  </body>
   1089 </html>