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

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

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

    testRunner.dumpAsText();
    var pages = internals.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>
