<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1">
<head>
    <script src="../../resources/ui-helper.js"></script>
    <script src="../../resources/js-test.js"></script>
    <style>
        input {
            font-size: 20px;
        }

        input[type="password"] {
            display: none;
        }
    </style>
</head>
<body>
    <input type="text" value="Click me">
    <input type="password">
    <script>
        jsTestIsAsync = true;
        didFinishActivatingElement = false;
        textInput = document.querySelector("input[type='text']");
        passwordInput = document.querySelector("input[type='password']");

        textInput.addEventListener("focus", async () => {
            getComputedStyle(passwordInput).display; // This is necessary in order to reproduce the bug.
            passwordInput.style.display = "block";
            passwordInput.focus();

            shouldBe("document.activeElement", "passwordInput");
            passwordInput.remove();
            textInput.remove();

            await new Promise(resolve => shouldBecomeEqual("didFinishActivatingElement", "true", resolve));
            finishJSTest();
        });

        addEventListener("load", async () => {
            description("This test verifies that programmatically focusing a newly displayed input field changes the active element. To test manually, tap or click the input field below.");
            if (window.testRunner)
                await UIHelper.activateElement(textInput);
            didFinishActivatingElement = true;
        });
    </script>
</body>
</html>
