// Some common helpers
function promiseTimeout(delay) {
return new Promise(resolve => {
setTimeout(resolve, delay);
});
}
function promiseTouchStart(element) {
return new Promise(resolve => {
element.addEventListener("touchstart" , resolve, {
passive: true ,
once: true ,
});
});
}
async function touchScrollRight(aSelector = "#target0" , aX = 20, aY = 20) {
const target = document.querySelector(aSelector);
const touchStartPromise = promiseTouchStart(document.body);
const touchEndPromise = promiseTouchEnd(document.body);
dump("Synthesizing horizontal drag\n" );
await promiseNativePointerDrag(target, "touch" , aX + 40, aY, -40, 0);
await touchStartPromise;
dump("Got touchstart from the horizontal drag\n" );
await touchEndPromise;
dump("Got touchend from the horizontal drag\n" );
}
async function touchScrollDown(aSelector = "#target0" , aX = 20, aY = 20) {
const target = document.querySelector(aSelector);
const touchStartPromise = promiseTouchStart(document.body);
const touchEndPromise = promiseTouchEnd(document.body);
dump("Synthesizing vertical drag\n" );
await promiseNativePointerDrag(target, "touch" , aX, aY + 40, 0, -40);
await touchStartPromise;
dump("Got touchstart from the vertical drag\n" );
await touchEndPromise;
dump("Got touchend from the vertical drag\n" );
}
async function tapCompleteAndWaitTestDone() {
let testDone = new Promise(resolve => {
add_completion_callback(resolve);
});
var button = document.getElementById("btnComplete" );
button.click();
await testDone;
}
function promiseResetScrollLeft(aSelector = "#target0" ) {
var target = document.querySelector(aSelector);
return new Promise(resolve => {
target.addEventListener("scroll" , function onScroll() {
if (target.scrollLeft == 0) {
target.removeEventListener("scroll" , onScroll);
resolve();
}
});
});
}
// The main body functions to simulate the input events required for the named test
async function pointerevent_touch_action_auto_css_touch_manual() {
let testDone = new Promise(resolve => {
add_completion_callback(resolve);
});
await touchScrollRight();
await promiseApzFlushedRepaints();
await touchScrollDown();
await testDone;
}
async function pointerevent_touch_action_button_test_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
await touchScrollRight();
let resetScrollLeftPromise = promiseResetScrollLeft();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
// Wait for resetting target0's scrollLeft to avoid the reset break the
// following scroll behaviors.
await resetScrollLeftPromise;
await touchScrollDown("#target0 > button" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > button" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_inherit_child_auto_child_none_touch_manual() {
await touchScrollDown("#target0 > div div" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > div div" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_inherit_child_none_touch_manual() {
await touchScrollDown("#target0 > div" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > div" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_inherit_child_pan_x_child_pan_x_touch_manual() {
await touchScrollDown("#target0 > div div" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > div div" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_inherit_child_pan_x_child_pan_y_touch_manual() {
await touchScrollDown("#target0 > div div" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > div div" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_inherit_highest_parent_none_touch_manual() {
let testDone = new Promise(resolve => {
add_completion_callback(resolve);
});
await touchScrollDown("#target0 > div" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > div" );
await testDone;
}
async function pointerevent_touch_action_inherit_parent_none_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await touchScrollRight();
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_none_css_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await touchScrollRight();
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_pan_x_css_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await touchScrollRight();
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_pan_x_pan_y_pan_y_touch_manual() {
await touchScrollDown("#target0 > div div" );
await promiseApzFlushedRepaints();
await touchScrollRight("#target0 > div div" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_pan_x_pan_y_touch_manual() {
let testDone = new Promise(resolve => {
add_completion_callback(resolve);
});
await touchScrollDown();
await promiseApzFlushedRepaints();
await touchScrollRight();
await testDone;
}
async function pointerevent_touch_action_pan_y_css_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await touchScrollRight();
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_span_test_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
await touchScrollRight();
let resetScrollLeftPromise = promiseResetScrollLeft();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
// Wait for resetting target0's scrollLeft to avoid the reset break the
// following scroll behaviors.
await resetScrollLeftPromise;
await touchScrollDown("#testspan" );
await promiseApzFlushedRepaints();
await touchScrollRight("#testspan" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_svg_test_touch_manual() {
await touchScrollDown();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
await touchScrollRight();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
await touchScrollDown("#target0" , 250, 250);
await promiseApzFlushedRepaints();
await touchScrollRight("#target0" , 250, 250);
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
async function pointerevent_touch_action_table_test_touch_manual() {
await touchScrollDown("#row1" );
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
await touchScrollRight("#row1" );
let resetScrollLeftPromise = promiseResetScrollLeft();
await promiseApzFlushedRepaints();
await promiseTimeout(2 * scrollReturnInterval);
// Wait for resetting target0's scrollLeft to avoid the reset break the
// following scroll behaviors.
await resetScrollLeftPromise;
await touchScrollDown("#cell3" );
await promiseApzFlushedRepaints();
await touchScrollRight("#cell3" );
await promiseApzFlushedRepaints();
await tapCompleteAndWaitTestDone();
}
// This the stuff that runs the appropriate body function above
// eslint-disable-next-line no-eval
var test = eval(_ACTIVE_TEST_NAME.replace(/-/g, "_" ));
waitUntilApzStable().then(test).then(subtestDone, subtestFailed);
Messung V0.5 C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland