<!DOCTYPE html>
<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;
}
.spacer {
  height: calc(100vh + 100px);
}
.target {
  width: 100px;
  height: 100px;
  margin: 10px;
  background-color: green;
}
</style>

<div class="spacer"></div>
<div id="target1" class="target"></div>
<div id="target2" class="target"></div>
<div id="target3" class="target"></div>

<script>
var entries = [];
var target1, target2, target3;

runTestCycle(function() {
  target1 = document.getElementById("target1");
  assert_true(!!target1, "target1 exists.");
  target2 = document.getElementById("target2");
  assert_true(!!target2, "target2 exists.");
  target3 = document.getElementById("target3");
  assert_true(!!target3, "target3 exists.");
  var observer = new IntersectionObserver(function(changes) {
    entries = entries.concat(changes)
  });
  observer.observe(target1);
  observer.observe(target2);
  observer.observe(target3);
  entries = entries.concat(observer.takeRecords());
  assert_equals(entries.length, 0, "No initial notifications.");
  runTestCycle(step0, "First rAF.");
}, "One observer with multiple targets.");

function step0() {
  document.scrollingElement.scrollTop = 150;
  runTestCycle(step1, "document.scrollingElement.scrollTop = 150");
  assert_equals(entries.length, 3, "Three initial notifications.");
  assert_equals(entries[0].target, target1, "entries[0].target === target1");
  assert_equals(entries[1].target, target2, "entries[1].target === target2");
  assert_equals(entries[2].target, target3, "entries[2].target === target3");
}

function step1() {
  document.scrollingElement.scrollTop = 10000;
  runTestCycle(step2, "document.scrollingElement.scrollTop = 10000");
  assert_equals(entries.length, 4, "Four notifications.");
  assert_equals(entries[3].target, target1, "entries[3].target === target1");
}

function step2() {
  document.scrollingElement.scrollTop = 0;
  runTestCycle(step3, "document.scrollingElement.scrollTop = 0");
  assert_equals(entries.length, 6, "Six notifications.");
  assert_equals(entries[4].target, target2, "entries[4].target === target2");
  assert_equals(entries[5].target, target3, "entries[5].target === target3");
}

function step3() {
  assert_equals(entries.length, 9, "Nine notifications.");
  assert_equals(entries[6].target, target1, "entries[6].target === target1");
  assert_equals(entries[7].target, target2, "entries[7].target === target2");
  assert_equals(entries[8].target, target3, "entries[8].target === target3");
}
</script>
