layout/inspector/tests/test_bug557726.html

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:bb7845f3bd88
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=557726
5 -->
6 <head>
7 <title>Test for Bug 557726</title>
8 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
10 <style id="pseudo-style">
11 #div1 {
12 color: blue;
13 }
14
15 #div1:first-letter {
16 font-weight: bold;
17 }
18
19 #div1:before {
20 content: '"';
21 }
22
23 #div1:after {
24 content: '"';
25 }
26
27 #div1:after, #div1:before {
28 color: red;
29 }
30 </style>
31 </head>
32 <body>
33
34 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=557726">Mozilla Bug 557726</a>
35
36 <div id="div1">
37 text with :before, :after, and :first-letter pseudo-elements
38 </div>
39
40 <script type="application/javascript">
41
42 /** Test for Bug 557726 **/
43
44 function getSelectors (rules) {
45 var styleElement = document.getElementById("pseudo-style");
46 var selectors = [];
47 for (var i = 0; i < rules.Count(); i++) {
48 var rule = rules.GetElementAt(i).QueryInterface(SpecialPowers.Ci.nsIDOMCSSStyleRule);
49 if (SpecialPowers.unwrap(rule.parentStyleSheet.ownerNode) == styleElement) // no user agent rules
50 selectors.push(rule.selectorText);
51 }
52 return selectors;
53 }
54
55 var domUtils = SpecialPowers.Cc["@mozilla.org/inspector/dom-utils;1"]
56 .getService(SpecialPowers.Ci.inIDOMUtils);
57
58 var div = document.getElementById("div1");
59
60 /* empty or missing pseudo-element argument */
61 var selectors = getSelectors(domUtils.getCSSStyleRules(div));
62 is(selectors.length, 1, "psuedo-element argument should be optional");
63 is(selectors[0], "#div1", "should only have the non-pseudo element rule");
64
65 selectors = getSelectors(domUtils.getCSSStyleRules(div, null));
66 is(selectors.length, 1, "pseudo-element argument can be null");
67 is(selectors[0], "#div1", "should only have the non pseudo-element rule");
68
69 selectors = getSelectors(domUtils.getCSSStyleRules(div, ""));
70 is(selectors.length, 1, "pseudo-element argument can be empty string");
71 is(selectors[0], "#div1", "should only have the non pseudo-element rule");
72
73
74 /* invalid pseudo-element argument */
75 var rules = domUtils.getCSSStyleRules(div, "not a valid pseudo element");
76 is(rules, null, "invalid pseudo-element returns no rules list");
77
78
79 /* valid pseudo-element argument */
80 selectors = getSelectors(domUtils.getCSSStyleRules(div, ":first-letter"));
81 is(selectors.length, 1, "pseudo-element argument can be used");
82 is(selectors[0], "#div1:first-letter", "should only have the :first-letter rule");
83
84 selectors = getSelectors(domUtils.getCSSStyleRules(div, ":before"));
85 is(selectors.length, 2, ":before pseudo-element has two matching rules");
86 isnot(selectors.indexOf("#div1:after, #div1:before"), -1, "fetched rule for :before")
87 isnot(selectors.indexOf("#div1:before"), -1, "fetched rule for :before")
88
89 selectors = getSelectors(domUtils.getCSSStyleRules(div, ":first-line"));
90 is(selectors.length, 0, "valid pseudo-element but no matching rules");
91
92 </script>
93 </pre>
94 </body>
95 </html>

mercurial