| <!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> |