Bug 1705976 - A test that double tapping inside OOP iframe doesn't zoom if the top level document disallows zooming. r=tnikkel

Differential Revision: https://phabricator.services.mozilla.com/D119042
This commit is contained in:
Hiroyuki Ikezoe 2021-07-05 00:48:42 +00:00
Родитель 1dbe2952b1
Коммит 7d2d0b1c1b
3 изменённых файлов: 72 добавлений и 3 удалений

Просмотреть файл

@ -1455,15 +1455,19 @@ async function pinchZoomOutWithTouchAtCenter() {
}
// useTouchpad is only currently implemented on macOS
async function doubleTapOn(element, x, y, useTouchpad) {
let transformEndPromise = promiseTransformEnd();
function synthesizeDoubleTap(element, x, y, useTouchpad) {
if (useTouchpad) {
synthesizeNativeTouchpadDoubleTap(element, x, y);
} else {
synthesizeNativeTap(element, x, y);
synthesizeNativeTap(element, x, y);
}
}
// useTouchpad is only currently implemented on macOS
async function doubleTapOn(element, x, y, useTouchpad) {
let transformEndPromise = promiseTransformEnd();
synthesizeDoubleTap(element, x, y, useTouchpad);
// Wait for the APZ:TransformEnd to fire
await transformEndPromise;

Просмотреть файл

@ -0,0 +1,58 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="user-scalable=no"/>
<title>Check that double tapping inside an oop iframe doesn't work if the top
level content document doesn't allow zooming</title>
<script src="apz_test_native_event_utils.js"></script>
<script src="apz_test_utils.js"></script>
<script src="/tests/SimpleTest/paint_listener.js"></script>
<script>
async function test() {
let useTouchpad = (location.search == "?touchpad");
let resolution = getResolution();
ok(resolution > 0,
"The initial_resolution is " + resolution + ", which is some sane value");
// Set up a Promise waiting for a TransformEnd which should never happen.
promiseTransformEnd().then(() => {
ok(false, "No TransformEnd should happen!");
});
// A double tap inside the OOP iframe.
synthesizeDoubleTap(document.getElementById("target"), 20, 20, useTouchpad);
for (let i = 0; i < 10; i++) {
await promiseFrame();
}
// Flush state just in case.
await promiseApzFlushedRepaints();
let prev_resolution = resolution;
resolution = getResolution();
is(resolution, prev_resolution, "No zoom should happen");
}
waitUntilApzStable()
.then(test)
.then(subtestDone, subtestFailed);
</script>
<style>
iframe {
margin: 0;
padding: 0;
border: 1px solid black;
}
</style>
</head>
<body>
<iframe id="target" width="100" height="100" src="http://example.org/"></iframe>
</body>
</html>

Просмотреть файл

@ -38,6 +38,11 @@ var disable_default_zoomin_and_doubletap_prefs = [
["apz.doubletapzoom.defaultzoomin", "1.0"],
];
var meta_viewport_and_doubletap_prefs = [
...doubletap_prefs,
["dom.meta-viewport.enabled", true],
];
var subtests = [
{"file": "helper_doubletap_zoom_smooth.html", "prefs": longeranimation_visualviewport_and_doubletap_prefs},
{"file": "helper_doubletap_zoom_fixedpos_overflow.html", "prefs": logging_and_doubletap_prefs},
@ -51,6 +56,7 @@ var subtests = [
{"file": "helper_doubletap_zoom_noscroll.html", "prefs": visualviewport_and_doubletap_prefs},
{"file": "helper_doubletap_zoom_square.html", "prefs": visualviewport_and_doubletap_prefs},
{"file": "helper_doubletap_zoom_oopif.html", "prefs": doubletap_prefs},
{"file": "helper_disallow_doubletap_zoom_inside_oopif.html", "prefs": meta_viewport_and_doubletap_prefs},
];
if (getPlatform() == "mac") {
@ -67,6 +73,7 @@ if (getPlatform() == "mac") {
{"file": "helper_doubletap_zoom_noscroll.html?touchpad", "prefs": visualviewport_and_doubletap_prefs},
{"file": "helper_doubletap_zoom_square.html?touchpad", "prefs": visualviewport_and_doubletap_prefs},
{"file": "helper_doubletap_zoom_oopif.html?touchpad", "prefs": doubletap_prefs},
{"file": "helper_disallow_doubletap_zoom_inside_oopif.html?touchpad", "prefs": meta_viewport_and_doubletap_prefs},
);
}