<!doctype html>
<html>
    <head>
        <title>Pointermove</title>
        <meta name="viewport" content="width=device-width">
        <meta name="assert" content="When a pointer changes coordinates, the pointermove event must be dispatched."/>
        <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <!-- Additional helper script for common checks across event types -->
        <script type="text/javascript" src="pointerevent_support.js"></script>
    </head>
    <body onload="run()">
        <h2>PointerMove</h2>
        <h4>Test Description: This test checks if pointermove event triggers. Move your mouse over the black rectangle or slide it if you are using touchscreen.</h4>
        <div id="target0" style="background:black"></div>
        <script>
            var eventTested = false;
            var detected_pointertypes = {};
            var test_pointermove = async_test("pointermove event received");
            add_completion_callback(showPointerTypes);

            function run() {
                var target0 = document.getElementById("target0");

                // When a pointer changes coordinates, the pointermove event must be dispatched.
                // TA: 5.3
                on_event(target0, "pointermove", function (event) {
                    detected_pointertypes[event.pointerType] = true;
                    if (eventTested == false) {
                        test_pointermove.done();
                        eventTested = true;
                    }
                });
            }
        </script>
        <h1>Pointer Events pointermove Tests</h1>
        <div id="complete-notice">
            <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
            <p>Refresh the page to run the tests again with a different pointer type.</p>
        </div>
        <div id="log"></div>
    </body>
</html>