tor-browser

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

header-referrer-helper.js (1197B)


      1 'use strict';
      2 
      3 // https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
      4 const REFERRER_ORIGIN = self.location.origin + '/';
      5 const REFERRER_URL = self.location.href;
      6 
      7 function testReferrerHeader(id, host, expectedReferrer) {
      8  const url = `${
      9      host}/beacon/resources/inspect-header.py?header=referer&cmd=put&id=${id}`;
     10 
     11  promise_test(t => {
     12    fetchLater(url, {activateAfter: 0});
     13    return pollResult(expectedReferrer, id).then(result => {
     14      assert_equals(result, expectedReferrer, 'Correct referrer header result');
     15    });
     16  }, `Test referer header ${host}`);
     17 }
     18 
     19 function pollResult(expectedReferrer, id) {
     20  const checkUrl =
     21      `/beacon/resources/inspect-header.py?header=referer&cmd=get&id=${id}`;
     22 
     23  return new Promise(resolve => {
     24    function checkResult() {
     25      fetch(checkUrl).then(response => {
     26        assert_equals(
     27            response.status, 200, 'Inspect header response\'s status is 200');
     28        let result = response.headers.get('x-request-referer');
     29 
     30        if (result != undefined) {
     31          resolve(result);
     32        } else {
     33          step_timeout(checkResult.bind(this), 100);
     34        }
     35      });
     36    }
     37    checkResult();
     38  });
     39 }