|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=877690 |
|
5 --> |
|
6 <head> |
|
7 <meta charset="utf-8"> |
|
8 <title>Test for Bug 877690</title> |
|
9 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> |
|
11 <script type="application/javascript"> |
|
12 |
|
13 /** Test for Bug 877690 **/ |
|
14 |
|
15 // Returns true if array contains item. False otherwise. Raises an exception if |
|
16 // array is not an Array object. If the item is found in array, remove item. |
|
17 function contains(array, item) { |
|
18 if (!array.indexOf) { |
|
19 throw new "First argument is not an array"; |
|
20 } |
|
21 var index = array.indexOf(item); |
|
22 if (index == -1) { |
|
23 return false; |
|
24 } |
|
25 array.splice(index, 1); |
|
26 return true; |
|
27 } |
|
28 |
|
29 // Returns true if values contains all and only the expected values. False otherwise. |
|
30 function testValues(values, expected) { |
|
31 expected.forEach(function (expectedValue) { |
|
32 if (!contains(values, expectedValue)) { |
|
33 return false; |
|
34 } |
|
35 }); |
|
36 return values.length === 0; |
|
37 } |
|
38 |
|
39 function do_test() { |
|
40 var utils = SpecialPowers.Cc["@mozilla.org/inspector/dom-utils;1"] |
|
41 .getService(SpecialPowers.Ci.inIDOMUtils); |
|
42 |
|
43 // test a property with keywords and colors |
|
44 var prop = "color"; |
|
45 var values = utils.getCSSValuesForProperty(prop); |
|
46 var expected = [ "initial", "inherit", "unset", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", |
|
47 "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", |
|
48 "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", |
|
49 "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", |
|
50 "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", |
|
51 "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", |
|
52 "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", |
|
53 "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", |
|
54 "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", |
|
55 "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", |
|
56 "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", |
|
57 "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", |
|
58 "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", |
|
59 "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", |
|
60 "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", |
|
61 "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", |
|
62 "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", |
|
63 "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", |
|
64 "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", |
|
65 "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "violet", "wheat", |
|
66 "white", "whitesmoke", "yellow", "yellowgreen", "rgb", "hsl", "rgba", "hsla" ]; |
|
67 ok(testValues(values, expected), "property color's values."); |
|
68 |
|
69 // test a shorthand property |
|
70 var prop = "background"; |
|
71 var values = utils.getCSSValuesForProperty(prop); |
|
72 var expected = [ "initial", "inherit", "unset", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", |
|
73 "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", |
|
74 "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", |
|
75 "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", |
|
76 "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", |
|
77 "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", |
|
78 "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", |
|
79 "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", |
|
80 "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", |
|
81 "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", |
|
82 "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", |
|
83 "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", |
|
84 "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", |
|
85 "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", |
|
86 "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", |
|
87 "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", |
|
88 "powderblue", "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", |
|
89 "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", |
|
90 "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", |
|
91 "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", "no-repeat", "repeat", |
|
92 "repeat-x", "repeat-y", "fixed", "scroll", "local", "center", "top", "bottom", "left", "right", |
|
93 "border-box", "padding-box", "content-box", "border-box", "padding-box", "content-box", "contain", |
|
94 "cover", "rgb", "hsl", "rgba", "hsla", "none", "-moz-element", "-moz-image-rect", "url", "linear-gradient", |
|
95 "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "-moz-linear-gradient", |
|
96 "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient" ]; |
|
97 ok(testValues(values, expected), "Shorthand property values."); |
|
98 |
|
99 var prop = "border"; |
|
100 var values = utils.getCSSValuesForProperty(prop); |
|
101 var expected = [ "-moz-calc", "initial", "unset", "-moz-use-text-color", "aliceblue", |
|
102 "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", |
|
103 "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", |
|
104 "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", |
|
105 "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", |
|
106 "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", |
|
107 "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "fill", "firebrick", "floralwhite", |
|
108 "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", |
|
109 "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "inset", "ivory", |
|
110 "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", |
|
111 "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", |
|
112 "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", |
|
113 "linen", "logical", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", |
|
114 "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", |
|
115 "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", |
|
116 "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", |
|
117 "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "physical", "pink", "plum", "powderblue", |
|
118 "purple", "red", "repeat", "rgb", "rgba", "ridge", "rosybrown", "round", "royalblue", "saddlebrown", "salmon", |
|
119 "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", |
|
120 "snow", "solid", "springgreen", "steelblue", "stretch", "tan", "teal", "thick", "thin", "thistle", "tomato", |
|
121 "transparent", "turquoise", "-moz-element", "-moz-image-rect", "url", "violet", "wheat", "white", "whitesmoke", |
|
122 "yellow", "yellowgreen", "linear-gradient", "radial-gradient", "repeating-linear-gradient", |
|
123 "repeating-radial-gradient", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", |
|
124 "-moz-repeating-radial-gradient" ] |
|
125 ok(testValues(values, expected), "Shorthand property values."); |
|
126 |
|
127 // test keywords only |
|
128 var prop = "border-top"; |
|
129 var values = utils.getCSSValuesForProperty(prop); |
|
130 var expected = [ "initial", "inherit", "unset", "thin", "medium", "thick", "none", "hidden", "dotted", |
|
131 "dashed", "solid", "double", "groove", "ridge", "inset", "outset", "-moz-use-text-color", |
|
132 "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", |
|
133 "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", |
|
134 "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", |
|
135 "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", |
|
136 "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", |
|
137 "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", |
|
138 "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", |
|
139 "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", |
|
140 "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", |
|
141 "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", |
|
142 "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", |
|
143 "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", |
|
144 "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", |
|
145 "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", |
|
146 "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", |
|
147 "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", |
|
148 "purple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", |
|
149 "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", |
|
150 "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "violet", "wheat", "white", "whitesmoke", |
|
151 "yellow", "yellowgreen", "calc", "-moz-calc", "rgb", "hsl", "rgba", "hsla" ]; |
|
152 ok(testValues(values, expected), "property border-top's values."); |
|
153 |
|
154 // tests no keywords or colors |
|
155 var prop = "padding-bottom"; |
|
156 var values = utils.getCSSValuesForProperty(prop); |
|
157 var expected = [ "initial", "inherit", "unset", "calc", "-moz-calc" ]; |
|
158 ok(testValues(values, expected), "property padding-bottom's values."); |
|
159 |
|
160 // test proprety |
|
161 var prop = "display"; |
|
162 var values = utils.getCSSValuesForProperty(prop); |
|
163 var expected = [ "initial", "inherit", "unset", "none", "inline", "block", "inline-block", "list-item", |
|
164 "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", |
|
165 "table-column-group", "table-column", "table-cell", "table-caption", "-moz-box", "-moz-inline-box", |
|
166 "-moz-grid", "-moz-inline-grid", "-moz-grid-group", "-moz-grid-line", "-moz-stack", "-moz-inline-stack", |
|
167 "-moz-deck", "-moz-popup", "-moz-groupbox", "flex", "inline-flex", "grid", "inline-grid" ]; |
|
168 ok(testValues(values, expected), "property display's values."); |
|
169 |
|
170 // test property |
|
171 var prop = "float"; |
|
172 var values = utils.getCSSValuesForProperty(prop); |
|
173 var expected = [ "initial", "inherit", "unset", "none", "left", "right" ]; |
|
174 ok(testValues(values, expected), "proprety float values"); |
|
175 |
|
176 // Test property with "auto" |
|
177 var prop = "margin"; |
|
178 var values = utils.getCSSValuesForProperty(prop); |
|
179 var expected = [ "-moz-calc", "initial", "unset", "auto", "calc", "inherit" ]; |
|
180 ok(testValues(values, expected), "property margin's values."); |
|
181 |
|
182 // Test property with "normal" |
|
183 var prop = "font-style"; |
|
184 var values = utils.getCSSValuesForProperty(prop); |
|
185 var expected = [ "initial", "inherit", "unset", "italic", "normal", "oblique" ]; |
|
186 ok(testValues(values, expected), "property font-style's values."); |
|
187 |
|
188 // Test property with "cubic-bezier" and "step". |
|
189 var prop = "-moz-transition"; |
|
190 var values = utils.getCSSValuesForProperty(prop); |
|
191 var expected = [ "initial", "all", "unset", "cubic-bezier", "ease", "ease-in", "ease-in-out", |
|
192 "ease-out", "inherit", "linear", "none", "step-end", "step-start", |
|
193 "steps" ]; |
|
194 ok(testValues(values, expected), "property -moz-transition's values."); |
|
195 |
|
196 // test invalid property |
|
197 var prop = "invalidProperty"; |
|
198 try { |
|
199 utils.getCSSValuesForProperty(prop); |
|
200 ok(false, "invalid property should throw an exception"); |
|
201 } |
|
202 catch(e) { |
|
203 // test passed |
|
204 } |
|
205 |
|
206 // test border-image propery, for bug 973345 |
|
207 var prop = "border-image"; |
|
208 var values = utils.getCSSValuesForProperty(prop); |
|
209 var expected = [ "-moz-calc", "initial", "unset", "-moz-use-text-color", "aliceblue", |
|
210 "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", |
|
211 "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", |
|
212 "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", |
|
213 "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", |
|
214 "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", |
|
215 "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "fill", "firebrick", "floralwhite", |
|
216 "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", |
|
217 "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "inset", "ivory", |
|
218 "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", |
|
219 "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", |
|
220 "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", |
|
221 "linen", "logical", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", |
|
222 "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", |
|
223 "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", |
|
224 "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", |
|
225 "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "physical", "pink", "plum", "powderblue", |
|
226 "purple", "red", "repeat", "rgb", "rgba", "ridge", "rosybrown", "round", "royalblue", "saddlebrown", "salmon", |
|
227 "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", |
|
228 "snow", "solid", "springgreen", "steelblue", "stretch", "tan", "teal", "thick", "thin", "thistle", "tomato", |
|
229 "transparent", "turquoise", "-moz-element", "-moz-image-rect", "url", "violet", "wheat", "white", "whitesmoke", |
|
230 "yellow", "yellowgreen", "linear-gradient", "radial-gradient", "repeating-linear-gradient", |
|
231 "repeating-radial-gradient", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", |
|
232 "-moz-repeating-radial-gradient" ] |
|
233 ok(testValues(values, expected), "property border-image's values."); |
|
234 |
|
235 SimpleTest.finish(); |
|
236 } |
|
237 |
|
238 SimpleTest.waitForExplicitFinish(); |
|
239 addLoadEvent(do_test); |
|
240 |
|
241 </script> |
|
242 </head> |
|
243 <body> |
|
244 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=877690">Mozilla Bug 877690</a> |
|
245 <p id="display"></p> |
|
246 <div id="content" style="display: none"> |
|
247 </div> |
|
248 <pre id="test"> |
|
249 </pre> |
|
250 </body> |
|
251 </html> |