| <!DOCTYPE html> |
| <title>Test successful named frame navigation.</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/utils.js"></script> |
| <script src="/common/dispatcher/dispatcher.js"></script> |
| <script src="resources/utils.js"></script> |
| |
| <body> |
| <script> |
| promise_test(async () => { |
| // This test uses the following layout: |
| // A: Top-level frame |
| // B: fencedframe |
| // C: iframe |
| // |
| // The purpose is to test that named target lookups of C succeed in A, i.e. |
| // that lookups work even when the first child of a frame is fenced. |
| |
| const fencedframe = attachFencedFrameContext(); |
| const iframe = attachIFrameContext(); |
| |
| // Give the iframe a name. |
| await iframe.execute(() => { window.name = "target_frame"; }); |
| |
| // Modify state in the iframe, using a JS navigation to the target name. |
| window.open("javascript:window.success=true;", "target_frame"); |
| |
| // Check that the navigation happened in the iframe. |
| await iframe.execute(() => { |
| // If the JS code didn't run in the iframe, `window.success` would be |
| // undefined. |
| assert_true(window.success, 'The JS code ran in the iframe.'); |
| }); |
| }, 'navigate iframe sibling of fenced frame'); |
| </script> |
| </body> |