| <!DOCTYPE html> |
| |
| <title>Intersection Observer: root margin is applied when observer is in a same-origin iframe</title> |
| <link rel="author" title="Kiet Ho" href="mailto:kiet.ho@apple.com"> |
| |
| <script src="/common/rendering-utils.js"></script> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <style> |
| #iframe { |
| width: 40px; |
| height: 40px; |
| display: block; |
| position: fixed; |
| left: 0; |
| top: -40px; |
| border: 0; |
| } |
| </style> |
| |
| <iframe id="iframe"></iframe> |
| |
| <script> |
| isIntersecting = null; |
| window.addEventListener("message", event => { |
| isIntersecting = event.data.isIntersecting; |
| }); |
| |
| function loadFrame() { |
| return new Promise(resolve => { |
| iframe.addEventListener("load", resolve, { once: true }); |
| iframe.src = "resources/root-margin-in-same-origin-iframe-subframe.html"; |
| }); |
| } |
| |
| promise_test(async (t) => { |
| await loadFrame(); |
| |
| await waitForAtLeastOneFrame(); |
| await waitForAtLeastOneFrame(); |
| await waitForAtLeastOneFrame(); |
| |
| assert_true(isIntersecting); |
| }); |
| </script> |