blob: 1cc989be866560e101b486024f5d482355e02b63 [file] [log] [blame]
(async function (testRunner) {
var { session, dp } = await testRunner.startBlank(`Tests Input.dispatchTouchEvent method.`);
await dp.Runtime.addBinding({ name: 'logEvent' });
await dp.Runtime.addBinding({ name: 'logString' });
dp.Runtime.onBindingCalled(data => {
if (data.params.name === 'logString') {
testRunner.log(data.params.payload);
if (data.params.payload === '\n------- Done ------') {
testRunner.completeTest();
}
} else {
const event = JSON.parse(data.params.payload);
testRunner.log('-----Event-----');
testRunner.log('type: ' + event.type);
if (event.shiftKey)
testRunner.log('shiftKey');
testRunner.log('----Touches----');
for (var i = 0; i < event.touches.length; i++) {
var touch = event.touches[i];
testRunner.log('id: ' + i);
testRunner.log('pageX: ' + touch.pageX);
testRunner.log('pageY: ' + touch.pageY);
testRunner.log('radiusX: ' + touch.radiusX);
testRunner.log('radiusY: ' + touch.radiusY);
testRunner.log('rotationAngle: ' + touch.rotationAngle);
testRunner.log('force: ' + touch.force);
}
}
});
await session.evaluate(`
function logTouchEvent(event) {
event.preventDefault();
logEvent(JSON.stringify({
type: event.type,
shiftKey: event.shiftKey,
touches: Array.from(event.touches, (touch) => ({
pageX: touch.pageX,
pageY: touch.pageY,
radiusX: touch.radiusX,
radiusY: touch.radiusY,
rotationAngle: touch.rotationAngle,
force: touch.force,
})),
}));
}
window.addEventListener('touchstart', logTouchEvent, {passive: false});
window.addEventListener('touchend', logTouchEvent, {passive: false});
window.addEventListener('touchmove', logTouchEvent, {passive: false});
window.addEventListener('touchcancel', logTouchEvent, {passive: false});
`);
async function log(message) {
// Pipe messages through the session to make sure they arrive in order.
await session.evaluate(`logString(${JSON.stringify(message)})`);
}
async function dispatchEvent(params, shouldFail = false, numberOfExpectedEvents = 1) {
await log('\nDispatching event:');
await log(`${params.type} with ${params.touchPoints.length} touch points`);
const response = await dp.Input.dispatchTouchEvent(params);
if (response.error) {
await log(response);
await log('');
}
}
await log('\n\n------- Sequence 1 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 200
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 200,
y: 100
}]
});
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Sequence 2 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 20,
y: 30,
id: 0
}, {
x: 100,
y: 200,
radiusX: 5,
radiusY: 6,
rotationAngle: 1.0,
force: 0.0,
id: 1
}],
modifiers: 8 // shift
}, false, 2);
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Sequence 3 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 20,
y: 30,
id: 0
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 20,
y: 30,
id: 0
}, {
x: 100,
y: 200,
id: 1
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 25,
y: 36,
id: 0
}, {
x: 101,
y: 202,
id: 1
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 103,
y: 203,
id: 1
}]
});
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Sequence 4 ------');
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Sequence 5 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: []
});
await log('\n------- Sequence 6 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100
}]
});
await dispatchEvent({
type: 'touchCancel',
touchPoints: [{
x: 100,
y: 100
}]
});
await dispatchEvent({
type: 'touchCancel',
touchPoints: []
});
await log('\n------- Sequence 7 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 100,
y: 100
}]
}, true);
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 100,
y: 100
}]
}, true);
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Sequence 8 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100,
id: 1
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 100,
y: 100,
id: 2
}]
});
await dispatchEvent({
type: 'touchCancel',
touchPoints: []
});
await log('\n------- Sequence 9 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100,
id: 1
}]
});
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100,
id: 1
}, {
x: 150,
y: 100,
id: 2
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 100,
y: 150,
id: 1
}, {
x: 150,
y: 150,
id: 2
}]
});
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Sequence 10 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100,
id: 1
}, {
x: 150,
y: 100,
id: 2
}]
});
await dispatchEvent({
type: 'touchCancel',
touchPoints: []
});
await log('\n------- Sequence 11 ------');
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 100,
y: 100,
id: 1
}]
});
await dispatchEvent({
type: 'touchStart',
touchPoints: [{
x: 150,
y: 100,
id: 2
}]
});
await dispatchEvent({
type: 'touchMove',
touchPoints: [{
x: 100,
y: 150,
id: 1
}]
});
await dispatchEvent({
type: 'touchEnd',
touchPoints: [{
x: 150,
y: 100,
id: 2
}]
});
await dispatchEvent({
type: 'touchEnd',
touchPoints: []
});
await log('\n------- Done ------');
});