| <!DOCTYPE html> |
| <title>Navigate ancestor helper from nested fenced frame</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="utils.js"></script> |
| |
| <body> |
| <script> |
| (async () => { |
| // This document is loaded into a fenced frame by |
| // `navigate-ancestor-test-runner.https.html`. It creates a nested iframe and |
| // navigates it to `navigate-ancestor-helper.https.html`. |
| |
| // navigate_ancestor_from_nested_key sent by us to our embedder to |
| // indicate that an message was sent from the nested iframe when it failed to |
| // navigate the ancestor (this) frame. |
| const [navigate_ancestor_key, navigate_ancestor_from_nested_key, |
| ancestor_type] = parseKeylist(); |
| |
| // An message should be sent from the iframe. |
| window.addEventListener('message', (e) => { |
| window.onbeforeunload = null; |
| writeValueToServer( |
| navigate_ancestor_from_nested_key, |
| `PASS: [${ancestor_type}] ${e.data}`); |
| }); |
| |
| // When the iframe tries to navigate its ancestor frame, it should not |
| // navigate *this* frame, because the sandboxed navigation browsing context |
| // flag [1] must be set in fenced frame trees. |
| // [1] https://html.spec.whatwg.org/multipage/origin.html#sandboxed-navigation-browsing-context-flag |
| const iframe = document.createElement('iframe'); |
| iframe.src = generateURL(`navigate-ancestor-helper.https.html`, |
| [navigate_ancestor_key, ancestor_type]); |
| document.body.append(iframe); |
| })(); |
| </script> |
| </body> |