<!DOCTYPE HTML>
<html>
<head>
<script src="../resources/js-test.js"></script>
<script src="../http/tests/resources/pointer-lock/pointer-lock-test-harness.js"></script>
</head>
<body>
<div>
  <div id="target1"></div>
</div>
<script>
    description("Test pointerlock then fullscreen.")
    window.jsTestIsAsync = true;
    shouldBeDefined("window.testRunner");

    targetDiv1 = document.getElementById("target1");

    todo = [
        function () {
            expectOnlyChangeEvent("Lock targetDiv1.");
            targetDiv1.requestPointerLock();
            // doNextStep called by event handler.
        },
        function () {
            shouldBe("document.pointerLockElement", "targetDiv1");
            document.body.onmousedown = function () {
                targetDiv1.webkitRequestFullscreen();
            }
            document.onwebkitfullscreenchange = function () {
                doNextStep();
            }
            eventSender.mouseDown();
        },
        function () {
            shouldBe("document.pointerLockElement", "targetDiv1");
            shouldBe("document.webkitFullscreenElement", "targetDiv1");
            doNextStep();
        },
    ];
    doNextStepWithUserGesture();
</script>
</body>
</html>

