<html>
<title>Test for marquee scrolling behavior</title>
<script>
    if (window.testRunner)
        testRunner.waitUntilDone();

    function waitForMarquee()
    {
        var counter = 0;
        var marqueeWidth = document.getElementById('marquee').offsetWidth;
        var numSteps = 1 + marqueeWidth / 6; // Default scrollAmount is 6px
        
        var interval = window.setInterval(function() {
            if (++counter >= numSteps) {
                window.clearInterval(interval);
                if (window.testRunner)
                    testRunner.notifyDone();
            }
        }, 16);
    }
    window.addEventListener('load', waitForMarquee, false);
</script>
<body>

<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=15263">bug 15263</a>:
REGRESSION: scrolldelay=0 causes marquee not to display</p>

<p>The marquee below is defined with a scrollDelay value of zero and with the truespeed attribute assigned to an empty string.  It should scroll until the text, &quot;The marquee scroll test passed&quot; is visible and left justified.</p>

<marquee id="marquee" width="300px" behavior="slide" bgcolor="cyan" truespeed="" scrollDelay="0">
The marquee scroll test passed
</marquee>

</body>
</html>
