diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /gfx/layers/apz/test/mochitest/helper_checkerboard_zoom_during_load.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/layers/apz/test/mochitest/helper_checkerboard_zoom_during_load.html')
-rw-r--r-- | gfx/layers/apz/test/mochitest/helper_checkerboard_zoom_during_load.html | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gfx/layers/apz/test/mochitest/helper_checkerboard_zoom_during_load.html b/gfx/layers/apz/test/mochitest/helper_checkerboard_zoom_during_load.html new file mode 100644 index 0000000000..650b1c265d --- /dev/null +++ b/gfx/layers/apz/test/mochitest/helper_checkerboard_zoom_during_load.html @@ -0,0 +1,55 @@ +<!DOCTYPE html> +<html lang="en"><head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="utf-8"> +<title>Testcase for checkerboarding after zooming during page load</title> +<script type="application/javascript" src="apz_test_utils.js"></script> +<script src="/tests/SimpleTest/paint_listener.js"></script> +<meta name="viewport" content="width=device-width"/> +<style> +body, html { + margin: 0; +} +</style> +<body> + <div style="height: 5000px; background-color: green"></div> +</body> +<script type="application/javascript"> + +// This function runs after page load, but simulates what might happen if +// the user does a zoom during page load. It's hard to actually do this +// during page load, because the specific behaviour depends on interleaving +// between paints and the load event which is hard to control from a test. +// So instead, we do the zoom after page load, and then trigger a MVM reset +// which simulates what happens during the pageload process. +async function test() { + var utils = SpecialPowers.getDOMWindowUtils(window); + + // Make it so that the layout and visual viewports diverge. We do this by + // zooming and then moving the visual viewport. + utils.setResolutionAndScaleTo(2); + var x = window.innerWidth / 2; + var y = window.innerHeight / 2; + utils.scrollToVisual(x, y, utils.UPDATE_TYPE_MAIN_THREAD, utils.SCROLL_MODE_INSTANT); + dump("Done scrollToVisual\n"); + + // Next, kick off a paint transaction to APZ, so that it sets appropriate + // displayport margins with visual/layout adjustment factors. + await promiseApzFlushedRepaints(); + + // Once that's done, we want to trigger the MobileViewportManager to update + // the displayport margins. + dump("Resetting MVM...\n"); + utils.resetMobileViewportManager(); + + // The bug is that at this point, paints end up checkerboarding because the + // MVM code to update the displayport margins doesn't preserve the layout + // adjustment factor needed. + utils.advanceTimeAndRefresh(0); + assertNotCheckerboarded(utils, utils.getViewId(document.scrollingElement), `Should not see checkerboarding`); +} + +waitUntilApzStable() +.then(test) +.then(subtestDone, subtestFailed); + +</script> |