| <!DOCTYPE html> |
| <head> |
| <title>Deferred loading=lazy iframes are fetched with the parse-time |
| `referrerpolicy` attribute</title> |
| <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org"> |
| <link rel="author" title="Raj T" href="mailto:rajendrant@chromium.org"> |
| <link rel="help" href="https://github.com/scott-little/lazyload"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../resources/common.js"></script> |
| </head> |
| |
| <script> |
| const below_viewport_iframe = new ElementLoadPromise("below_viewport_iframe"); |
| |
| async_test(function(t) { |
| // Change the referrer-policy and scroll down to load the deferred elements. |
| window.addEventListener("load", t.step_func(() => { |
| below_viewport_iframe.element().referrerPolicy = "no-referrer"; |
| below_viewport_iframe.element().scrollIntoView(); |
| })); |
| |
| below_viewport_iframe.promise.then( |
| t.step_func_done(function() { |
| // The `Referer` header should be the full URL, as specified by the |
| // iframe's `referrerpolicy` attribute at parse-time, and not the origin |
| // (as specified in meta referrer tag) or null (as overridden |
| // referrerpolicy=no-referrer after load deferral). |
| assert_true(below_viewport_iframe.element().contentDocument.body.innerHTML |
| .includes("Referer: http://{{location[host]}}{{location[path]}}"), |
| "The iframe's `Referer` should be the referrer's full URL"); |
| })); |
| }, "Test that when a deferred iframe is fetched, it uses the " + |
| "`referrerpolicy` specified at parse-time"); |
| </script> |
| |
| <body> |
| <meta name="referrer" content="origin"> |
| <div style="height:1000vh;"></div> |
| <iframe id="below_viewport_iframe" src="/xhr/resources/echo-headers.py" |
| loading="lazy" width="200px" height="100px" |
| referrerpolicy="unsafe-url" |
| onload="below_viewport_iframe.resolve();"> |
| </iframe> |
| </body> |