diff options
Diffstat (limited to 'gfx/layers/apz/test/mochitest/helper_zoomToFocusedInput_iframe.html')
-rw-r--r-- | gfx/layers/apz/test/mochitest/helper_zoomToFocusedInput_iframe.html | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/gfx/layers/apz/test/mochitest/helper_zoomToFocusedInput_iframe.html b/gfx/layers/apz/test/mochitest/helper_zoomToFocusedInput_iframe.html new file mode 100644 index 0000000000..d916c35efb --- /dev/null +++ b/gfx/layers/apz/test/mochitest/helper_zoomToFocusedInput_iframe.html @@ -0,0 +1,68 @@ +<!DOCTYPE> +<html> + <head> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Checking zoomToFocusedInput scrolls that focused element is into iframe</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> + </head> +<body> +<div style="height: 8000px;">ABC</div> +<iframe style="height: 30em;" src="helper_iframe_textarea.html"></iframe> +</div> +<!-- Leave additional room below the element so it can be scrolled to the center --> +<div style="height: 1000px;">ABC</div> +<script type="application/javascript"> +async function test() { + let utils = SpecialPowers.getDOMWindowUtils(window); + + let iframe = document.querySelector("iframe"); + let textarea = iframe.contentDocument.querySelector("textarea"); + for (let i = 0; i < 20; i++) { + textarea.value += "foo\n"; + } + + let win = iframe.contentWindow; + + iframe.focus(); + textarea.focus(); + + await waitToClearOutAnyPotentialScrolls(win); + + textarea.setSelectionRange(0, 0); + window.scrollTo(0, 0); + await waitToClearOutAnyPotentialScrolls(win); + is(0, window.scrollY, "scroll position is reset"); + + let transformEndPromise = promiseTransformEnd(); + utils.zoomToFocusedInput(); + await promiseApzFlushedRepaints(); + + ok(window.scrollY > 0, "scroll position isn't top"); + ok(iframe.contentWindow.scrollY > 0, "scroll position into iframe isn't top"); + let prevPosY = window.scrollY; + + await transformEndPromise; + await promiseApzFlushedRepaints(); + + window.scrollTo(0, 0); + await waitToClearOutAnyPotentialScrolls(win); + is(0, window.scrollY, "scroll position is reset"); + + textarea.setSelectionRange(textarea.value.length, textarea.value.length); + transformEndPromise = promiseTransformEnd(); + utils.zoomToFocusedInput(); + await transformEndPromise; + await promiseApzFlushedRepaints(); + + ok(window.scrollY > 0, "scroll position isn't top"); + ok(iframe.contentWindow.scrollY > 0, "scroll position into iframe isn't top"); + ok(prevPosY < window.scrollY, + "scroll position is different from first line of textarea"); +} + +waitUntilApzStable().then(test).then(subtestDone, subtestFailed); +</script> +</body> +</html> |