| <!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> |
| pre, #log { |
| position: absolute; |
| top: 0; |
| left: 200px; |
| } |
| iframe { |
| width: 300px; |
| height: 150px; |
| border: none; |
| } |
| #occluder { |
| will-change: transform; |
| width: 100px; |
| height: 100px; |
| background-color: green; |
| } |
| </style> |
| |
| <iframe src="http://{{domains[www1]}}:{{ports[http][0]}}/intersection-observer/resources/v2-subframe.html"></iframe> |
| <div id="occluder"></div> |
| |
| <script> |
| async_test(function(t) { |
| let iframe = document.querySelector("iframe"); |
| let occluder = document.getElementById("occluder"); |
| |
| function step0(event) { |
| assert_equals(event.data,""); |
| } |
| |
| function step1(event) { |
| occluder.style.marginTop = "-150px"; |
| assert_equals(JSON.stringify(event.data), |
| JSON.stringify([true])); |
| } |
| |
| function step2(event) { |
| occluder.style.marginTop = ""; |
| assert_equals(JSON.stringify(event.data), |
| JSON.stringify([false])); |
| } |
| |
| function step3(event) { |
| assert_equals(JSON.stringify(event.data), |
| JSON.stringify([true])); |
| } |
| |
| let steps = [step0, step1, step2, step3]; |
| |
| window.addEventListener("message", event => { |
| if (steps.length) { |
| t.step(steps.shift(), t, event); |
| waitForFrame(t, () => { |
| iframe.contentWindow.postMessage("", "*"); |
| }); |
| } else { |
| t.done(); |
| } |
| }); |
| |
| }, "Intersection observer V2 test with occlusion of target in iframe."); |
| </script> |