| const SAME_ORIGIN = {origin: get_host_info().HTTP_ORIGIN, name: "SAME_ORIGIN"}; |
| const SAME_SITE = {origin: get_host_info().HTTP_REMOTE_ORIGIN, name: "SAME_SITE"}; |
| const CROSS_ORIGIN = {origin: get_host_info().HTTP_NOTSAMESITE_ORIGIN, name: "CROSS_ORIGIN"} |
| |
| function coop_test(t, host, coop, channelName, hasOpener) { |
| let bc = new BroadcastChannel(channelName); |
| bc.onmessage = t.step_func_done((event) => { |
| let payload = event.data; |
| assert_equals(payload.name, hasOpener ? channelName : ""); |
| assert_equals(payload.opener, hasOpener); |
| }); |
| |
| let w = window.open(`${host.origin}/html/cross-origin-opener/resources/coop_window.py?path=window.sub.html&coop=${escape(coop)}&channel=${channelName}`, channelName); |
| |
| // w will be closed by its postback iframe. When out of process, |
| // window.close() does not work. |
| t.add_cleanup(() => w.close()); |
| } |
| |
| function run_coop_tests(mainTest, testArray) { |
| for (let test of tests) { |
| async_test(t => { |
| coop_test(t, test[0], test[1], |
| `${mainTest}_to_${test[0].name}_${test[1].replace(/ /g,"-")}`, |
| test[2]); |
| }, `${mainTest} document opening popup to ${test[0].origin} with COOP: "${test[1]}"`); |
| } |
| } |