File: cssom-pagerule.html

package info (click to toggle)
firefox-esr 140.4.0esr-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,539,276 kB
  • sloc: cpp: 7,381,286; javascript: 6,388,710; ansic: 3,710,139; python: 1,393,780; xml: 628,165; asm: 426,918; java: 184,004; sh: 65,742; makefile: 19,302; objc: 13,059; perl: 12,912; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,226; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (130 lines) | stat: -rw-r--r-- 4,360 bytes parent folder | download | duplicates (8)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html>
<title>CSSOM: CSSPageRule tests</title>
<link rel="help" href="https://drafts.csswg.org/cssom/#the-csspagerule-interface" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
  @page {}
</style>
<script>
  const sheet = document.styleSheets[0];
  const rule = sheet.cssRules[0];

  test(() => {
    assert_true(!!rule);
    assert_equals(rule.type, CSSRule.PAGE_RULE);
  }, "Sanity checks");

  test(() => {
    assert_equals(rule.selectorText, "");
  }, "Page selector is initially the empty string");

  test(() => {
    assert_equals(rule.cssText, "@page { }");
  }, "Page selector 'cssText' is initially the @page { }");

  test(() => {
    rule.selectorText = ":left";
    assert_equals(rule.selectorText, ":left");
  }, "Set selectorText to :left pseudo page");

  test(() => {
    rule.selectorText = ":left";
    assert_equals(rule.cssText, "@page :left { }");
  }, "Set cssText to :left pseudo page");

  test(() => {
    rule.selectorText = "named";
    assert_equals(rule.selectorText, "named");
  }, "Set selectorText to named page");

  test(() => {
    rule.selectorText = "named";
    assert_equals(rule.cssText, "@page named { }");
  }, "Set cssText to named page");

  test(() => {
    rule.selectorText = "named:first";
    assert_equals(rule.selectorText, "named:first");
  }, "Set selectorText to named page with :first pseudo page");

  test(() => {
    rule.selectorText = "named:first";
    assert_equals(rule.cssText, "@page named:first { }");
  }, "Set cssText to named page with :first pseudo page");

  test(() => {
    rule.selectorText = "named:First";
    assert_equals(rule.selectorText, "named:first");
  }, "Set selectorText to named page with case insensitive :first pseudo page");

  test(() => {
    rule.selectorText = "named:First";
    assert_equals(rule.cssText, "@page named:first { }");
  }, "Set cssText to named page with case insensitive :first pseudo page");

  test(() => {
    rule.selectorText = "named:first:first";
    assert_equals(rule.selectorText, "named:first:first");
  }, "Set selectorText to named page with two :first pseudo page");

  test(() => {
    rule.selectorText = "named:first:first";
    assert_equals(rule.cssText, "@page named:first:first { }");
  }, "Set cssText to named page with two :first pseudo page");

  test(() => {
    rule.selectorText = "named:first:left:right:first";
    assert_equals(rule.selectorText, "named:first:left:right:first");
  }, "Set selectorText to named page with pseudo pages of " +
    ":first, :left, :right, :first in order.");

    test(() => {
    rule.selectorText = "named:first:left:right:first";
    assert_equals(rule.cssText, "@page named:first:left:right:first { }");
  }, "Set cssText to named page with pseudo pages of " +
    ":first, :left, :right, :first in order.");

  test(() => {
    rule.selectorText = "";
    rule.selectorText = "named :first";
    assert_equals(rule.selectorText, "");
  }, "Cannot set selectorText to named page with pseudo, whitespace between");

  test(() => {
    rule.selectorText = "";
    rule.selectorText = "named :first";
    assert_equals(rule.cssText, "@page { }");
  }, "Cannot set cssText to named page with pseudo, whitespace between - return default @page { }");

  test(() => {
    rule.selectorText = "";
    rule.selectorText = ":first :left";
    assert_equals(rule.selectorText, "");
  }, "Cannot set selectorText to two pseudos, whitespace between");

  test(() => {
    rule.selectorText = "";
    rule.selectorText = ":first :left";
    assert_equals(rule.cssText, "@page { }");
  }, "Cannot set cssText to two pseudos, whitespace between - return default @page { }");

  test(() => {
    rule.selectorText = "";
    rule.selectorText = ":notapagepseudo";
    assert_equals(rule.selectorText, "");
  }, "Cannot set selectorText to invalid pseudo page");

  test(() => {
    rule.selectorText = "";
    rule.selectorText = ":notapagepseudo";
    assert_equals(rule.cssText, "@page { }");
  }, "Cannot set cssText to invalid pseudo page - return default @page { }");

  test(() => {
    assert_equals(rule.parentStyleSheet, sheet);
    sheet.deleteRule(0);
    assert_equals(rule.parentStyleSheet, null);
    rule.selectorText = "pagename";
  }, "Set selectorText to named page after rule was removed");
</script>