<!DOCTYPE html>
<script src='../../../resources/testharness.js'></script>
<script src='../../../resources/testharnessreport.js'></script>
<style type="text/css">
#box {
width: 300px;
height: 100px;
}
</style>
<div id="box" ></div>
<script type="text/javascript">
test(function(t) {
var receivedTap = false;
var input_types = [];
var box = document.getElementById('box');
var targetRect = box.getBoundingClientRect();
var offset = 50;
var x = targetRect.left + offset;
var y = targetRect.top + offset;
const floatPrecision = 0.00001;
function validTapResult(event) {
receivedTap = true;
assert_equals(event.target.id, "box");
assert_approx_equals(event.clientX, x, floatPrecision);
assert_approx_equals(event.clientY, y, floatPrecision);
assert_approx_equals(event.screenX, x+window.screenX, floatPrecision);
assert_approx_equals(event.screenY, y+window.screenY, floatPrecision);
}
function validPointerDownResult(event) {
input_types.push(event.pointerType);
assert_equals(event.target.id, "box");
assert_approx_equals(event.clientX, x, floatPrecision);
assert_approx_equals(event.clientY, y, floatPrecision);
assert_approx_equals(event.screenX, x+window.screenX, floatPrecision);
assert_approx_equals(event.screenY, y+window.screenY, floatPrecision);
}
var testTap = async_test('Send a tap event.');
testTap.step(function () {
box.addEventListener('click', validTapResult);
box.addEventListener('pointerdown', validPointerDownResult);
if (window.chrome && chrome.gpuBenchmarking) {
var inputs = [chrome.gpuBenchmarking.TOUCH_INPUT, chrome.gpuBenchmarking.MOUSE_INPUT];
for (var input of inputs) {
chrome.gpuBenchmarking.tap(x, y, function() {
assert_true(receivedTap);
if (input_types.join(' ') == "touch mouse") {
testTap.done();
}
}, 50, input);
}
}
});
}, 'Test that chrome.gpuBenchmarking.tap always taps on the expected position no matter what the screen scale factor is.');
test(function(t) {
if (window.chrome && chrome.gpuBenchmarking) {
var exception;
try {
chrome.gpuBenchmarking.tap(-1, -1, t.unreached_func('Listener should not fire'));
} catch(e) {
exception = e;
}
assert_not_equals(exception, undefined);
}
}, 'Test that chrome.gpuBenchmarking.tap throws an exception on invalid input values.');
</script>