<!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;
}
#target {
  width: 100px;
  height: 100px;
  background-color: green;
}
</style>

<script>
var vw = document.documentElement.clientWidth;
var vh = document.documentElement.clientHeight;

var entries = [];
var target;

runTestCycle(function() {
  var detached_document = document.implementation.createHTMLDocument("test");
  target = detached_document.createElement("div");
  target.id = "target";
  var observer = new IntersectionObserver(function(changes) {
    entries = entries.concat(changes)
  });
  observer.observe(target);
  runTestCycle(step0, "First rAF.");
}, "IntersectionObserver in a single document using the implicit root.");

function step0() {
  document.adoptNode(target);
  document.body.appendChild(target);
  checkLastEntry(entries, 0, [0, 0, 0, 0, 0, 0, 0, 0]);
  runTestCycle(step1, "Adopt target.");
}

function step1() {
  checkLastEntry(entries, 1, [8, 108, 8, 108, 8, 108, 8, 108, 0, vw, 0, vh, true]);
}
</script>
