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

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

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

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

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