| <!DOCTYPE html> |
| <html> |
| <body> |
| <title>Layout Instability: subframe layout shift score</title> |
| <link rel="help" href="https://wicg.github.io/layout-instability/" /> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <style> |
| #i { |
| border: 0; |
| position: absolute; |
| left: 0; |
| top: 0; |
| background-color: pink; |
| } |
| </style> |
| <iframe id="i" width="400" height="300" src="sub-frame.html"></iframe> |
| |
| <script> |
| const loadPromise = new Promise(resolve => { |
| window.addEventListener("load", () => { |
| resolve(true); |
| }); |
| }); |
| |
| let iframe = document.getElementById('i'); |
| const load_promise = new Promise(resolve => { |
| iframe.addEventListener('load', function() { |
| resolve(true); |
| }); |
| }); |
| |
| checkMainFrameLoad = async () => { |
| await loadPromise; |
| return true; |
| }; |
| |
| checkIFrameLoad = async () => { |
| // Wait for the iframe finishing loading |
| await load_promise; |
| return true; |
| }; |
| |
| promise_test(async t => { |
| checkMainFrameLoad(); |
| // Wait for the iframe finishing loading |
| checkIFrameLoad(); |
| |
| // Wait for the message sent from the iframe after it receives all the layout |
| // shifts. |
| await new Promise(resolve => { |
| window.addEventListener("message", (event) => { |
| if (event.data.type == "layout shift score") { |
| t.step(() => { |
| assert_equals(event.data.score, event.data.expectedScore); |
| }); |
| resolve(); |
| } |
| }, false); |
| }); |
| }, ""); |
| </script> |
| </body> |
| </html> |