<!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>