<html>
<head>
<script src="../resources/js-test.js"></script>
<script src="../resources/gesture-util.js"></script>
<style>
#plugin {
width: 150px;
height: 150px;
touch-action: none;
background-color: coral;
transform: rotate(90deg);
}
</style>
</head>
<body onload="runTest();">
<embed id="plugin" type="application/x-webkit-test-webplugin" accepts-touch="raw" print-event-details="true"></embed>
<script>
jsTestIsAsync = true;
// Without an event handler, the touch events will be dropped before ever
// reaching Blink.
document.getElementById("plugin").addEventListener('touchstart', () => {});
function touchTapAndMove(xPosition, yPosition, xPosition1, yPosition1) {
if (window.eventSender) {
eventSender.addTouchPoint(xPosition, yPosition);
eventSender.touchStart();
eventSender.updateTouchPoint(0, xPosition1, yPosition1);
eventSender.touchMove();
eventSender.releaseTouchPoint(0);
eventSender.touchEnd();
}
}
function mouseMoveAndClick(xPosition, yPosition, xPosition1, yPosition1) {
return new Promise(function(resolve, reject) {
if (window.chrome && chrome.gpuBenchmarking) {
chrome.gpuBenchmarking.pointerActionSequence( [
{source: 'mouse',
actions: [
{ name: 'pointerMove', x: xPosition, y: yPosition },
{ name: 'pointerDown', x: xPosition, y: yPosition },
{ name: 'pause', duration: 10 },
{ name: 'pointerMove', x: xPosition1, y: yPosition1 },
{ name: 'pointerUp' }
]}], resolve);
} else {
reject();
}
});
}
async function runTest() {
if (!window.testRunner || !window.eventSender) {
document.write("This test requires DumpRenderTree.");
} else {
testRunner.dumpAsText();
// Test touch events.
var positionX = plugin.offsetLeft + plugin.offsetWidth - 10;
var positionY = plugin.offsetTop + 10;
touchTapAndMove(positionX, positionY, positionX - 5, positionY + 10);
// Test mouse events.
await mouseMoveAndClick(positionX, positionY, positionX - 5, positionY + 10);
// Test mouse wheel scroll.
var scroll_position = {x: positionX, y: positionY};
await wheelTick(1, 0, scroll_position);
// Test gesture events.
await touchTapOn(positionX, positionY);
}
finishJSTest();
}
</script>
</body>
</html>