require-corp-sw-from-none.https.html (3238B)
1 <!doctype html> 2 <html> 3 <script src=/resources/testharness.js></script> 4 <script src=/resources/testharnessreport.js></script> 5 <script src="/common/get-host-info.sub.js"></script> 6 <script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script> 7 <script> 8 const SCOPE = new URL(location.href).pathname; 9 const SCRIPT = 10 'resources/sw.js?' + 11 `pipe=header(service-worker-allowed,${SCOPE})|` + 12 'header(cross-origin-embedder-policy,require-corp)'; 13 14 function remote(path) { 15 const REMOTE_ORIGIN = get_host_info().HTTPS_REMOTE_ORIGIN; 16 return new URL(path, REMOTE_ORIGIN + '/html/cross-origin-embedder-policy/'); 17 } 18 19 promise_test(async (t) => { 20 const reg = await service_worker_unregister_and_register(t, SCRIPT, SCOPE); 21 add_completion_callback(() => { 22 reg.unregister(); 23 }); 24 await new Promise(resolve => { 25 navigator.serviceWorker.addEventListener('controllerchange', resolve); 26 }); 27 }, 'setting up'); 28 29 promise_test(async (t) => { 30 await fetch('resources/nothing-same-origin-corp.txt', {mode: 'no-cors'}); 31 }, 'making a same-origin request for CORP: same-origin'); 32 33 promise_test(async (t) => { 34 await fetch('/common/blank.html', {mode: 'no-cors'}); 35 }, 'making a same-origin request for no CORP'); 36 37 promise_test(async (t) => { 38 await fetch('resources/nothing-cross-origin-corp.js', {mode: 'no-cors'}); 39 }, 'making a same-origin request for CORP: cross-origin'); 40 41 promise_test(async (t) => { 42 await promise_rejects_js( 43 t, TypeError, 44 fetch(remote('resources/nothing-same-origin-corp.txt'), {mode: 'no-cors'})); 45 }, 'making a cross-origin request for CORP: same-origin'); 46 47 promise_test(async (t) => { 48 await promise_rejects_js( 49 t, TypeError, fetch(remote('/common/blank.html'), {mode: 'no-cors'})); 50 }, 'making a cross-origin request for no CORP'); 51 52 promise_test(async (t) => { 53 await fetch( 54 remote('resources/nothing-cross-origin-corp.js'), 55 {mode: 'no-cors'}); 56 }, 'making a cross-origin request for CORP: cross-origin'); 57 58 promise_test(async (t) => { 59 await promise_rejects_js( 60 t, TypeError, 61 fetch(remote('resources/nothing-same-origin-corp.txt?passthrough'), 62 {mode: 'no-cors'})); 63 }, 'making a cross-origin request for CORP: same-origin [PASS THROUGH]'); 64 65 promise_test(async (t) => { 66 await fetch(remote('/common/blank.html?passthrough'), {mode: 'no-cors'}); 67 }, 'making a cross-origin request for no CORP [PASS THROUGH]'); 68 69 promise_test(async (t) => { 70 await fetch( 71 remote('resources/nothing-cross-origin-corp.js?passthrough'), 72 {mode: 'no-cors'}); 73 }, 'making a cross-origin request for CORP: cross-origin [PASS THROUGH]'); 74 75 promise_test(async (t) => { 76 await promise_rejects_js( 77 t, TypeError, fetch(remote('/common/blank.html'), {mode: 'cors'})); 78 }, 'making a cross-origin request with CORS without ACAO'); 79 80 promise_test(async (t) => { 81 const URL = remote( 82 '/common/blank.html?pipe=header(access-control-allow-origin,*)'); 83 await fetch(URL, {mode: 'cors'}); 84 }, 'making a cross-origin request with CORS'); 85 86 promise_test(async (t) => { 87 const URL = remote('/fetch/api/resources/preflight.py?allow_headers=hoge'); 88 await fetch(URL, {mode: 'cors', headers: {'hoge': 'fuga'}}); 89 }, 'making a cross-origin request with CORS-preflight'); 90 91 </script> 92 </html>