summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/printing/page-rule-selection.html
blob: b30b08e325cfad4877f962fd9da4dd6e165d3b86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!DOCTYPE html>
<html id="html_element">
<head id="head_element">
<script src="../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
    description("This tests page style selection.");

    function appendStyle(styleString)
    {
        var styleElement = document.createElement("style");
        styleElement.innerHTML = styleString;
        document.getElementById("head_element").appendChild(styleElement);
    }

    if (window.testRunner) {
        testRunner.dumpAsText();

        debug("Default margin is auto.");
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "auto");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "auto");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "auto");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "auto");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "auto");

        debug("Set margin to 200px via user style sheet.");
        testRunner.addUserStyleSheet("@page { margin:200px; }", true);
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "200");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "200");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "200");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "200");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "200");

        debug("Set margin to 100px.");
        appendStyle("@page { margin:100px; }");
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "100");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "100");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "100");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "100");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "100");

        debug("Set margin for right pages to 50px. The first page is a right page.");
        appendStyle("@page :right { margin:50px; }");
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "100");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "100");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "50");

        debug("Set margin for left pages to 75px.");
        appendStyle("@page :left { margin:75px; }");
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "75");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "75");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "50");

        debug("Set margin for the first page to 125px.");
        appendStyle("@page :first { margin:125px; }");
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "125");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "75");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "75");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "50");

        debug("Change the document direction to RTL. This makes the first page a left page.");
        document.getElementById("html_element").setAttribute("dir", "rtl");
        shouldBeEqualToString("internals.pageProperty('margin-left', 0)", "125");
        shouldBeEqualToString("internals.pageProperty('margin-left', 1)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 2)", "75");
        shouldBeEqualToString("internals.pageProperty('margin-left', 3)", "50");
        shouldBeEqualToString("internals.pageProperty('margin-left', 4)", "75");

        debug("Check font update and line height override.");
        appendStyle("@page { line-height:1em; }");
        appendStyle("@page { font-family:Futura; }");
        appendStyle("@page { font:15px/6em Arial; }");
        appendStyle("@page { zoom:200%; }");
        shouldBeEqualToString("internals.pageProperty('line-height', 0)", "180");
        shouldBeEqualToString("internals.pageProperty('font-family', 0)", "Arial");
        shouldBeEqualToString("internals.pageProperty('font-size', 0)", "30");
        appendStyle("@page { zoom:100%; }");

        debug("Check @media rules.");
        appendStyle("@page { size:100px 200px; }");
        shouldBeEqualToString("internals.pageProperty('size', 0)", "100 200");
        appendStyle("@media print { @page { size:150px 250px; } }");
        shouldBeEqualToString("internals.pageProperty('size', 0)", "150 250");
        appendStyle("@media screen { @page { size:300px 500px; } }");
        shouldBeEqualToString("internals.pageProperty('size', 0)", "150 250");

    } else {
        testFailed("This test can be run only with window.testRunner");
    }
</script>
</body>
</html>