blob: 53100c50bb7438b71ebfb52a215169fcab1ac7ea [file] [log] [blame]
Tobias Schneider9a6600e2017-06-28 17:46:451<!DOCTYPE html>
Hiroyuki Ikezoe9ddcc732019-05-18 23:45:292<meta name="viewport" content="width=device-width,initial-scale=1">
Tobias Schneider9a6600e2017-06-28 17:46:453<script src="/resources/testharness.js"></script>
4<script src="/resources/testharnessreport.js"></script>
5<script src="./resources/intersection-observer-test-utils.js"></script>
6
7<style>
8pre, #log {
9 position: absolute;
10 top: 0;
11 left: 200px;
12}
13.spacer {
14 height: calc(100vh + 100px);
15}
16#target {
17 width: 100px;
18 height: 100px;
19 background-color: green;
20}
21</style>
22<div class="spacer"></div>
23<div id="target"></div>
24<div class="spacer"></div>
25
26<script>
27var entries = [];
28
29runTestCycle(function() {
30 var target = document.getElementById("target");
31 assert_true(!!target, "Target exists");
32 function createObserver() {
33 new IntersectionObserver(function(changes) {
34 entries = entries.concat(changes)
35 }).observe(target);
36 }
37 createObserver();
38 runTestCycle(step0, "First rAF");
39}, "IntersectionObserver that is unreachable in js should still generate notifications.");
40
41function step0() {
42 document.scrollingElement.scrollTop = 300;
43 runTestCycle(step1, "document.scrollingElement.scrollTop = 300");
44 assert_equals(entries.length, 1, "One notification.");
45}
46
47function step1() {
48 document.scrollingElement.scrollTop = 0;
49 assert_equals(entries.length, 2, "Two notifications.");
50}
51</script>