// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* Dispatches a fake touch event with a single touch point.
*
* @param {number} x X-coordinate of the touch point relative to viewport
* in CSS pixels.
* @param {number} y Y-coordinate of the touch point relative to viewport
* in CSS pixels.
* @param {string} type Touch event type, e.g. touchstart.
*/
function dispatchTouchEvent(x, y, type) {
var element = window.document.elementFromPoint(x, y);
var inputDeviceCapabilities =
new InputDeviceCapabilities({firesTouchEvents: true});
var touch = new Touch({
identifier: 0,
target: element,
clientX: x,
clientY: y,
pageX: x + window.document.scrollingElement.scrollLeft,
pageY: y + window.document.scrollingElement.scrollTop,
force: 1,
radiusX: 1,
radiusY: 1,
screenX: x + window.screenX,
screenY: y + window.screenY,
});
var event = new TouchEvent(type, {
touches: [touch],
targetTouches: [touch],
changedTouches: [touch],
ctrlKey: false,
shiftKey: false,
altKey: false,
metaKey: false,
view: window,
bubbles: true,
cancelable: false,
composed: true,
sourceCapabilities: inputDeviceCapabilities,
});
element.dispatchEvent(event);
}