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