<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="width=device-width initial-scale=1 user-scalable=no">
<title>This tests that we fire two click events on double tap when dblclick handler is removed dynamically.</title>
<script src="../../../../resources/ui-helper.js"></script>
<style>
#doubleTapthis {
    width: 400px;
    height: 400px;
    border: 1px solid green;
}
</style>
</head>
<body onload="test()">
<div id=doubleTapthis>PASS if '[click][click]' text is shown below.</div>
<pre id=result></pre>
<script>

function dblclickHandler(event) {
    result.innerHTML = result.innerHTML + "[should not double click]";
}

doubleTapthis.addEventListener("dblclick", dblclickHandler, false);

let numberOfClicks = 0;
doubleTapthis.addEventListener("click", function( event ) {   
    result.innerHTML = result.innerHTML + "[click]";
    if (++numberOfClicks == 2 && window.testRunner)
        setTimeout("testRunner.notifyDone()", 0);
}, false);

async function test() {
    doubleTapthis.removeEventListener("dblclick", dblclickHandler, false);

    if (!window.testRunner || !testRunner.runUIScript)
        return;

    testRunner.waitUntilDone();
    testRunner.dumpAsText();

    await UIHelper.humanSpeedDoubleTapAt(doubleTapthis.offsetLeft, doubleTapthis.offsetTop);
}
</script>
</body>
</html>
