navigate-by-name-inner.html (1563B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="utils.js"></script> 4 <title>Fenced frame hosting named frames</title> 5 6 <body> 7 <script> 8 async function init() { 9 // This file is meant to run in a <fencedframe>. It sets up multiple frames 10 // all with the name `target_frame` in the following arrangements: 11 // 1.) A top-level fenced frame 12 // 2.) An iframe within a fenced frame 13 // 3.) A nested fenced frame 14 // Navigations to all of the above should fail, and thus should open a new 15 // top-level popup window instead of navigating these frames. 16 17 const [ready_for_navigation_key, test_type] = parseKeylist(); 18 19 switch (test_type) { 20 case "top-level fenced frame": 21 // Set up the named frame and report to the outer document that we're ready 22 // for it to try and navigate the named frame. 23 window.name = "target_frame"; 24 writeValueToServer(ready_for_navigation_key, "READY"); 25 break; 26 case "nested iframe": 27 const iframe = document.createElement('iframe'); 28 iframe.name = "target_frame"; 29 document.body.append(iframe); 30 writeValueToServer(ready_for_navigation_key, "READY"); 31 break; 32 case "nested fenced frame": 33 // This fenced frame will report to the outermost document when it is ready. 34 const ff = 35 attachFencedFrame(generateURL( 36 "fenced-frame-set-name-and-report-ready-for-" + 37 "outermost-document-to-navigate.html", 38 [ready_for_navigation_key])); 39 break; 40 } 41 } 42 43 init(); 44 </script> 45 </body>