<!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> <style> pre, #log { position: absolute; top: 0; left: 200px; } iframe { width: 160px; height: 100px; overflow-y: scroll; } .spacer { height: calc(100vh + 100px); } </style> <div class="spacer"></div> <iframe src="http://{{hosts[alt][]}}:{{ports[http][0]}}/intersection-observer/resources/cross-origin-subframe.html" sandbox="allow-scripts"></iframe> <div class="spacer"></div> <script> async_test(function(t) { var iframe = document.querySelector("iframe"); function handleMessage(event) { if (event.data.hasOwnProperty('scrollTo')) { document.scrollingElement.scrollTop = event.data.scrollTo; waitForNotification(t, function() { iframe.contentWindow.postMessage("", "*"); }, "document.scrollingElement.scrollTop = " + event.data.scrollTo); } else if (event.data.hasOwnProperty('actual')) { checkJsonEntries(event.data.actual, event.data.expected, event.data.description); } else if (event.data.hasOwnProperty('DONE')) { document.scrollingElement.scrollTop = 0; t.done(); } else { var description = event.data.description; waitForNotification(t, function() { iframe.contentWindow.postMessage("", "*"); }, description); } } window.addEventListener("message", t.step_func(handleMessage)); iframe.onload = t.step_func(function() { waitForNotification(t, function() { iframe.contentWindow.postMessage("", "*") }, "setup"); }); }, "Intersection observer test with no explicit root and target in a cross-origin iframe."); </script>