diff options
Diffstat (limited to 'testing/web-platform/tests/html/cross-origin-opener-policy/reporting/resources/test-access-property.js')
-rw-r--r-- | testing/web-platform/tests/html/cross-origin-opener-policy/reporting/resources/test-access-property.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/cross-origin-opener-policy/reporting/resources/test-access-property.js b/testing/web-platform/tests/html/cross-origin-opener-policy/reporting/resources/test-access-property.js new file mode 100644 index 0000000000..a405202431 --- /dev/null +++ b/testing/web-platform/tests/html/cross-origin-opener-policy/reporting/resources/test-access-property.js @@ -0,0 +1,65 @@ +const same_origin = get_host_info().HTTPS_ORIGIN; +const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; + +const origin = [ + ["same-origin" , same_origin ], + ["cross-origin", cross_origin], +]; +let escapeComma = url => url.replace(/,/g, '\\,'); + +let testAccessProperty = ( + property, + op, + expectReport = true, + use_restrict_properties = false, +) => { + origin.forEach(([origin_name, origin]) => { + promise_test(async t => { + const this_window_token = token(); + + // The opener window: + const opener_token = token(); + const opener_url = get_host_info().HTTP_ORIGIN + executor_path + + `&uuid=${opener_token}`; + + // The openee window: + const openee_token = token(); + const openee_report_token = token(); + const openee_report_to = reportToHeaders(openee_report_token); + const coop_ro_header = + use_restrict_properties + ? openee_report_to.coopReportOnlyRestrictPropertiesHeader + : openee_report_to.coopReportOnlySameOriginHeader; + const openee_url = origin + executor_path + openee_report_to.header + + coop_ro_header + coep_header + `&uuid=${openee_token}`; + + t.add_cleanup(() => { + send(opener_token, "window.close()") + send(openee_token, "window.close()") + }); + + // Open the two windows. Wait for them to be loaded. + window.open(opener_url); + send(opener_token, ` + window.openee = window.open('${escapeComma(openee_url)}'); + `); + send(openee_token, `send("${this_window_token}", "Ready");`); + assert_equals(await receive(this_window_token), "Ready"); + + // 2. Try to access the openee. + send(opener_token, `(${op})(openee);`); + + // 3. Fetch reports sent to the openee. + let report = await receiveReport(openee_report_token, + "access-to-coop-page-from-opener"); + if (expectReport) { + assert_equals(report.body.property, property); + } else { + // "timeout" should be returned if no such reports are received. + assert_equals(report, "timeout"); + } + + + }, `${origin_name} > ${op}`); + }) +}; |