| Index: third_party/WebKit/LayoutTests/http/tests/intersection-observer/cross-origin-iframe-with-nesting.html
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/intersection-observer/cross-origin-iframe-with-nesting.html b/third_party/WebKit/LayoutTests/http/tests/intersection-observer/cross-origin-iframe-with-nesting.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ef18c652511193f0965d50a940f5da9e86acc87f
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/intersection-observer/cross-origin-iframe-with-nesting.html
|
| @@ -0,0 +1,98 @@
|
| +<!DOCTYPE html>
|
| +<script src="../resources/testharness.js"></script>
|
| +<script src="../resources/testharnessreport.js"></script>
|
| +
|
| +<style>
|
| +pre, #log {
|
| + position: absolute;
|
| + top: 0;
|
| + left: 200px;
|
| +}
|
| +iframe {
|
| + width: 200px;
|
| + height: 140px;
|
| + overflow-y: hidden;
|
| +}
|
| +.spacer {
|
| + height: 700px;
|
| +}
|
| +</style>
|
| +
|
| +<div class="spacer"></div>
|
| +<iframe src="http://localhost:8080/intersection-observer/resources/nesting-cross-origin-subframe.html"></iframe>
|
| +<div class="spacer"></div>
|
| +
|
| +<script>
|
| +
|
| + // These helper functions are taken from
|
| + // intersection-observer/resources/intersection-observer-test-utils.js,
|
| + // which isn't available to http tests.
|
| +function waitForNotification(f) {
|
| + requestAnimationFrame(function () {
|
| + setTimeout(function () { setTimeout(f); });
|
| + });
|
| +}
|
| +
|
| +function checkRect(actual, expected, description) {
|
| + if (!expected.length)
|
| + return;
|
| + assert_equals(actual.left, expected[0], description + '.left');
|
| + assert_equals(actual.right, expected[1], description + '.right');
|
| + assert_equals(actual.top, expected[2], description + '.top');
|
| + assert_equals(actual.bottom, expected[3], description + '.bottom');
|
| +}
|
| +
|
| +function checkJsonEntry(actual, expected) {
|
| + checkRect(
|
| + actual.boundingClientRect, expected.boundingClientRect,
|
| + 'entry.boundingClientRect');
|
| + checkRect(
|
| + actual.intersectionRect, expected.intersectionRect,
|
| + 'entry.intersectionRect');
|
| + if (actual.rootBounds == 'null')
|
| + assert_equals(expected.rootBounds, 'null', 'rootBounds is null');
|
| + else
|
| + checkRect(actual.rootBounds, expected.rootBounds, 'entry.rootBounds');
|
| + assert_equals(actual.target, expected.target);
|
| +}
|
| +
|
| +function checkJsonEntries(actual, expected, description) {
|
| + test(function () {
|
| + assert_equals(actual.length, expected.length);
|
| + for (var i = 0; i < actual.length; i++)
|
| + checkJsonEntry(actual[i], expected[i]);
|
| + }, description);
|
| +}
|
| +
|
| +async_test(function(t) {
|
| + var iframe = document.querySelector("iframe");
|
| +
|
| + assert_equals(window.innerWidth, 800, "Window must be 800 pixels wide.");
|
| + assert_equals(window.innerHeight, 600, "Window must be 600 pixels high.");
|
| +
|
| + function handleMessage(event) {
|
| + if (event.data.hasOwnProperty('ACK')) {
|
| + waitForNotification(function () { iframe.contentWindow.postMessage({ ACK: 1 }, "*"); },
|
| + "Message acknowledged");
|
| + } else if (event.data.hasOwnProperty('scrollTo')) {
|
| + document.scrollingElement.scrollTop = event.data.scrollTo;
|
| + waitForNotification(function() { iframe.contentWindow.postMessage("", "*"); },
|
| + "document.scrollingElement.scrollTop = " + event.data.scrollTo);
|
| + } else if (event.data.hasOwnProperty('actual')) {
|
| + checkJsonEntries(event.data.actual, event.data.expected, event.data.description);
|
| + } else if (event.data.hasOwnProperty('DONE')) {
|
| + document.scrollingElement.scrollTop = 0;
|
| + t.done();
|
| + } else {
|
| + var description = event.data.description;
|
| + waitForNotification(function() { iframe.contentWindow.postMessage("", "*"); }, description);
|
| + }
|
| + }
|
| +
|
| + window.addEventListener("message", t.step_func(handleMessage));
|
| +
|
| + iframe.onload = t.step_func(function() {
|
| + waitForNotification(function() { iframe.contentWindow.postMessage("", "*") }, "setup");
|
| + });
|
| +}, "Intersection observer test with target in nested cross-origin subframes, potentially rendered in other processes.");
|
| +</script>
|
|
|