<html>
<head>
<style type="text/css">
    div {
        white-space: pre;
    }
</style>
<script type="text/javascript">

function runTest()
{
    if (!window.layoutTestController)
        return;

    var block = document.getElementById('test');
    for (var i = 0; i < 100; i++)
        document.body.appendChild(block.cloneNode(true));

    layoutTestController.dumpAsText();
    var pages = layoutTestController.numberOfPages();
    document.body.textContent = 'Document has ' + pages + ' pages.';
}

</script>
<head>
<body onload="runTest()">
    This test verifies that the page count is correctly updated when the document is scaled to fit.
    <div id="test" style="clear: both;">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus scelerisque volutpat.
        Suspendisse potenti. Donec tristique ligula ut nisl fermentum ac venenatis libero tempus.
        Aenean laoreet tristique ultrices. In hendrerit varius velit, a hendrerit diam gravida eu.
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut iaculis imperdiet nulla ac imperdiet.
        Nunc rhoncus feugiat libero, et porttitor metus molestie at.
        Aenean faucibus urna ac arcu viverra tristique.
        Aliquam sodales, urna eget tempor convallis, arcu arcu imperdiet massa, nec gravida purus metus et dui.
        Quisque dignissim nibh placerat mi viverra dignissim. Sed hendrerit, lectus nec auctor imperdiet, velit dolor aliquam magna, vel euismod mi odio vel velit.
        Nunc dui sem, dignissim et iaculis a, imperdiet sit amet nibh. Curabitur at quam nibh, at tristique nibh. Suspendisse tincidunt nibh augue.
        Donec tortor libero, pulvinar dapibus volutpat eu, luctus vel lectus.
        Aenean tincidunt interdum arcu sed mollis. Morbi tellus felis, tincidunt in venenatis eu, ultricies in felis.
    </div>
</body>
</html>
