| <!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> |