diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/visual-viewport/page-and-offset-in-iframe.html | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/visual-viewport/page-and-offset-in-iframe.html')
-rw-r--r-- | testing/web-platform/tests/visual-viewport/page-and-offset-in-iframe.html | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/testing/web-platform/tests/visual-viewport/page-and-offset-in-iframe.html b/testing/web-platform/tests/visual-viewport/page-and-offset-in-iframe.html new file mode 100644 index 0000000000..086c816956 --- /dev/null +++ b/testing/web-platform/tests/visual-viewport/page-and-offset-in-iframe.html @@ -0,0 +1,86 @@ +<!doctype html> +<html> + <head> + <title>Viewport: page and offset values in iframe</title> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/resources/testdriver.js"></script> + <script src="/resources/testdriver-actions.js"></script> + <script src="/resources/testdriver-vendor.js"></script> + <script src="viewport_support.js"></script> + <style> + iframe { + width: 200px; + height: 300px; + border: 0; + } + </style> + </head> + <body> + <h1>Viewport: Page and offset values in iframe</h1> + <h4> + Test Description: This test checks for correct visualViewport values in + an iframe. + </h4> + <iframe></iframe> + </body> + <script> + var iframe = frames[0].window; + + // Add overflow to the iframe so it can scroll. + iframe.document.body.style.width = "2000px"; + iframe.document.body.style.height = "2000px"; + iframe.scrollTo(1000, 1200); + + promise_test(async t => { + assert_equals(visualViewport.scale, 1, + "[PRECONDITION] Start off unzoomed"); + assert_equals(visualViewport.offsetLeft, 0, + "[PRECONDITION] No offsetLeft to start"); + assert_equals(visualViewport.offsetTop, 0, + "[PRECONDITION] No offsetTop to start"); + + // The iframe's visual viewport isn't yet offset + assert_equals(iframe.visualViewport.offsetLeft, 0, + "offsetLeft must be 0"); + assert_equals(iframe.visualViewport.offsetTop, 0, + "offsetTop must be 0"); + + // However, page values should reflect layout viewport scrolling. + assert_equals(iframe.visualViewport.pageLeft, 1000, + "pageLeft must reflect location in document."); + assert_equals(iframe.visualViewport.pageTop, 1200, + "pageTop must reflect location in document."); + + // Zoom in and pan the viewport to ensure the iframe is independent + // of the root frame. + await pinchZoomIn(); + + // These values are arbitrary since the amount of pinch-zoom caused + // by pinchZoomIn will differ but we only care that the iframe's + // values aren't changed. + assert_greater_than(visualViewport.scale, 1.2, + "Pinch zoom must have increased scale"); + assert_greater_than(visualViewport.offsetLeft, 10, + "Pinch zoom must have offsetLeft visualViewport"); + assert_greater_than(visualViewport.offsetTop, 10, + "Pinch zoom must have offsetTop visualViewport"); + + // The iframe's visualViewport is independent of the root frame's so + // none of the values should have changed. + assert_equals(iframe.visualViewport.offsetLeft, 0, + "After zooming, offsetLeft must remain 0"); + assert_equals(iframe.visualViewport.offsetTop, 0, + "After zooming, offsetTop must remain 0"); + assert_equals(iframe.visualViewport.pageLeft, 1000, + "After zooming, pageLeft must reflect location in document."); + assert_equals(iframe.visualViewport.pageTop, 1200, + "After zooming, pageTop must reflect location in document."); + + assert_equals(iframe.visualViewport.scale, 1, + "Iframe's visualViewport must not be scaled"); + }, "VisualViewport page and offset values in iframe"); + </script> +</html> |