blob: bf67609fcc3975db353f3107141c43c836cb5e8f [file] [log] [blame]
<!DOCTYPE html>
<html>
<body style="width: 2000px; height: 2000px;">
<script src="../../resources/js-test.js"></script>
<script>
description('Tests that scroll event on visualViewport fires after resize event in a subframe. To manually test, pinch zoom.');
const jsTestIsAsync = true;
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.contentDocument.body.innerHTML = '<span>hi</span>';
async function zoom() {
if (!window.testRunner) {
return new Promise((resolve) => {
window.visualViewport.addEventListener('resize', resolve);
});
}
return new Promise((resolve) => {
testRunner.runUIScript(`(function() {
uiController.zoomToScale(${pageScaleFactor}, function() {
uiController.uiScriptComplete(uiController.zoomScale);
});
})();`, resolve);
});
}
const events = [];
window.onload = async function () {
requestAnimationFrame(async () => {
await zoom();
iframe.contentWindow.addEventListener('resize', () => {
events.push('resize');
});
window.visualViewport.addEventListener('scroll', () => {
events.push('scroll');
});
window.scrollTo(1000, 1000);
iframe.style.width = '100px';
iframe.style.height = '100px';
window.rect = iframe.contentDocument.querySelector('span').getBoundingClientRect();
requestAnimationFrame(() => {
shouldBeEqualToString('events.join(", ")', 'resize, scroll');
});
});
};
</script>
</body>
</html>