diff options
Diffstat (limited to 'gfx/layers/apz/test/mochitest/helper_zoomed_pan.html')
-rw-r--r-- | gfx/layers/apz/test/mochitest/helper_zoomed_pan.html | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/gfx/layers/apz/test/mochitest/helper_zoomed_pan.html b/gfx/layers/apz/test/mochitest/helper_zoomed_pan.html new file mode 100644 index 0000000000..98547fb73f --- /dev/null +++ b/gfx/layers/apz/test/mochitest/helper_zoomed_pan.html @@ -0,0 +1,79 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width; initial-scale=1.0,minimum-scale=1.0"> + <title>Ensure layout viewport responds to panning while pinched</title> + <script type="application/javascript" src="apz_test_utils.js"></script> + <script type="application/javascript" src="apz_test_native_event_utils.js"></script> + <script src="/tests/SimpleTest/paint_listener.js"></script> + <style> + body { + margin: 0; + padding: 0; + } + #content { + height: 5000px; + width: 5000px; + background: repeating-linear-gradient(#EEE, #EEE 100px, #DDD 100px, #DDD 200px); + } + </style> +</head> +<body> + <div id="content"></div> + <script type="application/javascript"> + const RESOLUTION = 4; + const OFFSET_SCREEN_PX = 50; + const OFFSET_CSS_PX = OFFSET_SCREEN_PX / RESOLUTION; + + function computeDelta(visual) { + // Compute the distance from the right/bottom edge of the visual + // viewport to the same edge of the layout viewport and add the desired + // offset to that. + // We can ignore scrollbar width here since the scrollbar is layouted at + // the right/bottom edge of this content, not of this window in the case + // of containerful scrolling. + return visual - (visual / RESOLUTION) + OFFSET_CSS_PX; + } + + async function test() { + const cases = [ + { + x: 0, + y: 0, + dx: (width) => -computeDelta(width), + dy: (height) => 0, + expected: { + x: [OFFSET_CSS_PX, "x-offset was adjusted"], + y: [0, "y-offset was not affected"], + }, + }, + { + x: OFFSET_CSS_PX, + y: 0, + dx: (width) => 0, + dy: (height) => -computeDelta(height), + expected: { + x: [OFFSET_CSS_PX, "x-offset was not affected"], + y: [OFFSET_CSS_PX, "y-offset was adjusted"], + }, + }, + ]; + + for (let c of cases) { + await promiseNativeTouchDrag(window, + c.x, + c.y, + c.dx(document.documentElement.clientWidth), + c.dy(document.documentElement.clientHeight)); + await promiseApzFlushedRepaints(); + is(window.scrollX, c.expected.x[0], c.expected.x[1]); + is(window.scrollY, c.expected.y[0], c.expected.y[1]); + } + } + + SpecialPowers.getDOMWindowUtils(window).setResolutionAndScaleTo(RESOLUTION); + waitUntilApzStable().then(test).then(subtestDone, subtestFailed); + </script> +</body> +</html> |