<!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>
body, html {
  margin: 0;
}
pre, #log {
  position: absolute;
  top: 0;
  left: 200px;
}
#target {
  width: 100px;
  height: 100px;
  background-color: green;
}
#effects {
  opacity: 1;
  filter: none;
}
</style>

<div id="effects">
  <div id="target"></div>
</div>

<script>
var delay = 100;
var entries = [];
var target;
var effects;

runTestCycle(function() {
  target = document.getElementById("target");
  effects = document.getElementById("effects");
  assert_true(!!target, "target exists");
  assert_true(!!effects, "effects exists");
  var observer = new IntersectionObserver(function(changes) {
    entries = entries.concat(changes)
  }, {trackVisibility: true, delay: delay});
  observer.observe(target);
  entries = entries.concat(observer.takeRecords());
  assert_equals(entries.length, 0, "No initial notifications.");
  runTestCycle(step0, "First rAF.", delay);
}, "IntersectionObserverV2 in a single document using the implicit root, with a non-zero opacity ancestor.", delay);

function step0() {
  effects.style.opacity = "0.99";
  runTestCycle(step1, "effects.style.opacity = 0.99", delay);
  checkLastEntry(entries, 0, [0, 100, 0, 100, 0, 100, 0, 100, 0, 800, 0, 600, true, true]);
}

function step1() {
  effects.style.opacity = "1";
  runTestCycle(step2, "effects.style.opacity = 1", delay);
  checkLastEntry(entries, 1, [0, 100, 0, 100, 0, 100, 0, 100, 0, 800, 0, 600, true, false]);
}

function step2() {
  effects.style.filter = "grayscale(50%)";
  runTestCycle(step3, "effects.style.filter = grayscale(50%)", delay);
  checkLastEntry(entries, 2, [0, 100, 0, 100, 0, 100, 0, 100, 0, 800, 0, 600, true, true]);
}

function step3() {
  checkLastEntry(entries, 3, [0, 100, 0, 100, 0, 100, 0, 100, 0, 800, 0, 600, true, false]);
}
</script>
