<!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 break-after:avoid-page");

function test()
{
    createBlockWithRatioToPageHeight("page1", 0.5).style.breakBefore = "page";
    // A block 'page2-1' must move to the next page because it has 'page-break-after:avoid'
    // and both 'page2-1' and 'page2-2' cannot be placed in the current page at the same time.
    createBlockWithRatioToPageHeight("page2-1", 0.3).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page2-2", 0.3);

    createBlockWithRatioToPageHeight("page3-1", 0.5).style.breakBefore = "page";
    // A page break can occur inside of 'page3-3' block because it has child elements.
    createBlockWithRatioToPageHeight("page3-2", 0.3).style.breakAfter = "avoid-page";
    createBlockWithNumberOfLines("page3-3", 10);

    createBlockWithRatioToPageHeight("page5", 0.5).style.breakBefore = "page";
    // It seems unrealistic, but block 'page6-1' must move to the next page.
    createBlockWithRatioToPageHeight("page6-1", 0.1).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page6-2", 0.1).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page6-3", 0.1).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page6-4", 0.1).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page6-5", 0.1).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page6-6", 0.1).style.breakAfter = "avoid-page";
    createBlockWithRatioToPageHeight("page6-7", 0.1);


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

    pageNumberForElementShouldBe("page3-1", 3);
    pageNumberForElementShouldBe("page3-2", 3);
    pageNumberForElementShouldBe("page3-3", 3);

    pageNumberForElementShouldBe("page5", 5);
    pageNumberForElementShouldBe("page6-1", 6);
    // Omit tests for intermediate blocks.
    pageNumberForElementShouldBe("page6-7", 6);

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

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