<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<link rel="stylesheet" href="resources/red.css" media="all" title="Default Style Sheet" type="text/css" />
<link rel="alternate stylesheet" href="resources/red.css" media="all" title="green" type="text/css" />
<link rel="alternate stylesheet" href="resources/green.css" media="all" title="green" type="text/css" />
<script type="text/javascript">
    if (window.testRunner)
        testRunner.dumpAsText();

    var red = document.getElementsByTagName("link")[0];
    red.disabled = true;
    var green = document.getElementsByTagName("link")[2];
    green.disabled = false;

    function test() {
        var console = document.getElementById("console");
        if (getComputedStyle(console, null).backgroundColor === "rgb(0, 128, 0)")
            console.innerHTML = "PASSED";
        else
            console.innerHTML = "FAILED, background = " + getComputedStyle(console, null).backgroundColor;
    }
    window.addEventListener("load", test, false);
</script>
</head>
<body>
<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=65140">65140</a>: REGRESSION (r84327-r84329): CSS stylesheets fail to load on www.flagstar.com login page</p>
<p>This test PASSED if PASSED is written below (alternatively the next line should have a GREEN background).</p>
<div id="console">FAILED</div>
</body>
</html>
