| // META: script=/common/get-host-info.sub.js |
| // META: script=/common/utils.js |
| // META: script=/common/dispatcher/dispatcher.js |
| // META: script=./resources/common.js |
| |
| const http = get_host_info().HTTP_ORIGIN; |
| const https = get_host_info().HTTPS_ORIGIN; |
| |
| let crossOriginIsolatedTest = ( |
| description, |
| origin , |
| headers, |
| expect_crossOriginIsolated) => { |
| promise_test_parallel(async test => { |
| const w_token = token(); |
| const w_url = origin + executor_path + headers + `&uuid=${w_token}`; |
| const w = window.open(w_url) |
| add_completion_callback(() => w.close()); |
| |
| const this_token = token(); |
| send(w_token, ` |
| if (window.crossOriginIsolated) |
| send("${this_token}", "crossOriginIsolated"); |
| else |
| send("${this_token}", "not isolated") |
| `); |
| assert_equals(await receive(this_token), expect_crossOriginIsolated); |
| }, description); |
| } |
| |
| crossOriginIsolatedTest("Main crossOriginIsolated case:", |
| https, coop_same_origin + |
| coep_credentialless, "crossOriginIsolated"); |
| |
| crossOriginIsolatedTest("Missing HTTPS:", |
| http, coop_same_origin + |
| coep_credentialless, "not isolated"); |
| |
| crossOriginIsolatedTest("Missing COOP:same-origin:", |
| https, coep_credentialless, "not isolated"); |
| |
| crossOriginIsolatedTest("Report-only:", |
| https, coop_same_origin + |
| coep_report_only_credentialless, "not isolated"); |
| |
| crossOriginIsolatedTest("Report-only + enforced:", |
| https, coop_same_origin + |
| coep_credentialless + |
| coep_report_only_credentialless, "crossOriginIsolated"); |