accept_ch_delegation_to_all.sub.https.html (1943B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>Client Hints: Delegation of hints to cross-origin frames and resources for *</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <body> 7 <script> 8 // Here's the set-up for this test: 9 // Step 1. (Site 1 Window) verify ch-device-memory availability. 10 // Step 2. (Site 1 Window) set up listener and embed Site 2 Frame. 11 // Step 3. (Site 2 Frame) verify ch-device-memory availability. 12 // Step 4. (Site 2 Frame) embeds Site 1 Frame. 13 // Step 5. (Site 3 Frame) verify ch-device-memory availability. 14 // Step 6. (Site 1 Window) exit. 15 16 promise_test(async (t) => { 17 // Step 1 18 let r = await fetch("/client-hints/inner-delegation/resources/was-sec-ch-device-memory-received.py"); 19 assert_equals(r.status, 200, "Site 1 fetching Site 1 didn't recieve sec-ch-device-memory"); 20 r = await fetch("https://{{hosts[alt][]}}:{{ports[https][0]}}/client-hints/inner-delegation/resources/was-sec-ch-device-memory-received.py"); 21 assert_equals(r.status, 200, "Site 1 fetching Site 2 didn't recieve sec-ch-device-memory"); 22 r = await fetch("https://{{domains[www2]}}:{{ports[https][0]}}/client-hints/inner-delegation/resources/was-sec-ch-device-memory-received.py"); 23 assert_equals(r.status, 200, "Site 1 fetching Site 3 didn't recieve sec-ch-device-memory"); 24 // Step 2 25 const site2Frame = document.createElement("iframe"); 26 site2Frame.src = "https://{{hosts[alt][]}}:{{ports[https][0]}}/client-hints/inner-delegation/resources/accept_ch_delegation_to_all_iframe.sub.https.html"; 27 site2Frame.allow = "ch-device-memory *" 28 document.body.appendChild(site2Frame); 29 // Step 6 30 return new Promise(resolve => { 31 window.addEventListener("message", resolve); 32 }).then(e => { 33 assert_equals(e.data, "ch-device-memory is available as expected for all"); 34 }); 35 }, "postMessage: First-Party to Third-Party, Cross-Partition, Same-Origin"); 36 </script> 37 </body>