<!DOCTYPE html>
<meta charset="utf-8">
<title>No adjustment on stylus-generated gesturetap</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<a href="#">Link</a><span id="target">O</span>
<script>
test(() => {
    let recorded_content = '';
    document.addEventListener('gesturetap', event => {
        assert_true(recorded_content === '');
        recorded_content = event.target.textContent;
    });

    const target = document.getElementById('target');
    const x = target.offsetLeft + target.offsetWidth / 2;
    const y = target.offsetTop + target.offsetHeight / 2;
    eventSender.gestureTap(
        x, y,
        1 /* tap.tap_count */,
        50 /* tap.width */, 50 /* tap.height */,
        2 /* unique_touch_event_id */,
        'pen' /* primary_pointer_type */);

    assert_equals(recorded_content, 'O');
});
</script>
