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

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

<script>
var entries = [];
var observer;
var target;

runTestCycle(function() {
  target = document.getElementById("target");
  assert_true(!!target, "target exists");
  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 should not deliver pending notifications after disconnect().");
window.testRunner.DoNonMeasuredLayout();
window.testRunner.DoNonMeasuredLayout();

function step0() {
  runTestCycle(step1, "observer.disconnect()");
  document.documentElement.scrollTop = 300;
  observer.disconnect();
  assert_equals(entries.length, 1, "Initial notification.");
  window.testRunner.DoNonMeasuredLayout();
}

function step1() {
  assert_equals(entries.length, 1, "No new notifications.");
}
</script>
