| <!DOCTYPE html> | |
| <script src="../resources/testharness.js"></script> | |
| <script src="../resources/testharnessreport.js"></script> | |
| <style> | |
| iframe { | |
| width: 300px; | |
| height: 300px; | |
| } | |
| </style> | |
| <iframe id="intermediateFrame" src="resources/intermediate-frame.html"></iframe> | |
| <script> | |
| var entries = []; | |
| var iframe = document.getElementById("intermediateFrame"); | |
| iframe.onload = function() { | |
| var nestedFrame = iframe.contentDocument.getElementById("nestedFrame"); | |
| var scroller = iframe.contentDocument.getElementById("scroller"); | |
| var target = nestedFrame.contentDocument.getElementById("target"); | |
| async_test(function(t) { | |
| new IntersectionObserver(function(changes) { | |
| entries = entries.concat(changes); | |
| if (entries.length == 1) { | |
| assert_false(entries[0].isIntersecting); | |
| scroller.scrollTop = 250; | |
| } else if (entries.length == 2) { | |
| assert_true(entries[1].isIntersecting); | |
| scroller.scrollTop = 0; | |
| } else { | |
| assert_false(entries[2].isIntersecting); | |
| t.done(); | |
| } | |
| }).observe(target); | |
| }, "Intersection observations are updated when an intermediate frame changes"); | |
| }; | |
| </script> |