<!DOCTYPE html>
<html dir="rtl">
<head>
  <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: 120px;
    left: 0;
  }
  #root {
    width: 350px;
    height: 100px;
    border: 1px solid black;
    /* Cobalt does not support rtl with flex layouts.
    display: flex;
    flex-direction: row;
    overflow-x: auto;
    */
    display: inline-block;
    overflow: auto;
    position: relative;
  }
  #target-start, #target-end {
    width: 100px;
    height: 100px;
    /* flex-shrink: 0; */
    background-color: green;
    text-align: center;
    display: inline-block;
    position: absolute;
  }
  #target-end {
    margin-right: 500px;
    /* Cobalt does not support margin-inline-start.
    margin-inline-start: 500px;
    */
  }
  </style>
</head>

<div id="root">
  <div id="target-start">start</div>
  <div id="target-end">end</div>
</div>

<script>
runTestCycle(function() {
  let io = new IntersectionObserver(entries => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        entry.target.classList.add("intersecting");
      } else {
        entry.target.classList.remove("intersecting");
      }
    });
    window.testRunner.DoNonMeasuredLayout();
  }, { root: document.getElementById("root") });

  /* Cobalt missing forEach functionality. */
  const divs = document.querySelectorAll("#root > div");
  for (let i = 0; i < divs.length; i++) {
    io.observe(divs[i]);
  };

  runTestCycle(step0, "First rAF");
}, "Explicit rtl root with overflow clipping");
window.testRunner.DoNonMeasuredLayout();
window.testRunner.DoNonMeasuredLayout();

function step0() {
  assert_true(
    document.getElementById("target-start").classList.contains("intersecting"),
    "Target at scroll start is intersecting");
  assert_false(
    document.getElementById("target-end").classList.contains("intersecting"),
    "Target at scroll end is not intersecting");
}
</script>
