workers.html (1859B)
1 <html> 2 <head> 3 <title>Referrer Policy: local scheme workers inherit from creator</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/common/get-host-info.sub.js"></script> 7 <meta name="referrer" content="no-referrer"> 8 </head> 9 <script> 10 let cross_origin = get_host_info().REMOTE_ORIGIN; 11 12 let generateFetchString = postmessage => ` 13 fetch("${cross_origin}/common/security-features/subresource/xhr.py", 14 {referrer: "${location.href}/custom"}) 15 .then(r => r.json()) 16 .then(j => ${postmessage}({referrer: j.headers.referer})) 17 .catch(e => ${postmessage}({referrer: "FAILURE"}));` 18 19 async_test(t => { 20 let blob = new Blob([generateFetchString("postMessage")], 21 {type : 'application/javascript'}); 22 let blob_url = URL.createObjectURL(blob); 23 let worker = new Worker(blob_url); 24 worker.onmessage = t.step_func_done(msg => { 25 assert_equals(msg.data.referrer, undefined); 26 }); 27 }, "Dedicated worker with local scheme inherits referrer policy " + 28 "from the creating document."); 29 30 async_test(t => { 31 let script = ` 32 onconnect = e => { 33 let port = e.ports[0]; 34 port.start(); 35 ${generateFetchString("port.postMessage")} 36 };` 37 let blob = new Blob([script], {type : 'application/javascript'}); 38 let blob_url = URL.createObjectURL(blob); 39 let shared_worker = new SharedWorker(blob_url); 40 shared_worker.port.start(); 41 shared_worker.port.onmessage = t.step_func_done(msg => { 42 assert_equals(msg.data.referrer, undefined); 43 }); 44 }, "Shared worker with local scheme inherits referrer policy " + 45 "from the creating document."); 46 </script> 47 </html>