<!DOCTYPE html>
<html>
<body>
<p>This tests that the AutoFill button does not render when the field becomes disabled.</p>
<input type="password" id="password" style="width: 100px;">
<script>
if (window.testRunner)
    testRunner.waitUntilDone();

var password = document.getElementById("password");

if (window.internals)
    internals.setShowAutoFillButton(password, "Credentials");

function makeFieldDisabledAndNotifyDone()
{
    password.disabled = true;
    if (window.internals)
        internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
    if (window.testRunner)
        testRunner.notifyDone();
}

window.setTimeout(makeFieldDisabledAndNotifyDone, 0);
</script>
</body>
</html>
