blob: 3324515a453456a0c2648cce43c58f7226ac0b4f [file] [log] [blame]
<!DOCTYPE html>
<script src="/js-test-resources/js-test.js"></script>
<div style="width:100%; height:700px;"></div>
<iframe id="target-iframe" src="http://localhost:8080/intersection-observer/resources/cross-origin-subframe.html" style="height: 100px; overflow-y: scroll"></iframe>
<div style="width:100%; height:700px;"></div>
<script>
setPrintTestResultsLazily();
self.jsTestIsAsync = true;
description("Simple intersection observer test with no explicit root and target in a cross-origin iframe.");
var iframe = document.getElementById("target-iframe");
var actual;
function checkData(actualData, expected) {
actual = actualData;
shouldBeEqualToNumber("actual.length", expected.length);
for (var i = 0; i < actualData.length && i < expected.length; i++) {
actual = actualData[i];
shouldBeEqualToNumber("actual.boundingClientRect.left", expected[i].boundingClientRect.left);
shouldBeEqualToNumber("actual.boundingClientRect.top", expected[i].boundingClientRect.top);
shouldBeEqualToNumber("actual.boundingClientRect.right", expected[i].boundingClientRect.right);
shouldBeEqualToNumber("actual.boundingClientRect.bottom", expected[i].boundingClientRect.bottom);
shouldBeEqualToNumber("actual.boundingClientRect.width", expected[i].boundingClientRect.width);
shouldBeEqualToNumber("actual.boundingClientRect.height", expected[i].boundingClientRect.height);
shouldBeEqualToNumber("actual.intersectionRect.left", expected[i].intersectionRect.left);
shouldBeEqualToNumber("actual.intersectionRect.top", expected[i].intersectionRect.top);
shouldBeEqualToNumber("actual.intersectionRect.right", expected[i].intersectionRect.right);
shouldBeEqualToNumber("actual.intersectionRect.bottom", expected[i].intersectionRect.bottom);
shouldBeEqualToNumber("actual.intersectionRect.width", expected[i].intersectionRect.width);
shouldBeEqualToNumber("actual.intersectionRect.height", expected[i].intersectionRect.height);
if (expected[i].rootBounds == "null") {
shouldBe("actual.rootBounds", "null");
} else if (actual.rootBounds == "null") {
shouldNotBe("actual.rootBounds", "null");
} else {
shouldBeEqualToNumber("actual.rootBounds.left", expected[i].rootBounds.left);
shouldBeEqualToNumber("actual.rootBounds.top", expected[i].rootBounds.top);
shouldBeEqualToNumber("actual.rootBounds.right", expected[i].rootBounds.right);
shouldBeEqualToNumber("actual.rootBounds.bottom", expected[i].rootBounds.bottom);
shouldBeEqualToNumber("actual.rootBounds.width", expected[i].rootBounds.width);
shouldBeEqualToNumber("actual.rootBounds.height", expected[i].rootBounds.height);
}
shouldBeEqualToString("actual.target", expected[i].target);
}
}
function handleMessage(event) {
if (event.data.hasOwnProperty('scrollTo')) {
document.scrollingElement.scrollTop = event.data.scrollTo;
requestAnimationFrame(function () { iframe.contentWindow.postMessage("", "*") });
} else if (event.data.hasOwnProperty('actual')) {
checkData(event.data.actual, event.data.expected);
} else if (event.data.hasOwnProperty('DONE')) {
finishJSTest();
document.scrollingElement.scrollTop = 0;
} else {
requestAnimationFrame(function () { iframe.contentWindow.postMessage("", "*") });
}
}
window.addEventListener("message", handleMessage);
iframe.onload = function() {
iframe.contentWindow.postMessage("", "*")
};
</script>