same-origin-check.sub.html (1917B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script> 5 const sameOrigin = 'http://{{host}}:{{ports[http][0]}}'; 6 const crossOrigin = 'http://{{host}}:{{ports[http][1]}}'; 7 const workerPath = '/workers/support/post-message-on-load-worker.js?pipe=header(Access-Control-Allow-Origin,*)'; 8 const redirectPath = '/service-workers/service-worker/resources/redirect.py?ACAOrigin=*&Redirect='; 9 const tests = [ 10 { 11 name: "cross-origin", 12 url: crossOrigin + workerPath 13 }, 14 { 15 name: "cross-origin-to-same-origin-redirect", 16 url: crossOrigin + redirectPath + 17 encodeURIComponent(sameOrigin + workerPath) 18 }, 19 { 20 name: "same-origin-to-cross-origin-redirect", 21 url: sameOrigin + redirectPath + encodeURIComponent(crossOrigin + workerPath) 22 }, 23 { 24 name: "same-origin-to-cross-origin-to-same-origin-redirect", 25 url: sameOrigin + redirectPath + 26 encodeURIComponent( 27 crossOrigin + redirectPath + 28 encodeURIComponent(sameOrigin + workerPath)) 29 }, 30 ]; 31 32 for (const test of tests) { 33 for (const type of ['classic', 'module']) { 34 promise_test(t => new Promise((resolve, reject) => { 35 try { 36 const worker = new Worker(test.url, {type}); 37 worker.onmessage = _ => reject('Worker loaded unexpectedly'); 38 worker.onerror = resolve; 39 } catch (e) { 40 resolve(); 41 } 42 }), 'Worker: ' + test.name + ' (' + type + ')'); 43 44 promise_test(t => new Promise((resolve, reject) => { 45 try { 46 const worker = new SharedWorker( 47 test.url + '&label=' + type + test.name, {type}); 48 worker.port.onmessage = _ => reject('Worker loaded unexpectedly'); 49 worker.onerror = resolve; 50 } catch (e) { 51 resolve(); 52 } 53 }), 'SharedWorker: ' + test.name + ' (' + type + ')'); 54 } 55 } 56 </script>