tor-browser

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

serviceworker.https.sub.html (2542B)


      1 <!DOCTYPE html>
      2 <!--
      3 [%provenance%]
      4 -->
      5 <!DOCTYPE html>
      6 <html lang="en">
      7  <meta charset="utf-8">
      8  <title>HTTP headers on request for Service Workers</title>
      9  <script src="/resources/testharness.js"></script>
     10  <script src="/resources/testharnessreport.js"></script>
     11  <script src="/fetch/metadata/resources/helper.sub.js"></script>
     12  <body>
     13  <script>
     14  'use strict';
     15 
     16  function induceRequest(t, url, options, event, clear) {
     17    // Register a service worker and check the request header.
     18    return navigator.serviceWorker.register(url, options)
     19      .then((registration) => {
     20        t.add_cleanup(() => registration.unregister());
     21        if (event === 'register') {
     22          return;
     23        }
     24        return clear().then(() => registration.update());
     25      });
     26  }
     27 
     28  {%- for subtest in subtests %}
     29  {%- set origin = subtest.origins[0]|default('httpsOrigin') %}
     30  {%- if origin == 'httpsOrigin' or not origin %}
     31 
     32  promise_test((t) => {
     33    const key = '{{uuid()}}';
     34    const url = makeRequestURL(
     35      key, [% subtest.origins %], { mime: 'application/javascript' }
     36    );
     37 
     38    return induceRequest(t, url, [%subtest.options | default({}) | tojson%], 'register')
     39      .then(() => retrieve(key))
     40      .then((headers) => {
     41        {%- if subtest.expected == none %}
     42          assert_not_own_property(headers, '[%subtest.headerName%]');
     43        {%- else %}
     44          assert_own_property(headers, '[%subtest.headerName%]');
     45          assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']);
     46        {%- endif %}
     47        });
     48  }, '[%subtest.headerName%] - [%subtest.description | pad("end", ", ")%][%subtest.options | collection("options")%] - registration');
     49 
     50  promise_test((t) => {
     51    const key = '{{uuid()}}';
     52    const url = makeRequestURL(
     53      key, [% subtest.origins %], { mime: 'application/javascript' }
     54    );
     55 
     56    return induceRequest(t, url, [%subtest.options | default({}) | tojson%], 'update', () => retrieve(key))
     57      .then(() => retrieve(key))
     58      .then((headers) => {
     59        {%- if subtest.expected == none %}
     60          assert_not_own_property(headers, '[%subtest.headerName%]');
     61        {%- else %}
     62          assert_own_property(headers, '[%subtest.headerName%]');
     63          assert_array_equals(headers['[%subtest.headerName%]'], ['[%subtest.expected%]']);
     64        {%- endif %}
     65        });
     66  }, '[%subtest.headerName%] - [%subtest.description | pad("end", ", ")%][%subtest.options | collection("options")%] - updating');
     67 
     68  {%- endif %}
     69  {%- endfor %}
     70  </script>
     71 </body>
     72 </html>