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