samesite-iframe.https.html (2187B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Navigation Preload for same site iframe</title> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/common/get-host-info.sub.js"></script> 7 <script src="../resources/test-helpers.sub.js"></script> 8 <body></body> 9 <script> 10 11 const SAME_SITE = get_host_info().HTTPS_REMOTE_ORIGIN; 12 const RESOURCES_DIR = "/service-workers/service-worker/navigation-preload/resources/"; 13 14 /** 15 * This test is used for testing the NavigationPreload works in a same site iframe. 16 * The test scenario is 17 * 1. Create a same site iframe to register service worker and wait for it be activated 18 * 2. Create a same site iframe which be intercepted by the service worker. 19 * 3. Once the iframe is loaded, service worker should set the page through the preload response. 20 * And checking if the iframe's body content is expected. 21 * 4. Unregister the service worker. 22 * 5. remove created iframes. 23 */ 24 25 promise_test(async (t) => { 26 let resolver; 27 let checkValue = false; 28 window.onmessage = (e) => { 29 if (checkValue) { 30 assert_equals(e.data, "samesite"); 31 checkValue = false; 32 } 33 resolver(); 34 }; 35 36 let helperIframe = document.createElement("iframe"); 37 helperIframe.src = SAME_SITE + RESOURCES_DIR + "samesite-sw-helper.html"; 38 document.body.appendChild(helperIframe); 39 40 await new Promise(resolve => { 41 resolver = resolve; 42 helperIframe.onload = async () => { 43 helperIframe.contentWindow.postMessage("Register", '*'); 44 } 45 }); 46 47 let sameSiteIframe = document.createElement("iframe"); 48 sameSiteIframe.src = SAME_SITE + RESOURCES_DIR + "samesite-iframe.html"; 49 document.body.appendChild(sameSiteIframe); 50 await new Promise(resolve => { 51 resolver = resolve; 52 sameSiteIframe.onload = async() => { 53 checkValue = true; 54 sameSiteIframe.contentWindow.postMessage("GetBody", '*') 55 } 56 }); 57 58 await new Promise(resolve => { 59 resolver = resolve; 60 helperIframe.contentWindow.postMessage("Unregister", '*') 61 }); 62 63 helperIframe.remove(); 64 sameSiteIframe.remove(); 65 }); 66 67 </script>