1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.css;
16
17 import static org.htmlunit.BrowserVersionFeatures.CSS_CSSTEXT_FF_STYLE;
18
19 import java.util.Locale;
20
21 import org.apache.commons.lang3.StringUtils;
22 import org.htmlunit.BrowserVersion;
23 import org.htmlunit.css.WrappedCssStyleDeclaration;
24 import org.htmlunit.cssparser.dom.CSSPageRuleImpl;
25 import org.htmlunit.javascript.configuration.JsxClass;
26 import org.htmlunit.javascript.configuration.JsxConstructor;
27 import org.htmlunit.javascript.configuration.JsxGetter;
28 import org.htmlunit.javascript.configuration.JsxSetter;
29 import org.w3c.dom.DOMException;
30
31
32
33
34
35
36
37
38
39 @JsxClass
40 public class CSSPageRule extends CSSRule {
41
42
43
44
45 public CSSPageRule() {
46 super();
47 }
48
49
50
51
52 @JsxConstructor
53 @Override
54 public void jsConstructor() {
55 super.jsConstructor();
56 }
57
58
59
60
61
62
63 protected CSSPageRule(final CSSStyleSheet stylesheet, final CSSPageRuleImpl rule) {
64 super(stylesheet, rule);
65 }
66
67
68
69
70
71 @JsxGetter
72 public String getSelectorText() {
73 final String selectorText = getPageRule().getSelectorText();
74 if (selectorText != null) {
75 return selectorText.toLowerCase(Locale.ROOT);
76 }
77 return null;
78 }
79
80
81
82
83
84 @JsxSetter
85 public void setSelectorText(final String selectorText) {
86 try {
87 getPageRule().setSelectorText(selectorText);
88 }
89 catch (final DOMException ignored) {
90
91 }
92 }
93
94
95
96
97
98 @JsxGetter
99 public CSSStyleDeclaration getStyle() {
100 final WrappedCssStyleDeclaration styleDeclaration
101 = new WrappedCssStyleDeclaration(getPageRule().getStyle(), getBrowserVersion());
102 return new CSSStyleDeclaration(getParentStyleSheet(), styleDeclaration);
103 }
104
105
106
107
108
109 private CSSPageRuleImpl getPageRule() {
110 return (CSSPageRuleImpl) getRule();
111 }
112
113
114
115
116 @Override
117 public String getCssText() {
118 String cssText = super.getCssText();
119 final BrowserVersion browserVersion = getBrowserVersion();
120 if (browserVersion.hasFeature(CSS_CSSTEXT_FF_STYLE)) {
121 cssText = StringUtils.replace(cssText, "@page {", "@page {");
122 }
123
124 return cssText;
125 }
126 }