34 lines
1.3 KiB
HTML
34 lines
1.3 KiB
HTML
<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true AsyncFrameScrollingEnabled=true ] -->
|
|
<html>
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
</head>
|
|
<body>
|
|
<script src="../../../resources/js-test.js"></script>
|
|
<script>
|
|
|
|
if (window.internals)
|
|
internals.settings.setAsyncFrameScrollingEnabled(true);
|
|
|
|
description(`This tests programming scrolling via element.scrollIntoView to an element inside an iframe position well above the viewport top<br>
|
|
WebKit should clamp the scroll top to 0px.`);
|
|
|
|
const iframe = document.createElement('iframe');
|
|
document.body.append(iframe);
|
|
iframe.style.position = 'absolute';
|
|
iframe.style.top = '-1000px';
|
|
iframe.style.height = '1050px';
|
|
iframe.contentDocument.body.innerHTML = '<div id="target" style="position: absolute; top:2000px; height: 20px;">some content</div>';
|
|
const target = iframe.contentWindow.target;
|
|
|
|
target.scrollIntoView({block: 'end'});
|
|
shouldBe('document.documentElement.scrollTop', '0');
|
|
shouldBe('visualViewport.pageTop', '0');
|
|
shouldBe('iframe.contentDocument.documentElement.scrollTop', '0');
|
|
shouldBeTrue('iframe.contentWindow.visualViewport.pageTop > 900');
|
|
shouldBe('iframe.contentWindow.visualViewport.pageTop', 'target.offsetTop + target.offsetHeight - iframe.clientHeight');
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|