<!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;
}
iframe {
  width: 100px;
  height: 100px;
  border: 0;
}
#box-shadow {
  display: inline-block;
  box-shadow: -50px -50px 0 50px rgba(255, 0, 0, 0.7);
}
</style>

<iframe id=target srcdoc="<!DOCTYPE html><div>Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum. Lorem ipsum.</div>"></iframe><div id=box-shadow></div>

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

runTestCycle(function() {
  target = document.getElementById("target");
  occluder = document.getElementById("box-shadow");
  assert_true(!!target, "target exists");
  assert_true(!!occluder, "occluder exists");
  let 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 observing an iframe element.", delay);

function step0() {
  occluder.style.boxShadow = "none";
  runTestCycle(step1, 'occluder.style.boxShadow = "none"', delay);
  assert_equals(entries.length, 1, "Initial notification.");
  assert_equals(entries[0].isVisible, false, "Initially occluded.");
}

function step1() {
  occluder.style.boxShadow = "";
  runTestCycle(step2, 'occluder.style.boxShadow = ""', delay);
  assert_equals(entries.length, 2, "Notification after removing box shadow.");
  assert_equals(entries[1].isVisible, true, "Visible when box shadow removed.");
}

function step2() {
  assert_equals(entries.length, 3, "Notification after re-adding box shadow.");
  assert_equals(entries[2].isVisible, false, "Occluded when box shadow re-added.");
}
</script>
