| <!DOCTYPE html> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="./resources/intersection-observer-test-utils.js"></script> |
| |
| <script> |
| var entries = []; |
| var popup, target; |
| |
| function waitForPopupNotification(f) { |
| popup.requestAnimationFrame(function() { |
| popup.requestAnimationFrame(function() { popup.setTimeout(f); }); |
| }); |
| } |
| |
| async_test((t) => { |
| var observer = new IntersectionObserver(function(changes) { |
| entries = entries.concat(changes); |
| }); |
| popup = window.open(); |
| t.add_cleanup(() => popup.close()); |
| target = popup.document.createElement('div'); |
| target.style.width = "100px"; |
| target.style.height = "100px"; |
| observer.observe(target); |
| waitForPopupNotification(t.step_func(() => { |
| assert_equals(entries.length, 1, "Initial notification for detached target."); |
| assert_equals(entries[0].isIntersecting, false, "not intersecting"); |
| popup.document.body.appendChild(target); |
| waitForPopupNotification(t.step_func_done(() => { |
| assert_equals(entries.length, 2, "Notification after insertion into popup."); |
| assert_equals(entries[1].isIntersecting, true, "intersecting"); |
| })); |
| })); |
| }, "IntersectionObserver with target in a different window."); |
| </script> |