<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
<script src="resources/paged-media-test-utils.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<div id="sandbox"></div>
<script>
description("Test for widows");

function test()
{
    createBlockWithRatioToPageHeight("page1-1", 0.5).style.pageBreakBefore = "always";
    // Here about 10 lines are avaliable at the bottom of the current page.
    // We can leave about 5 lines in the next page. It doesn't violate widows restriction.
    createBlockWithNumberOfLines("page1-2", 15).style.widows = 2;
    // Here about 15 lines should be available in the current page.
    createBlockWithNumberOfLines("page2-1", 10);
    createBlockWithNumberOfLines("page2-2", 2);

    createBlockWithRatioToPageHeight("page3-1", 0.5).style.pageBreakBefore = "always";
    // The second part of 'page3-2' block must contain at least 12 lines in the next page.
    // So the block must be separated in earlier position.
    createBlockWithNumberOfLines("page3-2", 15).style.widows = 12;
    // Here at most 8 (= 20 - 12) lines should be available.
    createBlockWithNumberOfLines("page4", 10);
    createBlockWithNumberOfLines("page5", 2);

    pageNumberForElementShouldBe("page1-1", 1);
    pageNumberForElementShouldBe("page1-2", 1);
    pageNumberForElementShouldBe("page2-1", 2);
    pageNumberForElementShouldBe("page2-2", 2);

    pageNumberForElementShouldBe("page3-1", 3);
    pageNumberForElementShouldBe("page3-2", 3);
    pageNumberForElementShouldBe("page4", 4);
    pageNumberForElementShouldBe("page5", 5);

    document.body.removeChild(document.getElementById("sandbox"));
}

var successfullyParsed = true;
</script>
<script>runPrintingTest(test);</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
