<!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: 0px;
  height: 0px;
  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");
}, "Observing a zero-area target.");
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, 8, vh + 108, vh + 108, 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, 8, vh - 192, vh - 192, 8, 8, vh - 192, vh - 192, 0, vw, 0, vh, true]);
}

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