41 lines
1.5 KiB
HTML
41 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<!--
|
|
NOTE(emilio): This tests Chrome's behavior but it's not clear that's what the
|
|
spec asks for, see https://github.com/w3c/IntersectionObserver/issues/456
|
|
-->
|
|
<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>
|