1 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* vim: set shiftwidth=4 tabstop=4 autoindent cindent noexpandtab: */
3 /* ***** BEGIN LICENSE BLOCK *****
4 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 1.1 (the "License"); you may not use this file except in compliance with
8 * the License. You may obtain a copy of the License at
9 * http://www.mozilla.org/MPL/
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
16 * The Original Code is property_database.js.
18 * The Initial Developer of the Original Code is the Mozilla Foundation.
19 * Portions created by the Initial Developer are Copyright (C) 2007
20 * the Initial Developer. All Rights Reserved.
23 * L. David Baron <dbaron@dbaron.org>, Mozilla Corporation (original author)
25 * Alternatively, the contents of this file may be used under the terms of
26 * either the GNU General Public License Version 2 or later (the "GPL"), or
27 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 * in which case the provisions of the GPL or the LGPL are applicable instead
29 * of those above. If you wish to allow use of your version of this file only
30 * under the terms of either the GPL or the LGPL, and not to allow others to
31 * use your version of this file under the terms of the MPL, indicate your
32 * decision by deleting the provisions above and replace them with the notice
33 * and other provisions required by the GPL or the LGPL. If you do not delete
34 * the provisions above, a recipient may use your version of this file under
35 * the terms of any one of the MPL, the GPL or the LGPL.
37 * ***** END LICENSE BLOCK ***** */
39 // True longhand properties.
40 const CSS_TYPE_LONGHAND = 0;
42 // True shorthand properties.
43 const CSS_TYPE_TRUE_SHORTHAND = 1;
45 // Properties that we handle as shorthands but were longhands either in
46 // the current spec or earlier versions of the spec.
47 const CSS_TYPE_SHORTHAND_AND_LONGHAND = 2;
49 // Each property has the following fields:
50 // domProp: The name of the relevant member of nsIDOM[NS]CSS2Properties
51 // inherited: Whether the property is inherited by default (stated as
52 // yes or no in the property header in all CSS specs)
54 // get_computed: if present, the property's computed value shows up on
55 // another property, and this is a function used to get it
56 // initial_values: Values whose computed value should be the same as the
57 // computed value for the property's initial value.
58 // other_values: Values whose computed value should be different from the
59 // computed value for the property's initial value.
60 // XXX Should have a third field for values whose computed value may or
61 // may not be the same as for the property's initial value.
62 // invalid_values: Things that are not values for the property and
63 // should be rejected.
65 var gCSSProperties = {
67 domProp: "MozAppearance",
69 type: CSS_TYPE_LONGHAND,
70 initial_values: [ "none" ],
71 other_values: [ "radio", "menulist" ],
74 "-moz-background-clip": {
75 domProp: "MozBackgroundClip",
77 type: CSS_TYPE_LONGHAND,
78 initial_values: [ "border" ],
79 other_values: [ "padding" ],
80 invalid_values: [ "content", "margin" ]
82 "-moz-background-inline-policy": {
83 domProp: "MozBackgroundInlinePolicy",
85 type: CSS_TYPE_LONGHAND,
86 initial_values: [ "continuous" ],
87 other_values: ["bounding-box", "each-box" ],
90 "-moz-background-origin": {
91 domProp: "MozBackgroundOrigin",
93 type: CSS_TYPE_LONGHAND,
94 initial_values: [ "padding" ],
95 other_values: [ "border", "content" ],
96 invalid_values: [ "margin" ]
99 domProp: "MozBinding",
101 type: CSS_TYPE_LONGHAND,
102 initial_values: [ "none" ],
103 other_values: [ "url(foo.xml)" ],
106 "-moz-border-bottom-colors": {
107 domProp: "MozBorderBottomColors",
109 type: CSS_TYPE_LONGHAND,
110 initial_values: [ "none" ],
111 other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
112 invalid_values: [ "red none", "red inherit", "red, green" ]
115 domProp: "MozBorderEnd",
117 type: CSS_TYPE_TRUE_SHORTHAND,
118 subproperties: [ "-moz-border-end-color", "-moz-border-end-style", "-moz-border-end-width" ],
119 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
120 other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
121 invalid_values: [ "5%" ]
123 "-moz-border-end-color": {
124 domProp: "MozBorderEndColor",
126 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
127 get_computed: logical_box_prop_get_computed,
128 initial_values: [ "currentColor" ],
129 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
130 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
132 "-moz-border-end-style": {
133 domProp: "MozBorderEndStyle",
135 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
136 get_computed: logical_box_prop_get_computed,
137 /* XXX hidden is sometimes the same as initial */
138 initial_values: [ "none" ],
139 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
142 "-moz-border-end-width": {
143 domProp: "MozBorderEndWidth",
145 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
146 get_computed: logical_box_prop_get_computed,
147 prerequisites: { "-moz-border-end-style": "solid" },
148 initial_values: [ "medium", "3px" ],
149 other_values: [ "thin", "thick", "1px", "2em" ],
150 invalid_values: [ "5%" ]
152 "-moz-border-image": {
153 domProp: "MozBorderImage",
155 type: CSS_TYPE_LONGHAND,
156 initial_values: [ "none" ],
157 other_values: [ "url('border.png') 27 27 27 27",
158 "url('border.png') 27",
159 "url('border.png') 27 27 27 27 repeat",
160 "url('border.png') 27 27 27 27 / 1em",
161 "url('border.png') 27 27 27 27 / 1em 1em 1em 1em repeat",
162 "url('border.png') 27 27 27 27 / 1em 1em 1em 1em stretch round" ],
163 invalid_values: [ "url('border.png')",
164 "url('border.png') 27 27 27 27 27",
165 "url('border.png') 27 27 27 27 / 1em 1em 1em 1em 1em",
166 "url('border.png') / repeat",
167 "url('border.png') 27 27 27 27 /" ]
169 "-moz-border-left-colors": {
170 domProp: "MozBorderLeftColors",
172 type: CSS_TYPE_LONGHAND,
173 initial_values: [ "none" ],
174 other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
175 invalid_values: [ "red none", "red inherit", "red, green" ]
177 "-moz-border-radius": {
178 domProp: "MozBorderRadius",
180 type: CSS_TYPE_TRUE_SHORTHAND,
181 subproperties: [ "-moz-border-radius-bottomleft", "-moz-border-radius-bottomright", "-moz-border-radius-topleft", "-moz-border-radius-topright" ],
182 initial_values: [ "0", "0px", "0px 0 0 0px" ], /* 0% ? */
183 other_values: [ "3%", "1px", "2em", "3em 2px", "2pt 3% 4em", "2px 2px 2px 2px", // circular
184 "3% / 2%", "1px / 4px", "2em / 1em", "3em 2px / 2px 3em", "2pt 3% 4em / 4pt 1% 5em", "2px 2px 2px 2px / 4px 4px 4px 4px", "1pt / 2pt 3pt", "4pt 5pt / 3pt" // elliptical
186 invalid_values: [ "2px -2px", "inherit 2px", "inherit / 2px", "2px inherit", "2px / inherit", "2px 2px 2px 2px 2px", "1px / 2px 2px 2px 2px 2px" ]
188 "-moz-border-radius-bottomleft": {
189 domProp: "MozBorderRadiusBottomleft",
191 type: CSS_TYPE_LONGHAND,
192 initial_values: [ "0", "0px" ], /* 0% ? */
193 other_values: [ "3%", "1px", "2em", // circular
194 "3% 2%", "1px 4px", "2em 2pt" // elliptical
196 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
198 "-moz-border-radius-bottomright": {
199 domProp: "MozBorderRadiusBottomright",
201 type: CSS_TYPE_LONGHAND,
202 initial_values: [ "0", "0px" ], /* 0% ? */
203 other_values: [ "3%", "1px", "2em", // circular
204 "3% 2%", "1px 4px", "2em 2pt" // elliptical
206 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
208 "-moz-border-radius-topleft": {
209 domProp: "MozBorderRadiusTopleft",
211 type: CSS_TYPE_LONGHAND,
212 initial_values: [ "0", "0px" ], /* 0% ? */
213 other_values: [ "3%", "1px", "2em", // circular
214 "3% 2%", "1px 4px", "2em 2pt" // elliptical
216 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
218 "-moz-border-radius-topright": {
219 domProp: "MozBorderRadiusTopright",
221 type: CSS_TYPE_LONGHAND,
222 initial_values: [ "0", "0px" ], /* 0% ? */
223 other_values: [ "3%", "1px", "2em", // circular
224 "3% 2%", "1px 4px", "2em 2pt" // elliptical
226 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
228 "-moz-border-right-colors": {
229 domProp: "MozBorderRightColors",
231 type: CSS_TYPE_LONGHAND,
232 initial_values: [ "none" ],
233 other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
234 invalid_values: [ "red none", "red inherit", "red, green" ]
236 "-moz-border-start": {
237 domProp: "MozBorderStart",
239 type: CSS_TYPE_TRUE_SHORTHAND,
240 subproperties: [ "-moz-border-start-color", "-moz-border-start-style", "-moz-border-start-width" ],
241 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
242 other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
243 invalid_values: [ "5%" ]
245 "-moz-border-start-color": {
246 domProp: "MozBorderStartColor",
248 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
249 get_computed: logical_box_prop_get_computed,
250 initial_values: [ "currentColor" ],
251 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
252 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
254 "-moz-border-start-style": {
255 domProp: "MozBorderStartStyle",
257 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
258 get_computed: logical_box_prop_get_computed,
259 /* XXX hidden is sometimes the same as initial */
260 initial_values: [ "none" ],
261 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
264 "-moz-border-start-width": {
265 domProp: "MozBorderStartWidth",
267 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
268 get_computed: logical_box_prop_get_computed,
269 prerequisites: { "-moz-border-start-style": "solid" },
270 initial_values: [ "medium", "3px" ],
271 other_values: [ "thin", "thick", "1px", "2em" ],
272 invalid_values: [ "5%" ]
274 "-moz-border-top-colors": {
275 domProp: "MozBorderTopColors",
277 type: CSS_TYPE_LONGHAND,
278 initial_values: [ "none" ],
279 other_values: [ "red green", "red #fc3", "#ff00cc", "currentColor", "blue currentColor orange currentColor" ],
280 invalid_values: [ "red none", "red inherit", "red, green" ]
283 domProp: "MozBoxAlign",
285 type: CSS_TYPE_LONGHAND,
286 initial_values: [ "stretch" ],
287 other_values: [ "start", "center", "baseline", "end" ],
290 "-moz-box-direction": {
291 domProp: "MozBoxDirection",
293 type: CSS_TYPE_LONGHAND,
294 initial_values: [ "normal" ],
295 other_values: [ "reverse" ],
299 domProp: "MozBoxFlex",
301 type: CSS_TYPE_LONGHAND,
302 initial_values: [ "0", "0.0", "-0.0" ],
303 other_values: [ "1", "100", "0.1" ],
304 invalid_values: [ "10px", "-1" ]
306 "-moz-box-ordinal-group": {
307 domProp: "MozBoxOrdinalGroup",
309 type: CSS_TYPE_LONGHAND,
310 initial_values: [ "1" ],
311 other_values: [ "0", "-1", "100", "-1000" ],
312 invalid_values: [ "1.0" ]
315 domProp: "MozBoxOrient",
317 type: CSS_TYPE_LONGHAND,
318 initial_values: [ "horizontal", "inline-axis" ],
319 other_values: [ "vertical", "block-axis" ],
323 domProp: "MozBoxPack",
325 type: CSS_TYPE_LONGHAND,
326 initial_values: [ "start" ],
327 other_values: [ "center", "end", "justify" ],
331 domProp: "MozBoxShadow",
333 type: CSS_TYPE_LONGHAND,
334 initial_values: [ "none" ],
335 prerequisites: { "color": "blue" },
336 other_values: [ "2px 2px", "2px 2px 1px", "2px 2px 2px 2px", "blue 3px 2px", "2px 2px 1px 5px green", "2px 2px red", "green 2px 2px 1px", "green 2px 2px, blue 1px 3px 4px", "currentColor 3px 3px", "blue 2px 2px, currentColor 1px 2px, 1px 2px 3px 2px orange", "3px 0 0 0" ],
337 invalid_values: [ "3% 3%", "1px 1px 1px 1px 1px", "2px 2px, none", "red 2px 2px blue", "inherit, 2px 2px", "2px 2px, inherit", "2px 2px -5px" ]
340 domProp: "MozBoxSizing",
342 type: CSS_TYPE_LONGHAND,
343 initial_values: [ "content-box" ],
344 other_values: [ "border-box", "padding-box" ],
345 invalid_values: [ "margin-box", "content", "padding", "border", "margin" ]
347 "-moz-column-count": {
348 domProp: "MozColumnCount",
350 type: CSS_TYPE_LONGHAND,
351 initial_values: [ "auto" ],
352 other_values: [ "1", "0", "17" ],
354 "-1", //unclear: see http://lists.w3.org/Archives/Public/www-style/2007Apr/0030
359 domProp: "MozColumnGap",
361 type: CSS_TYPE_LONGHAND,
362 initial_values: [ "normal", "1em" ],
363 other_values: [ "2px", "4em" ],
364 invalid_values: [ "3%", "-1px" ]
366 "-moz-column-width": {
367 domProp: "MozColumnWidth",
369 type: CSS_TYPE_LONGHAND,
370 initial_values: [ "auto" ],
371 other_values: [ "15px", "50%" ],
372 invalid_values: [ "20", "-1px" ]
374 "-moz-column-rule-width": {
375 domProp: "MozColumnRuleWidth",
377 type: CSS_TYPE_LONGHAND,
378 prerequisites: { "-moz-column-rule-style": "solid" },
379 initial_values: [ "medium" ],
380 other_values: [ "thin", "15px" ],
381 invalid_values: [ "20", "-1px", "red", "50%" ]
383 "-moz-column-rule-style": {
384 domProp: "MozColumnRuleStyle",
386 type: CSS_TYPE_LONGHAND,
387 initial_values: [ "none" ],
388 other_values: [ "solid", "hidden", "ridge", "groove", "inset", "outset", "double", "dotted", "dashed" ],
389 invalid_values: [ "20", "foo" ]
391 "-moz-column-rule-color": {
392 domProp: "MozColumnRuleColor",
394 type: CSS_TYPE_LONGHAND,
395 prerequisites: { "color": "green" },
396 initial_values: [ "currentColor" ],
397 other_values: [ "red", "blue", "#ffff00" ],
400 "-moz-column-rule": {
401 domProp: "MozColumnRule",
403 type: CSS_TYPE_TRUE_SHORTHAND,
404 prerequisites: { "color": "green" },
405 subproperties: [ "-moz-column-rule-width", "-moz-column-rule-style", "-moz-column-rule-color" ],
406 initial_values: [ "medium none currentColor" ],
407 other_values: [ "2px blue solid", "red dotted 1px", "ridge 4px orange" ],
408 invalid_values: [ "2px 3px 4px red", "dotted dashed", "5px dashed green 3px" ]
411 domProp: "MozFloatEdge",
413 type: CSS_TYPE_LONGHAND,
414 initial_values: [ "content-box" ],
415 other_values: [ "margin-box" ],
416 invalid_values: [ "content", "padding", "border", "margin" ]
418 "-moz-force-broken-image-icon": {
419 domProp: "MozForceBrokenImageIcon",
421 type: CSS_TYPE_LONGHAND,
422 initial_values: [ "0" ],
423 other_values: [ "1" ],
426 "-moz-image-region": {
427 domProp: "MozImageRegion",
429 type: CSS_TYPE_LONGHAND,
430 initial_values: [ "auto" ],
431 other_values: [ "rect(3px 20px 15px 4px)", "rect(17px, 21px, 33px, 2px)" ],
435 domProp: "MozMarginEnd",
437 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
438 get_computed: logical_box_prop_get_computed,
439 /* no subproperties */
440 /* auto may or may not be initial */
441 initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
442 other_values: [ "1px", "3em" ],
445 "-moz-margin-start": {
446 domProp: "MozMarginStart",
448 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
449 get_computed: logical_box_prop_get_computed,
450 /* no subproperties */
451 /* auto may or may not be initial */
452 initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
453 other_values: [ "1px", "3em" ],
456 "-moz-outline-radius": {
457 domProp: "MozOutlineRadius",
459 type: CSS_TYPE_TRUE_SHORTHAND,
460 subproperties: [ "-moz-outline-radius-bottomleft", "-moz-outline-radius-bottomright", "-moz-outline-radius-topleft", "-moz-outline-radius-topright" ],
461 initial_values: [ "0", "0px", "0%" ],
462 other_values: [ "3%", "1px", "2em", "3em 2px", "2pt 3% 4em", "2px 2px 2px 2px", // circular
463 "3% / 2%", "1px / 4px", "2em / 1em", "3em 2px / 2px 3em", "2pt 3% 4em / 4pt 1% 5em", "2px 2px 2px 2px / 4px 4px 4px 4px", "1pt / 2pt 3pt", "4pt 5pt / 3pt" // elliptical
465 invalid_values: [ "2px -2px", "inherit 2px", "inherit / 2px", "2px inherit", "2px / inherit", "2px 2px 2px 2px 2px", "1px / 2px 2px 2px 2px 2px" ]
467 "-moz-outline-radius-bottomleft": {
468 domProp: "MozOutlineRadiusBottomleft",
470 type: CSS_TYPE_LONGHAND,
471 initial_values: [ "0", "0px", "0%" ],
472 other_values: [ "3%", "1px", "2em", // circular
473 "3% 2%", "1px 4px", "2em 2pt" // elliptical
475 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
477 "-moz-outline-radius-bottomright": {
478 domProp: "MozOutlineRadiusBottomright",
480 type: CSS_TYPE_LONGHAND,
481 initial_values: [ "0", "0px", "0%" ],
482 other_values: [ "3%", "1px", "2em", // circular
483 "3% 2%", "1px 4px", "2em 2pt" // elliptical
485 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
487 "-moz-outline-radius-topleft": {
488 domProp: "MozOutlineRadiusTopleft",
490 type: CSS_TYPE_LONGHAND,
491 initial_values: [ "0", "0px", "0%" ],
492 other_values: [ "3%", "1px", "2em", // circular
493 "3% 2%", "1px 4px", "2em 2pt" // elliptical
495 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
497 "-moz-outline-radius-topright": {
498 domProp: "MozOutlineRadiusTopright",
500 type: CSS_TYPE_LONGHAND,
501 initial_values: [ "0", "0px", "0%" ],
502 other_values: [ "3%", "1px", "2em", // circular
503 "3% 2%", "1px 4px", "2em 2pt" // elliptical
505 invalid_values: [ "-1px", "4px -2px", "inherit 2px", "2px inherit" ]
507 "-moz-padding-end": {
508 domProp: "MozPaddingEnd",
510 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
511 get_computed: logical_box_prop_get_computed,
512 /* no subproperties */
513 initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
514 other_values: [ "1px", "3em" ],
517 "-moz-padding-start": {
518 domProp: "MozPaddingStart",
520 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
521 get_computed: logical_box_prop_get_computed,
522 /* no subproperties */
523 initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
524 other_values: [ "1px", "3em" ],
528 domProp: "MozTransform",
530 type: CSS_TYPE_LONGHAND,
531 initial_values: [ "none" ],
532 other_values: [ "translatex(1px)", "translatex(4em)", "translatex(-4px)", "translatex(3px)", "translatex(0px) translatex(1px) translatex(2px) translatex(3px) translatex(4px)", "translatey(4em)", "translate(3px)", "translate(10px, -3px)", "rotate(45deg)", "rotate(45grad)", "rotate(45rad)", "rotate(0)", "scalex(10)", "scaley(10)", "scale(10)", "scale(10, 20)", "skewx(30deg)", "skewx(0)", "skewy(0)", "skewx(30grad)", "skewx(30rad)", "skewy(30deg)", "skewy(30grad)", "skewy(30rad)", "matrix(1, 2, 3, 4, 5px, 6em)", "rotate(45deg) scale(2, 1)", "skewx(45deg) skewx(-50grad)", "translate(0, 0) scale(1, 1) skewx(0) skewy(0) matrix(1, 0, 0, 1, 0, 0)", "translatex(50%)", "translatey(50%)", "translate(50%)", "translate(3%, 5px)", "translate(5px, 3%)", "matrix(1, 2, 3, 4, 5px, 6%)", "matrix(1, 2, 3, 4, 5%, 6px)", "matrix(1, 2, 3, 4, 5%, 6%)"],
533 invalid_values: ["1px", "#0000ff", "red", "auto", "translatex(1px 1px)", "translatex(translatex(1px))", "translatex(#0000ff)", "translatex(red)", "translatey()", "matrix(1, 2, 3, 4, 5, 6)", "matrix(1px, 2px, 3px, 4px, 5px, 6px)", "scale(150%)", "skewx(red)", "matrix(1%, 0, 0, 0, 0px, 0px)", "matrix(0, 1%, 2, 3, 4px,5px)", "matrix(0, 1, 2%, 3, 4px, 5px)", "matrix(0, 1, 2, 3%, 4%, 5%)"]
535 "-moz-transform-origin": {
536 domProp: "MozTransformOrigin",
538 type: CSS_TYPE_LONGHAND,
539 /* no subproperties */
540 prerequisites: { "width": "10px", "height": "10px", "display": "block"},
541 initial_values: [ "50% 50%", "center", "center center" ],
542 other_values: [ "25% 25%", "5px 5px", "20% 3em", "0 0", "0in 1in",
543 "top", "bottom","top left", "top right",
544 "top center", "center left", "center right",
545 "bottom left", "bottom right", "bottom center",
546 "20% center", "5px center", "13in bottom",
547 "left 50px", "right 13%", "center 40px"],
548 invalid_values: ["red", "auto", "none", "0.5 0.5", "40px #0000ff",
549 "border", "center red", "right diagonal",
552 "-moz-stack-sizing": {
553 domProp: "MozStackSizing",
555 type: CSS_TYPE_LONGHAND,
556 initial_values: [ "stretch-to-fit" ],
557 other_values: [ "ignore" ],
561 domProp: "MozUserFocus",
563 type: CSS_TYPE_LONGHAND,
564 initial_values: [ "none" ],
565 other_values: [ "normal", "ignore", "select-all", "select-before", "select-after", "select-same", "select-menu" ],
569 domProp: "MozUserInput",
571 type: CSS_TYPE_LONGHAND,
572 initial_values: [ "auto" ],
573 other_values: [ "none", "enabled", "disabled" ],
576 "-moz-user-modify": {
577 domProp: "MozUserModify",
579 type: CSS_TYPE_LONGHAND,
580 initial_values: [ "read-only" ],
581 other_values: [ "read-write", "write-only" ],
584 "-moz-user-select": {
585 domProp: "MozUserSelect",
587 type: CSS_TYPE_LONGHAND,
588 initial_values: [ "auto" ],
589 other_values: [ "none", "text", "element", "elements", "all", "toggle", "tri-state", "-moz-all", "-moz-none" ],
592 "-moz-window-shadow": {
593 domProp: "MozWindowShadow",
595 type: CSS_TYPE_LONGHAND,
596 initial_values: [ "default" ],
597 other_values: [ "none" ],
604 type: CSS_TYPE_LONGHAND,
605 initial_values: [ "center", "0deg" ],
606 other_values: [ "center behind", "behind far-right", "left-side", "73deg", "90.1deg", "0.1deg" ],
607 invalid_values: [ "0deg behind", "behind 0deg", "90deg behind", "behind 90deg" ]
610 domProp: "background",
612 type: CSS_TYPE_TRUE_SHORTHAND,
613 subproperties: [ "background-attachment", "background-color", "background-image", "background-position", "background-repeat", "-moz-background-clip", "-moz-background-inline-policy", "-moz-background-origin" ],
614 initial_values: [ "transparent", "none", "repeat", "scroll", "0% 0%", "top left", "left top", "transparent none", "top left none", "left top none", "none left top", "none top left", "none 0% 0%", "transparent none repeat scroll top left", "left top repeat none scroll transparent"],
615 other_values: [ "green", "none green repeat scroll left top", "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", "repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==') transparent left top scroll", "repeat-x", "repeat-y", "no-repeat", "none repeat-y transparent scroll 0% 0%", "fixed", "0% top transparent fixed repeat none", "top", "left", "50% 50%", "center", "bottom right scroll none transparent repeat", "50% transparent", "transparent 50%", "50%" ],
617 /* mixes with keywords have to be in correct order */
618 "50% left", "top 50%",
619 /* bug 258080: don't accept background-position separated */
620 "left url(404.png) top", "top url(404.png) left"
623 "background-attachment": {
624 domProp: "backgroundAttachment",
626 type: CSS_TYPE_LONGHAND,
627 initial_values: [ "scroll" ],
628 other_values: [ "fixed" ],
631 "background-color": {
632 domProp: "backgroundColor",
634 type: CSS_TYPE_LONGHAND,
635 initial_values: [ "transparent", "rgba(255, 127, 15, 0)", "hsla(240, 97%, 50%, 0.0)", "rgba(0, 0, 0, 0)", "rgba(255,255,255,-3.7)" ],
636 other_values: [ "green", "rgb(255, 0, 128)", "#fc2", "#96ed2a", "black", "rgba(255,255,0,3)" ],
637 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000", "rgb(255.0,0.387,3489)" ]
639 "background-image": {
640 domProp: "backgroundImage",
642 type: CSS_TYPE_LONGHAND,
643 initial_values: [ "none" ],
644 other_values: [ "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', ],
647 "background-position": {
648 domProp: "backgroundPosition",
650 type: CSS_TYPE_LONGHAND,
651 initial_values: [ "top left", "left top", "0% 0%", "0% top", "left 0%" ],
652 other_values: [ "top", "left", "right", "bottom", "center", "center bottom", "bottom center", "center right", "right center", "center top", "top center", "center left", "left center", "right bottom", "bottom right", "50%" ],
653 invalid_values: [ "50% left", "top 50%" ]
655 "background-repeat": {
656 domProp: "backgroundRepeat",
658 type: CSS_TYPE_LONGHAND,
659 initial_values: [ "repeat" ],
660 other_values: [ "repeat-x", "repeat-y", "no-repeat" ],
666 type: CSS_TYPE_TRUE_SHORTHAND,
667 subproperties: [ "border-bottom-color", "border-bottom-style", "border-bottom-width", "border-left-color", "border-left-style", "border-left-width", "border-right-color", "border-right-style", "border-right-width", "border-top-color", "border-top-style", "border-top-width" ],
668 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
669 other_values: [ "solid", "medium solid", "green solid", "10px solid", "thick solid" ],
670 invalid_values: [ "5%" ]
673 domProp: "borderBottom",
675 type: CSS_TYPE_TRUE_SHORTHAND,
676 subproperties: [ "border-bottom-color", "border-bottom-style", "border-bottom-width" ],
677 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
678 other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
679 invalid_values: [ "5%" ]
681 "border-bottom-color": {
682 domProp: "borderBottomColor",
684 type: CSS_TYPE_LONGHAND,
685 prerequisites: { "color": "black" },
686 initial_values: [ "currentColor" ],
687 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
688 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
690 "border-bottom-style": {
691 domProp: "borderBottomStyle",
693 type: CSS_TYPE_LONGHAND,
694 /* XXX hidden is sometimes the same as initial */
695 initial_values: [ "none" ],
696 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
699 "border-bottom-width": {
700 domProp: "borderBottomWidth",
702 type: CSS_TYPE_LONGHAND,
703 prerequisites: { "border-bottom-style": "solid" },
704 initial_values: [ "medium", "3px" ],
705 other_values: [ "thin", "thick", "1px", "2em" ],
706 invalid_values: [ "5%" ]
709 domProp: "borderCollapse",
711 type: CSS_TYPE_LONGHAND,
712 initial_values: [ "separate" ],
713 other_values: [ "collapse" ],
717 domProp: "borderColor",
719 type: CSS_TYPE_TRUE_SHORTHAND,
720 subproperties: [ "border-top-color", "border-right-color", "border-bottom-color", "border-left-color" ],
721 initial_values: [ "currentColor", "currentColor currentColor", "currentColor currentColor currentColor", "currentColor currentColor currentcolor CURRENTcolor" ],
722 other_values: [ "green", "currentColor green", "currentColor currentColor green", "currentColor currentColor currentColor green", "rgba(255,128,0,0.5)", "transparent" ],
723 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
726 domProp: "borderLeft",
728 type: CSS_TYPE_TRUE_SHORTHAND,
729 subproperties: [ "border-left-color", "border-left-style", "border-left-width" ],
730 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
731 other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
732 invalid_values: [ "5%" ]
734 "border-left-color": {
735 domProp: "borderLeftColor",
737 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
738 prerequisites: { "color": "black" },
739 initial_values: [ "currentColor" ],
740 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
741 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
743 "border-left-style": {
744 domProp: "borderLeftStyle",
746 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
747 /* XXX hidden is sometimes the same as initial */
748 initial_values: [ "none" ],
749 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
752 "border-left-width": {
753 domProp: "borderLeftWidth",
755 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
756 prerequisites: { "border-left-style": "solid" },
757 initial_values: [ "medium", "3px" ],
758 other_values: [ "thin", "thick", "1px", "2em" ],
759 invalid_values: [ "5%" ]
762 domProp: "borderRight",
764 type: CSS_TYPE_TRUE_SHORTHAND,
765 subproperties: [ "border-right-color", "border-right-style", "border-right-width" ],
766 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
767 other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
768 invalid_values: [ "5%" ]
770 "border-right-color": {
771 domProp: "borderRightColor",
773 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
774 prerequisites: { "color": "black" },
775 initial_values: [ "currentColor" ],
776 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
777 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
779 "border-right-style": {
780 domProp: "borderRightStyle",
782 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
783 /* XXX hidden is sometimes the same as initial */
784 initial_values: [ "none" ],
785 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
788 "border-right-width": {
789 domProp: "borderRightWidth",
791 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
792 prerequisites: { "border-right-style": "solid" },
793 initial_values: [ "medium", "3px" ],
794 other_values: [ "thin", "thick", "1px", "2em" ],
795 invalid_values: [ "5%" ]
798 domProp: "borderSpacing",
800 type: CSS_TYPE_LONGHAND,
801 initial_values: [ "0", "0 0", "0px", "0 0px" ],
802 other_values: [ "3px", "4em 2px", "4em 0", "0px 2px" ],
803 invalid_values: [ "0%", "0 0%" ]
806 domProp: "borderStyle",
808 type: CSS_TYPE_TRUE_SHORTHAND,
809 subproperties: [ "border-top-style", "border-right-style", "border-bottom-style", "border-left-style" ],
810 /* XXX hidden is sometimes the same as initial */
811 initial_values: [ "none", "none none", "none none none", "none none none none" ],
812 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge", "none solid", "none none solid", "none none none solid", "groove none none none", "none ridge none none", "none none double none", "none none none dotted" ],
816 domProp: "borderTop",
818 type: CSS_TYPE_TRUE_SHORTHAND,
819 subproperties: [ "border-top-color", "border-top-style", "border-top-width" ],
820 initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
821 other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
822 invalid_values: [ "5%" ]
824 "border-top-color": {
825 domProp: "borderTopColor",
827 type: CSS_TYPE_LONGHAND,
828 prerequisites: { "color": "black" },
829 initial_values: [ "currentColor" ],
830 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
831 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
833 "border-top-style": {
834 domProp: "borderTopStyle",
836 type: CSS_TYPE_LONGHAND,
837 /* XXX hidden is sometimes the same as initial */
838 initial_values: [ "none" ],
839 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
842 "border-top-width": {
843 domProp: "borderTopWidth",
845 type: CSS_TYPE_LONGHAND,
846 prerequisites: { "border-top-style": "solid" },
847 initial_values: [ "medium", "3px" ],
848 other_values: [ "thin", "thick", "1px", "2em" ],
849 invalid_values: [ "5%" ]
852 domProp: "borderWidth",
854 type: CSS_TYPE_TRUE_SHORTHAND,
855 subproperties: [ "border-top-width", "border-right-width", "border-bottom-width", "border-left-width" ],
856 prerequisites: { "border-style": "solid" },
857 initial_values: [ "medium", "3px", "medium medium", "3px medium medium", "medium 3px medium medium" ],
858 other_values: [ "thin", "thick", "1px", "2em", "2px 0 0px 1em" ],
859 invalid_values: [ "5%" ]
864 type: CSS_TYPE_LONGHAND,
865 /* XXX requires position to be set */
866 /* XXX 0 may or may not be equal to auto */
867 initial_values: [ "auto" ],
868 other_values: [ "32px", "-3em", "12%" ],
872 domProp: "captionSide",
874 type: CSS_TYPE_LONGHAND,
875 initial_values: [ "top" ],
876 other_values: [ "right", "left", "bottom", "top-outside", "bottom-outside" ],
882 type: CSS_TYPE_LONGHAND,
883 initial_values: [ "none" ],
884 other_values: [ "left", "right", "both" ],
890 type: CSS_TYPE_LONGHAND,
891 initial_values: [ "auto" ],
892 other_values: [ "rect(0 0 0 0)", "rect(auto,auto,auto,auto)", "rect(3px, 4px, 4em, 0)", "rect(auto, 3em, 4pt, 2px)", "rect(2px 3px 4px 5px)" ],
893 invalid_values: [ "rect(auto, 3em, 2%, 5px)" ]
898 type: CSS_TYPE_LONGHAND,
899 /* XXX should test currentColor, but may or may not be initial */
900 initial_values: [ "black", "#000" ],
901 other_values: [ "green", "#f3c", "#fed292", "rgba(45,300,12,2)", "transparent", "-moz-nativehyperlinktext", "rgba(255,128,0,0.5)" ],
902 invalid_values: [ "fff", "ffffff", "#f", "#ff", "#ffff", "#fffff", "#fffffff", "#ffffffff", "#fffffffff" ]
907 type: CSS_TYPE_LONGHAND,
908 /* XXX needs to be on pseudo-elements */
909 initial_values: [ "normal", "none" ],
910 other_values: [ '""', "''", '"hello"', "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', ],
913 "counter-increment": {
914 domProp: "counterIncrement",
916 type: CSS_TYPE_LONGHAND,
917 initial_values: [ "none" ],
918 other_values: [ "foo 1", "bar", "foo 3 bar baz 2" ],
922 domProp: "counterReset",
924 type: CSS_TYPE_LONGHAND,
925 initial_values: [ "none" ],
926 other_values: [ "bar 0", "foo", "foo 3 bar baz 2" ],
933 type: CSS_TYPE_TRUE_SHORTHAND,
934 subproperties: [ "cue-before", "cue-after" ],
935 initial_values: [ "none", "none none" ],
936 other_values: [ "url(404.wav)", "url(404.wav) none", "none url(404.wav)" ],
943 type: CSS_TYPE_LONGHAND,
944 initial_values: [ "none" ],
945 other_values: [ "url(404.wav)" ],
949 domProp: "cueBefore",
952 type: CSS_TYPE_LONGHAND,
953 initial_values: [ "none" ],
954 other_values: [ "url(404.wav)" ],
960 type: CSS_TYPE_LONGHAND,
961 initial_values: [ "auto" ],
962 other_values: [ "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help", "progress", "none" ],
966 domProp: "direction",
968 type: CSS_TYPE_LONGHAND,
969 initial_values: [ "ltr" ],
970 other_values: [ "rtl" ],
976 type: CSS_TYPE_LONGHAND,
977 initial_values: [ "inline" ],
978 /* XXX none will really mess with other properties */
979 prerequisites: { "float": "none", "position": "static" },
980 other_values: [ "block", "list-item", "inline-block", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none" ],
984 domProp: "elevation",
987 type: CSS_TYPE_LONGHAND,
988 initial_values: [ "level", "0deg" ],
989 other_values: [ "below", "above", "60deg", "higher", "lower", "-79deg", "0.33deg" ],
993 domProp: "emptyCells",
995 type: CSS_TYPE_LONGHAND,
996 initial_values: [ "show" ],
997 other_values: [ "hide" ],
1001 domProp: "cssFloat",
1003 type: CSS_TYPE_LONGHAND,
1004 initial_values: [ "none" ],
1005 other_values: [ "left", "right" ],
1011 type: CSS_TYPE_TRUE_SHORTHAND,
1012 subproperties: [ "font-style", "font-variant", "font-weight", "font-size", "line-height", "font-family", "font-stretch", "font-size-adjust" ],
1013 /* XXX could be sans-serif */
1014 initial_values: [ "medium serif" ],
1015 other_values: [ "large serif", "9px fantasy", "bold italic small-caps 24px/1.4 Times New Roman, serif", "caption", "icon", "menu", "message-box", "small-caption", "status-bar" ],
1019 domProp: "fontFamily",
1021 type: CSS_TYPE_LONGHAND,
1022 initial_values: [ "serif" ],
1023 other_values: [ "sans-serif", "Times New Roman, serif", "'Times New Roman', serif", "cursive", "fantasy" ],
1027 domProp: "fontSize",
1029 type: CSS_TYPE_LONGHAND,
1030 initial_values: [ "medium" ],
1031 other_values: [ "large", "2em", "50%", "xx-small", "36pt", "8px" ],
1034 "font-size-adjust": {
1035 domProp: "fontSizeAdjust",
1037 type: CSS_TYPE_LONGHAND,
1038 initial_values: [ "none" ],
1039 other_values: [ "0.3", "0.5", "0.7" ],
1043 domProp: "fontStretch",
1046 type: CSS_TYPE_LONGHAND,
1047 initial_values: [ "normal" ],
1048 other_values: [ "wider", "narrower", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded" ],
1052 domProp: "fontStyle",
1054 type: CSS_TYPE_LONGHAND,
1055 initial_values: [ "normal" ],
1056 other_values: [ "italic", "oblique" ],
1060 domProp: "fontVariant",
1062 type: CSS_TYPE_LONGHAND,
1063 initial_values: [ "normal" ],
1064 other_values: [ "small-caps" ],
1068 domProp: "fontWeight",
1070 type: CSS_TYPE_LONGHAND,
1071 initial_values: [ "normal", "400" ],
1072 other_values: [ "bold", "100", "200", "300", "500", "600", "700", "800", "900" ],
1073 invalid_values: [ "107", "399", "401", "699", "710" ]
1078 type: CSS_TYPE_LONGHAND,
1079 initial_values: [ " auto" ],
1080 /* XXX these have prerequisites */
1081 other_values: [ "15px", "3em", "15%" ],
1082 invalid_values: [ "none", "-moz-max-content", "-moz-min-content", "-moz-fit-content", "-moz-available" ]
1087 type: CSS_TYPE_LONGHAND,
1088 initial_values: [ "auto" ],
1089 other_values: [ "normal", "disabled", "active", "inactive" ],
1090 invalid_values: [ "none", "enabled", "1px" ]
1095 type: CSS_TYPE_LONGHAND,
1096 /* XXX requires position to be set */
1097 /* XXX 0 may or may not be equal to auto */
1098 initial_values: [ "auto" ],
1099 other_values: [ "32px", "-3em", "12%" ],
1103 domProp: "letterSpacing",
1105 type: CSS_TYPE_LONGHAND,
1106 initial_values: [ "normal" ],
1107 other_values: [ "0", "0px", "1em", "2px", "-3px" ],
1111 domProp: "lineHeight",
1113 type: CSS_TYPE_LONGHAND,
1115 * Inheritance tests require consistent font size, since
1116 * getComputedStyle (which uses the CSS2 computed value, or
1117 * CSS2.1 used value) doesn't match what the CSS2.1 computed
1118 * value is. And they even require consistent font metrics for
1119 * computation of 'normal'.
1121 prerequisites: { "font-size": "19px", "font-size-adjust": "none", "font-family": "serif", "font-weight": "normal", "font-style": "normal" },
1122 initial_values: [ "normal" ],
1123 other_values: [ "1.0", "1", "1em", "47px" ],
1127 domProp: "listStyle",
1129 type: CSS_TYPE_TRUE_SHORTHAND,
1130 subproperties: [ "list-style-type", "list-style-position", "list-style-image" ],
1131 initial_values: [ "outside", "disc", "none disc outside" ],
1132 other_values: [ "inside none", "none inside", "none none inside", "none outside none", "square", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', "none" ],
1135 "list-style-image": {
1136 domProp: "listStyleImage",
1138 type: CSS_TYPE_LONGHAND,
1139 initial_values: [ "none" ],
1140 other_values: [ 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")' ],
1143 "list-style-position": {
1144 domProp: "listStylePosition",
1146 type: CSS_TYPE_LONGHAND,
1147 initial_values: [ "outside" ],
1148 other_values: [ "inside" ],
1151 "list-style-type": {
1152 domProp: "listStyleType",
1154 type: CSS_TYPE_LONGHAND,
1155 initial_values: [ "disc" ],
1156 other_values: [ "circle", "decimal-leading-zero", "upper-alpha" ],
1162 type: CSS_TYPE_TRUE_SHORTHAND,
1163 subproperties: [ "margin-top", "margin-right", "margin-bottom", "margin-left" ],
1164 initial_values: [ "0", "0px 0 0em", "0% 0px 0em 0pt" ],
1165 other_values: [ "3px 0", "2em 4px 2pt", "1em 2em 3px 4px" ],
1169 domProp: "marginBottom",
1171 type: CSS_TYPE_LONGHAND,
1172 /* XXX testing auto has prerequisites */
1173 initial_values: [ "0", "0px", "0%" ],
1174 other_values: [ "1px", "2em", "5%" ],
1178 domProp: "marginLeft",
1180 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
1181 /* no subproperties */
1182 /* XXX testing auto has prerequisites */
1183 initial_values: [ "0", "0px", "0%" ],
1184 other_values: [ "1px", "2em", "5%" ],
1188 domProp: "marginRight",
1190 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
1191 /* no subproperties */
1192 /* XXX testing auto has prerequisites */
1193 initial_values: [ "0", "0px", "0%" ],
1194 other_values: [ "1px", "2em", "5%" ],
1198 domProp: "marginTop",
1200 type: CSS_TYPE_LONGHAND,
1201 /* XXX testing auto has prerequisites */
1202 initial_values: [ "0", "0px", "0%" ],
1203 other_values: [ "1px", "2em", "5%" ],
1207 domProp: "markerOffset",
1209 type: CSS_TYPE_LONGHAND,
1210 initial_values: [ "auto" ],
1211 other_values: [ "6em", "-1px" ],
1215 /* XXX not a real property; applies only to page context */
1219 type: CSS_TYPE_LONGHAND,
1220 initial_values: [ "none" ],
1221 other_values: [ "crop", "cross", "crop cross", "cross crop" ],
1222 invalid_values: [ "none none", "crop none", "none crop", "cross none", "none cross" ]
1225 domProp: "maxHeight",
1227 type: CSS_TYPE_LONGHAND,
1228 initial_values: [ "none" ],
1229 other_values: [ "30px", "50%", "0" ],
1230 invalid_values: [ "auto", "-moz-max-content", "-moz-min-content", "-moz-fit-content", "-moz-available" ]
1233 domProp: "maxWidth",
1235 type: CSS_TYPE_LONGHAND,
1236 initial_values: [ "none" ],
1237 other_values: [ "30px", "50%", "0", "-moz-max-content", "-moz-min-content", "-moz-fit-content", "-moz-available" ],
1238 invalid_values: [ "auto" ]
1241 domProp: "minHeight",
1243 type: CSS_TYPE_LONGHAND,
1244 initial_values: [ "0" ],
1245 other_values: [ "30px", "50%" ],
1246 invalid_values: [ "auto", "none", "-moz-max-content", "-moz-min-content", "-moz-fit-content", "-moz-available" ]
1249 domProp: "minWidth",
1251 type: CSS_TYPE_LONGHAND,
1252 initial_values: [ "0" ],
1253 other_values: [ "30px", "50%", "-moz-max-content", "-moz-min-content", "-moz-fit-content", "-moz-available" ],
1254 invalid_values: [ "auto", "none" ]
1259 type: CSS_TYPE_LONGHAND,
1260 initial_values: [ "1", "17", "397.376" ],
1261 other_values: [ "0", "0.4", "0.0000", "-3" ],
1262 invalid_values: [ "0px", "1px" ]
1268 type: CSS_TYPE_LONGHAND,
1269 // XXX requires display:block
1270 initial_values: [ "2" ],
1271 other_values: [ "1", "7" ],
1273 // "0", // not clear whether it's valid or not.
1274 // "-1", // not clear whether it's valid or not.
1281 type: CSS_TYPE_TRUE_SHORTHAND,
1282 subproperties: [ "outline-color", "outline-style", "outline-width" ],
1285 // XXX Should be invert, but currently currentcolor.
1286 //"invert", "none medium invert"
1287 "currentColor", "none medium currentcolor"
1289 other_values: [ "solid", "medium solid", "green solid", "10px solid", "thick solid" ],
1290 invalid_values: [ "5%" ]
1293 domProp: "outlineColor",
1295 type: CSS_TYPE_LONGHAND,
1296 prerequisites: { "color": "black" },
1297 initial_values: [ "currentColor" ], // XXX should be invert
1298 other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
1299 invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
1302 domProp: "outlineOffset",
1304 type: CSS_TYPE_LONGHAND,
1305 initial_values: [ "0" ],
1306 other_values: [ "-3px", "1em" ],
1307 invalid_values: [ "5%" ]
1310 domProp: "outlineStyle",
1312 type: CSS_TYPE_LONGHAND,
1313 // XXX Should 'hidden' be the same as initial?
1314 initial_values: [ "none" ],
1315 other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
1319 domProp: "outlineWidth",
1321 type: CSS_TYPE_LONGHAND,
1322 prerequisites: { "outline-style": "solid" },
1323 initial_values: [ "medium", "3px" ],
1324 other_values: [ "thin", "thick", "1px", "2em" ],
1325 invalid_values: [ "5%" ]
1328 domProp: "overflow",
1330 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
1331 prerequisites: { "display": "block" },
1332 subproperties: [ "overflow-x", "overflow-y" ],
1333 initial_values: [ "visible" ],
1334 other_values: [ "auto", "scroll", "hidden" ],
1338 domProp: "overflowX",
1340 type: CSS_TYPE_LONGHAND,
1341 prerequisites: { "display": "block", "overflow-y": "visible" },
1342 initial_values: [ "visible" ],
1343 other_values: [ "auto", "scroll", "hidden" ],
1347 domProp: "overflowY",
1349 type: CSS_TYPE_LONGHAND,
1350 prerequisites: { "display": "block", "overflow-x": "visible" },
1351 initial_values: [ "visible" ],
1352 other_values: [ "auto", "scroll", "hidden" ],
1358 type: CSS_TYPE_TRUE_SHORTHAND,
1359 subproperties: [ "padding-top", "padding-right", "padding-bottom", "padding-left" ],
1360 initial_values: [ "0", "0px 0 0em", "0% 0px 0em 0pt" ],
1361 other_values: [ "3px 0", "2em 4px 2pt", "1em 2em 3px 4px" ],
1365 domProp: "paddingBottom",
1367 type: CSS_TYPE_LONGHAND,
1368 initial_values: [ "0", "0px", "0%" ],
1369 other_values: [ "1px", "2em", "5%" ],
1373 domProp: "paddingLeft",
1375 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
1376 /* no subproperties */
1377 initial_values: [ "0", "0px", "0%" ],
1378 other_values: [ "1px", "2em", "5%" ],
1382 domProp: "paddingRight",
1384 type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
1385 /* no subproperties */
1386 initial_values: [ "0", "0px", "0%" ],
1387 other_values: [ "1px", "2em", "5%" ],
1391 domProp: "paddingTop",
1393 type: CSS_TYPE_LONGHAND,
1394 initial_values: [ "0", "0px", "0%" ],
1395 other_values: [ "1px", "2em", "5%" ],
1402 type: CSS_TYPE_LONGHAND,
1403 initial_values: [ "auto" ],
1404 other_values: [ "foo", "bar" ],
1405 invalid_values: [ "3px" ]
1407 "page-break-after": {
1408 domProp: "pageBreakAfter",
1410 type: CSS_TYPE_LONGHAND,
1411 initial_values: [ "auto" ],
1412 other_values: [ "always", "avoid", "left", "right" ],
1415 "page-break-before": {
1416 domProp: "pageBreakBefore",
1418 type: CSS_TYPE_LONGHAND,
1419 initial_values: [ "auto" ],
1420 other_values: [ "always", "avoid", "left", "right" ],
1423 "page-break-inside": {
1424 domProp: "pageBreakInside",
1427 type: CSS_TYPE_LONGHAND,
1428 initial_values: [ "auto" ],
1429 other_values: [ "avoid" ],
1436 type: CSS_TYPE_TRUE_SHORTHAND,
1437 subproperties: [ "pause-before", "pause-after" ],
1438 initial_values: [ "0", "0s", "0ms", "0 0", "0s 0ms", "0ms 0" ],
1439 other_values: [ "1s", "200ms", "-2s", "50%", "-10%", "10% 200ms", "-3s -5%" ],
1440 invalid_values: [ "0px" ]
1443 domProp: "pauseAfter",
1446 type: CSS_TYPE_LONGHAND,
1447 initial_values: [ "0", "0s", "0ms" ],
1448 other_values: [ "1s", "200ms", "-2s", "50%", "-10%" ],
1449 invalid_values: [ "0px" ]
1452 domProp: "pauseBefore",
1455 type: CSS_TYPE_LONGHAND,
1456 initial_values: [ "0", "0s", "0ms" ],
1457 other_values: [ "1s", "200ms", "-2s", "50%", "-10%" ],
1458 invalid_values: [ "0px" ]
1464 type: CSS_TYPE_LONGHAND,
1465 initial_values: [ "medium" ],
1466 other_values: [ "x-low", "low", "high", "x-high" ],
1470 domProp: "pitchRange",
1473 type: CSS_TYPE_LONGHAND,
1474 initial_values: [ "50", "50.0" ],
1475 other_values: [ "0", "100.0", "99.7", "47", "3.2" ],
1476 invalid_values: [" -0.01", "100.2", "108", "-3" ]
1479 domProp: "position",
1481 type: CSS_TYPE_LONGHAND,
1482 initial_values: [ "static" ],
1483 other_values: [ "relative", "absolute", "fixed" ],
1489 type: CSS_TYPE_LONGHAND,
1490 initial_values: [ '"\u201C" "\u201D" "\u2018" "\u2019"',
1491 '"\\201C" "\\201D" "\\2018" "\\2019"' ],
1492 other_values: [ "none", "'\"' '\"'" ],
1496 domProp: "richness",
1499 type: CSS_TYPE_LONGHAND,
1500 initial_values: [ "50", "50.0" ],
1501 other_values: [ "0", "100.0", "99.7", "47", "3.2" ],
1502 invalid_values: [" -0.01", "100.2", "108", "-3" ]
1507 type: CSS_TYPE_LONGHAND,
1508 /* XXX requires position to be set */
1509 /* XXX 0 may or may not be equal to auto */
1510 initial_values: [ "auto" ],
1511 other_values: [ "32px", "-3em", "12%" ],
1515 /* XXX not a real property; applies only to page context */
1519 type: CSS_TYPE_LONGHAND,
1520 initial_values: [ "auto" ],
1521 other_values: [ "landscape", "portrait", "8.5in 11in", "14in 11in", "297mm 210mm", "21cm 29.7cm", "100mm" ],
1523 // XXX spec unclear on 0s and negatives
1531 type: CSS_TYPE_LONGHAND,
1532 initial_values: [ "normal" ],
1533 other_values: [ "none", "spell-out" ],
1537 domProp: "speakHeader",
1540 type: CSS_TYPE_LONGHAND,
1541 initial_values: [ "once" ],
1542 other_values: [ "always" ],
1546 domProp: "speakNumeral",
1549 type: CSS_TYPE_LONGHAND,
1550 initial_values: [ "continuous" ],
1551 other_values: [ "digits" ],
1554 "speak-punctuation": {
1555 domProp: "speakPunctuation",
1558 type: CSS_TYPE_LONGHAND,
1559 initial_values: [ "none" ],
1560 other_values: [ "code" ],
1564 domProp: "speechRate",
1567 type: CSS_TYPE_LONGHAND,
1568 initial_values: [ "medium" ],
1569 other_values: [ "x-slow", "slow", "fast", "x-fast", "faster", "slower", "80", "500", "73.2" ],
1571 // "0", "-80" // unclear
1578 type: CSS_TYPE_LONGHAND,
1579 initial_values: [ "50", "50.0" ],
1580 other_values: [ "0", "100.0", "99.7", "47", "3.2" ],
1581 invalid_values: [" -0.01", "100.2", "108", "-3" ]
1584 domProp: "tableLayout",
1586 type: CSS_TYPE_LONGHAND,
1587 initial_values: [ "auto" ],
1588 other_values: [ "fixed" ],
1592 domProp: "textAlign",
1594 type: CSS_TYPE_LONGHAND,
1595 // don't know whether left and right are same as start
1596 initial_values: [ "start" ],
1597 other_values: [ "center", "justify" ],
1600 "text-decoration": {
1601 domProp: "textDecoration",
1603 type: CSS_TYPE_LONGHAND,
1604 initial_values: [ "none" ],
1605 other_values: [ "underline", "overline", "line-through", "blink line-through underline", "underline overline line-through blink" ],
1606 invalid_values: [ "underline none", "none underline", "line-through blink line-through" ]
1609 domProp: "textIndent",
1611 type: CSS_TYPE_LONGHAND,
1612 initial_values: [ "0" ],
1613 other_values: [ "2em", "5%", "-10px" ],
1617 domProp: "textShadow",
1619 type: CSS_TYPE_LONGHAND,
1620 initial_values: [ "none" ],
1621 prerequisites: { "color": "blue" },
1622 other_values: [ "2px 2px", "2px 2px 1px", "2px 2px green", "2px 2px 1px green", "green 2px 2px", "green 2px 2px 1px", "green 2px 2px, blue 1px 3px 4px", "currentColor 3px 3px", "blue 2px 2px, currentColor 1px 2px" ],
1623 invalid_values: [ "3% 3%", "2px 2px 2px 2px", "2px 2px, none", "none, 2px 2px", "inherit, 2px 2px", "2px 2px, inherit" ]
1626 domProp: "textTransform",
1628 type: CSS_TYPE_LONGHAND,
1629 initial_values: [ "none" ],
1630 other_values: [ "capitalize", "uppercase", "lowercase" ],
1636 type: CSS_TYPE_LONGHAND,
1637 /* XXX requires position to be set */
1638 /* XXX 0 may or may not be equal to auto */
1639 initial_values: [ "auto" ],
1640 other_values: [ "32px", "-3em", "12%" ],
1644 domProp: "unicodeBidi",
1646 type: CSS_TYPE_LONGHAND,
1647 initial_values: [ "normal" ],
1648 other_values: [ "embed", "bidi-override" ],
1649 invalid_values: [ "auto", "none" ]
1652 domProp: "verticalAlign",
1654 type: CSS_TYPE_LONGHAND,
1655 initial_values: [ "baseline" ],
1656 other_values: [ "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom", "15%", "3px", "0.2em", "-5px", "-3%" ],
1660 domProp: "visibility",
1662 type: CSS_TYPE_LONGHAND,
1663 initial_values: [ "visible" ],
1664 other_values: [ "hidden", "collapse" ],
1668 domProp: "voiceFamily",
1671 type: CSS_TYPE_LONGHAND,
1672 initial_values: [ "male" ], /* arbitrary guess */
1673 other_values: [ "female", "child", "Bob, male", "Jane, Juliet, female" ],
1680 type: CSS_TYPE_LONGHAND,
1681 initial_values: [ "50", "50.0", "medium" ],
1682 other_values: [ "0", "100.0", "99.7", "47", "3.2", "silent", "x-soft", "soft", "loud", "x-loud" ],
1683 invalid_values: [" -0.01", "100.2", "108", "-3" ]
1686 domProp: "whiteSpace",
1688 type: CSS_TYPE_LONGHAND,
1689 initial_values: [ "normal" ],
1690 other_values: [ "pre", "nowrap", "pre-wrap", "pre-line" ],
1697 type: CSS_TYPE_LONGHAND,
1698 // XXX requires display:block
1699 initial_values: [ "2" ],
1700 other_values: [ "1", "7" ],
1702 // "0", // not clear whether it's valid or not.
1703 // "-1", // not clear whether it's valid or not.
1710 type: CSS_TYPE_LONGHAND,
1711 initial_values: [ " auto" ],
1712 /* XXX these have prerequisites */
1713 other_values: [ "15px", "3em", "15%", "-moz-max-content", "-moz-min-content", "-moz-fit-content", "-moz-available" ],
1714 invalid_values: [ "none" ]
1717 domProp: "wordSpacing",
1719 type: CSS_TYPE_LONGHAND,
1720 initial_values: [ "normal", "0", "0px", "-0em" ],
1721 other_values: [ "1em", "2px", "-3px" ],
1725 domProp: "wordWrap",
1727 type: CSS_TYPE_LONGHAND,
1728 initial_values: [ "normal" ],
1729 other_values: [ "break-word" ],
1735 type: CSS_TYPE_LONGHAND,
1736 /* XXX requires position */
1737 initial_values: [ "auto" ],
1738 other_values: [ "0", "3", "-7000", "12000" ],
1739 invalid_values: [ "3.0", "17.5" ]
1745 type: CSS_TYPE_LONGHAND,
1746 initial_values: [ "none" ],
1747 other_values: [ "url(#mypath)", "url('404.svg#mypath')" ],
1753 type: CSS_TYPE_LONGHAND,
1754 initial_values: [ "nonzero" ],
1755 other_values: [ "evenodd" ],
1758 "color-interpolation": {
1761 type: CSS_TYPE_LONGHAND,
1762 initial_values: [ "sRGB" ],
1763 other_values: [ "auto", "linearRGB" ],
1766 "color-interpolation-filters": {
1769 type: CSS_TYPE_LONGHAND,
1770 initial_values: [ "linearRGB" ],
1771 other_values: [ "sRGB", "auto" ],
1774 "dominant-baseline": {
1777 type: CSS_TYPE_LONGHAND,
1778 initial_values: [ "auto" ],
1779 other_values: [ "use-script", "no-change", "reset-size", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge" ],
1785 type: CSS_TYPE_LONGHAND,
1786 prerequisites: { "color": "blue" },
1787 initial_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)" ],
1788 other_values: [ "green", "#fc3", "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green', "none", "currentColor" ],
1794 type: CSS_TYPE_LONGHAND,
1795 initial_values: [ "1", "2.8", "1.000" ],
1796 other_values: [ "0", "0.3", "-7.3" ],
1802 type: CSS_TYPE_LONGHAND,
1803 initial_values: [ "nonzero" ],
1804 other_values: [ "evenodd" ],
1810 type: CSS_TYPE_LONGHAND,
1811 initial_values: [ "none" ],
1812 other_values: [ "url(#myfilt)" ],
1813 invalid_values: [ "url(#myfilt) none" ]
1818 type: CSS_TYPE_LONGHAND,
1819 prerequisites: { "color": "blue" },
1820 initial_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)" ],
1821 other_values: [ "green", "#fc3", "currentColor" ],
1822 invalid_values: [ "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green' ]
1827 type: CSS_TYPE_LONGHAND,
1828 initial_values: [ "1", "2.8", "1.000" ],
1829 other_values: [ "0", "0.3", "-7.3" ],
1835 type: CSS_TYPE_LONGHAND,
1836 prerequisites: { "color": "blue" },
1837 initial_values: [ "white", "#fff", "#ffffff", "rgb(255,255,255)", "rgba(255,255,255,1.0)", "rgba(255,255,255,42.0)" ],
1838 other_values: [ "green", "#fc3", "currentColor" ],
1839 invalid_values: [ "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green' ]
1844 type: CSS_TYPE_TRUE_SHORTHAND,
1845 subproperties: [ "marker-start", "marker-mid", "marker-end" ],
1846 initial_values: [ "none" ],
1847 other_values: [ "url(#mysym)" ],
1848 invalid_values: [ "none none", "url(#mysym) url(#mysym)", "none url(#mysym)", "url(#mysym) none" ]
1853 type: CSS_TYPE_LONGHAND,
1854 initial_values: [ "none" ],
1855 other_values: [ "url(#mysym)" ],
1861 type: CSS_TYPE_LONGHAND,
1862 initial_values: [ "none" ],
1863 other_values: [ "url(#mysym)" ],
1869 type: CSS_TYPE_LONGHAND,
1870 initial_values: [ "none" ],
1871 other_values: [ "url(#mysym)" ],
1877 type: CSS_TYPE_LONGHAND,
1878 initial_values: [ "none" ],
1879 other_values: [ "url(#mymask)" ],
1885 type: CSS_TYPE_LONGHAND,
1886 initial_values: [ "visiblepainted" ],
1887 other_values: [ "visibleFill", "visiblestroke", "Visible", "painted", "fill", "stroke", "all", "none" ],
1890 "shape-rendering": {
1893 type: CSS_TYPE_LONGHAND,
1894 initial_values: [ "auto" ],
1895 other_values: [ "optimizeSpeed", "crispEdges", "geometricPrecision" ],
1901 type: CSS_TYPE_LONGHAND,
1902 prerequisites: { "color": "blue" },
1903 initial_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)" ],
1904 other_values: [ "green", "#fc3", "currentColor" ],
1905 invalid_values: [ "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green' ]
1910 type: CSS_TYPE_LONGHAND,
1911 initial_values: [ "1", "2.8", "1.000" ],
1912 other_values: [ "0", "0.3", "-7.3" ],
1918 type: CSS_TYPE_LONGHAND,
1919 initial_values: [ "none" ],
1920 other_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)", "green", "#fc3", "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green', "currentColor" ],
1923 "stroke-dasharray": {
1926 type: CSS_TYPE_LONGHAND,
1927 initial_values: [ "none" ],
1928 other_values: [ "5px,3px,2px", " 5px ,3px , 2px ", "1px", "5%", "3em" ],
1931 "stroke-dashoffset": {
1934 type: CSS_TYPE_LONGHAND,
1935 initial_values: [ "0", "-0px", "0em" ],
1936 other_values: [ "3px", "3%", "1em" ],
1942 type: CSS_TYPE_LONGHAND,
1943 initial_values: [ "butt" ],
1944 other_values: [ "round", "square" ],
1947 "stroke-linejoin": {
1950 type: CSS_TYPE_LONGHAND,
1951 initial_values: [ "miter" ],
1952 other_values: [ "round", "bevel" ],
1955 "stroke-miterlimit": {
1958 type: CSS_TYPE_LONGHAND,
1959 initial_values: [ "4" ],
1960 other_values: [ "1", "7", "5000" ],
1961 invalid_values: [ "0.9", "0", "-1", "3px" ]
1966 type: CSS_TYPE_LONGHAND,
1967 initial_values: [ "1", "2.8", "1.000" ],
1968 other_values: [ "0", "0.3", "-7.3" ],
1974 type: CSS_TYPE_LONGHAND,
1975 initial_values: [ "1px" ],
1976 other_values: [ "0", "0px", "-0em", "17px", "0.2em" ],
1977 invalid_values: [ "-0.1px", "-3px" ]
1982 type: CSS_TYPE_LONGHAND,
1983 initial_values: [ "start" ],
1984 other_values: [ "middle", "end" ],
1990 type: CSS_TYPE_LONGHAND,
1991 initial_values: [ "auto" ],
1992 other_values: [ "optimizeSpeed", "optimizeLegibility", "geometricPrecision" ],
1997 function logical_box_prop_get_computed(cs, property)
1999 if (! /^-moz-/.test(property))
2000 throw "Unexpected property";
2001 property = property.substring(5);
2002 if (cs.getPropertyValue("direction") == "ltr")
2003 property = property.replace("-start", "-left").replace("-end", "-right");
2005 property = property.replace("-start", "-right").replace("-end", "-left");
2006 return cs.getPropertyValue(property);
2009 // Get the computed value for a property. For shorthands, return the
2010 // computed values of all the subproperties, delimited by " ; ".
2011 function get_computed_value(cs, property)
2013 var info = gCSSProperties[property];
2014 if ("subproperties" in info) {
2016 for (var idx in info.subproperties) {
2017 var subprop = info.subproperties[idx];
2018 results.push(get_computed_value(cs, subprop));
2020 return results.join(" ; ");
2022 if (info.get_computed)
2023 return info.get_computed(cs, property);
2024 return cs.getPropertyValue(property);