tor-browser

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

element-picture.sub.html (3336B)


      1 <!DOCTYPE html>
      2 <!--
      3 [%provenance%]
      4 -->
      5 <html lang="en">
      6  <meta charset="utf-8">
      7  <title>HTTP headers on request for HTML "picture" element source</title>
      8  <script src="/resources/testharness.js"></script>
      9  <script src="/resources/testharnessreport.js"></script>
     10  <script src="/fetch/metadata/resources/helper.sub.js"></script>
     11  <body>
     12  <script>
     13  'use strict';
     14 
     15  function induceRequest(url, sourceEl, sourceAttr, attributes) {
     16    const picture = document.createElement('picture');
     17    const els = {
     18      img: document.createElement('img'),
     19      source: document.createElement('source')
     20    };
     21    picture.appendChild(els.source);
     22    picture.appendChild(els.img);
     23    document.body.appendChild(picture);
     24 
     25    for (const [ name, value ] of Object.entries(attributes)) {
     26      els.img.setAttribute(name, value);
     27    }
     28 
     29    return new Promise((resolve) => {
     30        els[sourceEl].setAttribute(sourceAttr, url);
     31        els.img.onload = els.img.onerror = resolve;
     32      });
     33  }
     34 
     35  {%- for subtest in subtests %}
     36 
     37  promise_test(() => {
     38    const key = '{{uuid()}}';
     39 
     40    return induceRequest(
     41        makeRequestURL(key, [% subtest.origins %]),
     42        'img',
     43        'src',
     44        [%subtest.elementAttrs | default({}) | tojson%]
     45      )
     46      .then(() => retrieve(key))
     47      .then((headers) => {
     48        {%- if subtest.expected == none %}
     49          assert_not_own_property(headers, '[%subtest.headerName%]');
     50        {%- else %}
     51          assert_own_property(headers, '[%subtest.headerName%]');
     52          assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']);
     53        {%- endif %}
     54        });
     55  }, '[%subtest.headerName%] - img[src] - [%subtest.description | pad("end", ", ")%][%subtest.elementAttrs | collection("attributes")%]');
     56 
     57  promise_test(() => {
     58    const key = '{{uuid()}}';
     59 
     60    return induceRequest(
     61        makeRequestURL(key, [% subtest.origins %]),
     62        'img',
     63        'srcset',
     64        [%subtest.elementAttrs | default({}) | tojson%]
     65      )
     66      .then(() => retrieve(key))
     67      .then((headers) => {
     68        {%- if subtest.expected == none %}
     69          assert_not_own_property(headers, '[%subtest.headerName%]');
     70        {%- else %}
     71          assert_own_property(headers, '[%subtest.headerName%]');
     72          assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']);
     73        {%- endif %}
     74        });
     75  }, '[%subtest.headerName%] - img[srcset] - [%subtest.description | pad("end", ", ")%][%subtest.elementAttrs | collection("attributes")%]');
     76 
     77  promise_test(() => {
     78    const key = '{{uuid()}}';
     79 
     80    return induceRequest(
     81        makeRequestURL(key, [% subtest.origins %]),
     82        'source',
     83        'srcset',
     84        [%subtest.elementAttrs | default({}) | tojson%]
     85      )
     86      .then(() => retrieve(key))
     87      .then((headers) => {
     88        {%- if subtest.expected == none %}
     89          assert_not_own_property(headers, '[%subtest.headerName%]');
     90        {%- else %}
     91          assert_own_property(headers, '[%subtest.headerName%]');
     92          assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']);
     93        {%- endif %}
     94        });
     95  }, '[%subtest.headerName%] - source[srcset] - [%subtest.description | pad("end", ", ")%][%subtest.elementAttrs | collection("attributes")%]');
     96 
     97  {%- endfor %}
     98  </script>
     99  </body>
    100 </html>