2010-06-19 Hayato Ito <hayato@chromium.org>
[WebKit-https.git] / LayoutTests / printing / script-tests / page-break-before-avoid.js
1 description("Test for page-break-before:avoid");
2
3 function test()
4 {
5     createBlockWithRatioToPageHeight("page1", 0.5).style.pageBreakBefore = "always";
6     // A block 'page2-1' must move to the next page because the following block 'page2-2'
7     // has 'page-break-before:avoid' and both blocks cannot be placed in the current page
8     // at the same time.
9     createBlockWithRatioToPageHeight("page2-1", 0.3);
10     createBlockWithRatioToPageHeight("page2-2", 0.3).style.pageBreakBefore = "avoid";
11
12     createBlockWithRatioToPageHeight("page3-1", 0.5).style.pageBreakBefore = "always";
13     // A page break can occur inside of 'page3-3' block because it has child elements.
14     createBlockWithRatioToPageHeight("page3-2", 0.3);
15     createBlockWithNumberOfLines("page3-3", 10).style.pageBreakBefore = "avoid";
16
17     createBlockWithRatioToPageHeight("page5", 0.5).style.pageBreakBefore = "always";
18     // It seems unrealistic, but block 'page6-1' must move to the next page.
19     createBlockWithRatioToPageHeight("page6-1", 0.1);
20     createBlockWithRatioToPageHeight("page6-2", 0.1).style.pageBreakBefore = "avoid";
21     createBlockWithRatioToPageHeight("page6-3", 0.1).style.pageBreakBefore = "avoid";
22     createBlockWithRatioToPageHeight("page6-4", 0.1).style.pageBreakBefore = "avoid";
23     createBlockWithRatioToPageHeight("page6-5", 0.1).style.pageBreakBefore = "avoid";
24     createBlockWithRatioToPageHeight("page6-6", 0.1).style.pageBreakBefore = "avoid";
25     createBlockWithRatioToPageHeight("page6-7", 0.1).style.pageBreakBefore = "avoid";
26
27     // We don't define where block 'page7or8-1' is placed.
28     createBlockWithRatioToPageHeight("page7", 0.5).style.pageBreakBefore = "always";
29     createBlockWithRatioToPageHeight("page7or8-1", 0.1);
30     createBlockWithRatioToPageHeight("page7or8-2", 3).style.pageBreakBefore = "avoid";
31     createBlockWithRatioToPageHeight("page10", 0.1);
32
33     pageNumberForElementShouldBe("page1", 1);
34     pageNumberForElementShouldBe("page2-1", 2);
35     pageNumberForElementShouldBe("page2-2", 2);
36
37     pageNumberForElementShouldBe("page3-1", 3);
38     pageNumberForElementShouldBe("page3-2", 3);
39     pageNumberForElementShouldBe("page3-3", 3);
40
41     pageNumberForElementShouldBe("page5", 5);
42     pageNumberForElementShouldBe("page6-1", 6);
43     // Omit tests for intermediate blocks.
44     pageNumberForElementShouldBe("page6-7", 6);
45
46     pageNumberForElementShouldBe("page7", 7);
47     pageNumberForElementShouldBe("page10", 10);
48
49     document.body.removeChild(document.getElementById("sandbox"));
50 }
51
52 var successfullyParsed = true;