| (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 ------'); |
| }); |