<html>
<head id="head">
    <style id="inlineRules">
        #foo { background-color: red; }
    </style>
    <link rel="stylesheet" href="data:text/css,">
</head>
<body>
    <p>
        Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=13563">http://bugs.webkit.org/show_bug.cgi?id=13563</a>
        REGRESSION: Crash loading message in Yahoo! Mail</i>.
    </p>
    <p>
        The following line should say SUCCESS in green letters over a white background.
    </p>
    <div id="foo">SUCCESS</div>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        // Force a layout ignoring pending stylesheets
        document.body.offsetTop;

        var inline = document.getElementById("inlineRules");
        // This will delete the rule (duh) but since we have
        // pending stylesheets, will NOT update the style selector
        inline.sheet.deleteRule(0);

        // Make ourselves need a style recalc, so that
        // updateRendering() will do something when called soon
        document.getElementById("foo").style.color = "green";
    </script>
</body>
</html>
