<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Mouse Button Back/Forward</title>
        <link rel="author" title="Google" href="http://www.google.com/" />
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
        <script src="/resources/testdriver.js"></script>
        <script src="/resources/testdriver-actions.js"></script>
        <script src="/resources/testdriver-vendor.js"></script>
        <script>
            var testMouseUp = async_test('Tests that the mouseup is preventable.');
            var received_back = false;
            var received_forward = false;
            const backButton = 3;
            const forwardButton = 4;
            var actions_promise;
            window.addEventListener('mouseup', function(e) {
              if (e.button == backButton) {
                received_back = true;
                e.preventDefault();
              } else if (e.button == forwardButton) {
                received_forward = true;
                e.preventDefault();
              }
              if (received_back && received_forward) {
                // Make sure the test finishes after all the input actions are completed.
                actions_promise.then( () => {
                  testMouseUp.done();
                });
              }
            });

            function inject_input() {
                // First click on back button and then forward button.
                var actions = new test_driver.Actions();
                actions_promise = actions.pointerMove(0, 0, {origin: target})
                    .pointerDown({button: actions.ButtonType.BACK})
                    .pointerUp({button: actions.ButtonType.BACK})
                    .pointerDown({button: actions.ButtonType.FORWARD})
                    .pointerUp({button: actions.ButtonType.FORWARD})
                    .send();
            }
        </script>

    </head>
    <body id="target" onload="inject_input()">
        <h4>Test Description: Tests that the mouseup event is prevented.
            <ol>
                <li>Click the back mouse button</li>
                <li>Click the back mouse forward</li>
            </ol>
        </h4>
    </body>
</html>
