test-access-property.js (2107B)
1 const same_origin = get_host_info().HTTPS_ORIGIN; 2 const cross_origin = get_host_info().HTTPS_REMOTE_ORIGIN; 3 4 const origin = [ 5 ["same-origin" , same_origin ], 6 ["cross-origin", cross_origin], 7 ]; 8 let escapeComma = url => url.replace(/,/g, '\\,'); 9 10 let testAccessProperty = ( 11 property, 12 op, 13 expectReport = true, 14 use_restrict_properties = false, 15 ) => { 16 origin.forEach(([origin_name, origin]) => { 17 promise_test(async t => { 18 const this_window_token = token(); 19 20 // The opener window: 21 const opener_token = token(); 22 const opener_url = get_host_info().HTTP_ORIGIN + executor_path + 23 `&uuid=${opener_token}`; 24 25 // The openee window: 26 const openee_token = token(); 27 const openee_report_token = token(); 28 const openee_report_to = reportToHeaders(openee_report_token); 29 const coop_ro_header = 30 use_restrict_properties 31 ? openee_report_to.coopReportOnlyRestrictPropertiesHeader 32 : openee_report_to.coopReportOnlySameOriginHeader; 33 const openee_url = origin + executor_path + openee_report_to.header + 34 coop_ro_header + coep_header + `&uuid=${openee_token}`; 35 36 t.add_cleanup(() => { 37 send(opener_token, "window.close()") 38 send(openee_token, "window.close()") 39 }); 40 41 // Open the two windows. Wait for them to be loaded. 42 window.open(opener_url); 43 send(opener_token, ` 44 window.openee = window.open('${escapeComma(openee_url)}'); 45 `); 46 send(openee_token, `send("${this_window_token}", "Ready");`); 47 assert_equals(await receive(this_window_token), "Ready"); 48 49 // 2. Try to access the openee. 50 send(opener_token, `(${op})(openee);`); 51 52 // 3. Fetch reports sent to the openee. 53 let report = await receiveReport(openee_report_token, 54 "access-to-coop-page-from-opener"); 55 if (expectReport) { 56 assert_equals(report.body.property, property); 57 } else { 58 // "timeout" should be returned if no such reports are received. 59 assert_equals(report, "timeout"); 60 } 61 62 63 }, `${origin_name} > ${op}`); 64 }) 65 };