| <!DOCTYPE html> |
| <title>Test document.referrer referrer</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/dispatcher/dispatcher.js"></script> |
| <script src="/common/utils.js"></script> |
| <script src="resources/utils.js"></script> |
| |
| <body> |
| |
| <script> |
| promise_test(async () => { |
| const fenced_frame = attachFencedFrameContext(); |
| |
| // Test the value of `document.referrer` inside a top-level fenced frame. |
| const fenced_frame_url = await fenced_frame.execute(() => { |
| assert_equals(document.referrer, "", |
| "The top-level fenced frame's document.referrer is censored"); |
| return location.href; |
| }); |
| |
| // Test an iframe nested inside a fenced frame. |
| await fenced_frame.execute(async () => { |
| const nested_iframe = attachIFrameContext(); |
| await nested_iframe.execute((expected_referrer) => { |
| assert_equals(document.referrer, expected_referrer, |
| `The document.referrer of the iframe inside the fenced |
| frame is not censored`); |
| }, [location.href]); |
| }); |
| |
| // Test a nested fenced frame. |
| await fenced_frame.execute(async () => { |
| const nested_fenced_frame = attachFencedFrameContext(); |
| await nested_fenced_frame.execute(() => { |
| assert_equals(document.referrer, "", |
| `The document.referrer of the nested fenced frame is |
| censored`); |
| }); |
| }); |
| |
| // Test a top-level fenced frame after it navigates itself. |
| // Navigate the fenced frame. (Refresh it, so we can still send it scripts.) |
| await fenced_frame.execute(() => { |
| window.executor.suspend(() => { |
| location.href = location.href; |
| }); |
| }); |
| |
| // Check that it now sees its original URL as the referrer. |
| await fenced_frame.execute((expected_referrer) => { |
| assert_equals(document.referrer, expected_referrer, |
| `The document.referrer of a fenced frame after it navigates |
| itself is not censored.`); |
| }, [fenced_frame_url]); |
| |
| }, "document.referrer"); |
| </script> |
| |
| </body> |