chromium/third_party/blink/web_tests/printing/script-tests/page-break-orphans-and-widows.js

description("Test for orphans and widows");

function test()
{
    var block;
    createBlockWithNumberOfLines("page1-1", 10).style.pageBreakBefore = "always";
    // 10 lines lines are available in the current page.
    block = createBlockWithNumberOfLines("page1-2", 9);
    block.style.orphans = 10;
    block.style.widows = 20;
    // block 'page1-2' can be placed on the current page.
    createBlockWithRatioToPageHeight("page1-3", 0.01);

    createBlockWithNumberOfLines("page2", 10).style.pageBreakBefore = "always";
    // 10 lines lines are available in the current page.
    block = createBlockWithNumberOfLines("page3", 12);
    block.style.orphans = 15;
    block.style.widows = 2;
    // block 'page3' must move as a block to the next page because of 'orphans'.

    createBlockWithNumberOfLines("page4", 10).style.pageBreakBefore = "always";
    // 10 lines lines are available in the current page.
    block = createBlockWithNumberOfLines("page5", 12);
    block.style.orphans = 2;
    block.style.widows = 15;
    // block 'page5' must move as a block to the next page because of 'widows'.

    createBlockWithNumberOfLines("page6-1", 10).style.pageBreakBefore = "always";
    // 10 lines lines are available in the current page.
    block = createBlockWithNumberOfLines("page6-2", 12);
    block.style.orphans = 6;
    block.style.widows = 6;
    // block 'page6' must be splitted.
    createBlockWithRatioToPageHeight("page7", 0.01);

    createBlockWithNumberOfLines("page8", 10).style.pageBreakBefore = "always";
    // 10 lines lines are available in the current page.
    block = createBlockWithNumberOfLines("page9", 12);
    block.style.orphans = 10;
    block.style.widows = 10;
    // block 'page9' must move as a block to the next page because we cannot satisfy
    // both 'orphans' and 'widows' at the same time.

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

    pageNumberForElementShouldBe("page2", 2);
    pageNumberForElementShouldBe("page3", 3);

    pageNumberForElementShouldBe("page4", 4);
    pageNumberForElementShouldBe("page5", 5);

    pageNumberForElementShouldBe("page6-1", 6);
    pageNumberForElementShouldBe("page6-2", 6);
    pageNumberForElementShouldBe("page7", 7);

    pageNumberForElementShouldBe("page8", 8);
    pageNumberForElementShouldBe("page9", 9);

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

var successfullyParsed = true;