<!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>
/* Cobalt does not implement HTML5 spec for body margin. */
body {
  margin: 8px;
}
pre, #log {
  position: absolute;
  top: 0;
  left: 200px;
}
.spacer {
  /* Cobalt does not support calc */
  height: 100vh;
}
#target {
  width: 100px;
  height: 100px;
  background-color: green;
  /* Adjust for subtracted 100px in class=spacer */
  margin-top: 100px;
}
</style>

<div class="spacer"></div>
<div id="target"></div>
<div class="spacer"></div>

<script>
var vw = window.innerWidth;
var vh = window.innerHeight;

var entries = [];
var target;

runTestCycle(function() {
  target = document.getElementById("target");
  assert_true(!!target, "target exists");
  var observer = new IntersectionObserver(function(changes) {
    entries = entries.concat(changes);
    window.testRunner.DoNonMeasuredLayout();
  });
  observer.observe(target);
  entries = entries.concat(observer.takeRecords());
  assert_equals(entries.length, 0, "No initial notifications.");
  runTestCycle(step0, "First rAF.");
}, "IntersectionObserver in a single document using the implicit root.");
window.testRunner.DoNonMeasuredLayout();
window.testRunner.DoNonMeasuredLayout();

function step0() {
  target.style.marginTop = "-200px";
  //document.scrollingElement.scrollTop = 300;
  runTestCycle(step1, "document.scrollingElement.scrollTop = 300");
  checkLastEntry(entries, 0, [8, 108, vh + 108, vh + 208, 0, 0, 0, 0, 0, vw, 0, vh, false]);
}

function step1() {
  target.style.marginTop = "0px";
  //document.scrollingElement.scrollTop = 100;
  runTestCycle(step2, "document.scrollingElement.scrollTop = 100");
  checkLastEntry(entries, 1, [8, 108, vh - 192, vh - 92, 8, 108, vh - 192, vh - 92, 0, vw, 0, vh, true]);
}

function step2() {
  target.style.marginTop = "100px";
  //document.scrollingElement.scrollTop = 0;
  checkLastEntry(entries, 2, [8, 108, vh + 8, vh + 108, 0, 0, 0, 0, 0, vw, 0, vh, false]);
}
</script>
