<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true AsyncOverflowScrollingEnabled=true AsyncFrameScrollingEnabled=true ] -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="../../../resources/js-test.js"></script>
<script src="../../../resources/ui-helper.js"></script>
<style>
html, body {
    width: 100%;
    height: 100%;
    margin: 0px;
    padding: 0px;
}

#scroller {
    width: 100%;
    height: 250px;
    overflow: scroll;
    border: 4px solid black;
    box-sizing: border-box;
}

#content {
    width: 100px;
    height: 5000px;
    box-sizing: border-box;
    padding: 20px;
    background: linear-gradient(to bottom, red 0%, green 50%, blue 100%);
}

#target {
    width: 100px;
    height: 100px;
    margin-top: 50px;
    background-color: tomato;
    color: white;
    line-height: 100px;
    text-align: center;
}
</style>
<body onload="runTest()">
    <div id="scroller">
        <div id="content"></div>
    </div>
    <div id="target">Tap here</div>
    <p id="description"></p>
    <p id="console"></p>
</body>
<script>
jsTestIsAsync = true;
observedClick = false;

const minimumExpectedScrollTop = 100;
const scroller = document.getElementById("scroller");
const target = document.getElementById("target");
async function runTest()
{
    target.addEventListener("click", () => observedClick = true);

    description("Verifies that tapping outside of a subscrollable region during momentum scrolling dispatches click events. To run the test manually, swipe up on the black box to scroll it; while scrolling, tap the red box and verify that a click event is dispatched.");

    while (scroller.scrollTop < minimumExpectedScrollTop) {
        if (window.testRunner)
            await UIHelper.dragFromPointToPoint(250, 200, 250, 20, 0.1);
        await UIHelper.delayFor(200);
    }

    testPassed("scrolled to minimum threshold");

    if (window.testRunner)
        await UIHelper.activateElement(target);

    shouldBe("observedClick", "true");
    finishJSTest();
}
</script>
</html>
