<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<title>This tests the case when the touch target is hidden (hidden at the time of touch start and it does remain hidden throughout the hover heuristics).</title>
<script src="../../../../../resources/ui-helper.js"></script>
<style>
#tapThis {
    opacity: 0;
    width: 400px;
    height: 400px;
    border: 1px solid green;
}
</style>
<script>
async function test() {
    if (!window.testRunner || !testRunner.runUIScript)
        return;
    if (window.internals)
        internals.settings.setContentChangeObserverEnabled(true);

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

    await UIHelper.activateElement(tapThis);
}
</script>
</head>
<body onload="test()">
<button id=tapThis></button>
<div>PASS if 'clicked' text is shown below.</div>
<pre id=result></pre>
<script>
tapThis.addEventListener("click", function( event ) {   
    result.innerHTML = "clicked";
    if (window.testRunner)
        testRunner.notifyDone();
}, false);
</script>
</body>
</html>
