| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/common/get-host-info.sub.js"></script> |
| <script src="utils.js"></script> |
| <title>Test nested fenced frame navigation (by a parent frame setting its src).</title> |
| |
| <body> |
| <script> |
| async function init() { // Needed in order to use top-level await. |
| // This file is meant to run in a <fencedframe>. It communicates with |
| // the embedder to confirm that nested fenced frames can be navigated. |
| |
| const [navigation_key, navigation_ack_key] = parseKeylist(); |
| |
| // Create URL prefixes to simulate different origins. |
| // (www1 and www2 are different origins) |
| const simple_url = generateURL("frame-navigation-inner-simple.https.html", |
| [navigation_key, navigation_ack_key]); |
| |
| const origin1_simple_url = getRemoteOriginURL(simple_url); |
| const origin2_simple_url = getRemoteOriginURL(simple_url) |
| .toString().replace("www1", "www2"); |
| |
| const url_prefix = location.href + "/../"; |
| |
| // Tell the embedder that this frame has loaded. |
| writeValueToServer(navigation_key, "create-nested"); |
| await nextValueFromServer(navigation_ack_key); |
| |
| // Create an inner frame. |
| inner_frame = attachFencedFrame(origin1_simple_url); |
| // Wait for our parent to tell us they're done communicating. |
| await nextValueFromServer(navigation_ack_key); |
| |
| // Navigate (cross-origin) and wait. |
| inner_frame.config = new FencedFrameConfig( |
| generateURL(origin2_simple_url, [])); |
| await nextValueFromServer(navigation_ack_key); |
| |
| // Navigate (same-origin) and wait. |
| inner_frame.config = new FencedFrameConfig( |
| generateURL(origin2_simple_url, [])); |
| await nextValueFromServer(navigation_ack_key); |
| } |
| |
| init(); |
| </script> |
| </body> |