pjs/layout/style/test/property_database.js

1890 строки
60 KiB
JavaScript

/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* vim: set shiftwidth=4 tabstop=4 autoindent cindent noexpandtab: */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is property_database.js.
*
* The Initial Developer of the Original Code is the Mozilla Foundation.
* Portions created by the Initial Developer are Copyright (C) 2007
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* L. David Baron <dbaron@dbaron.org>, Mozilla Corporation (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
// True longhand properties.
const CSS_TYPE_LONGHAND = 0;
// True shorthand properties.
const CSS_TYPE_TRUE_SHORTHAND = 1;
// Properties that we handle as shorthands but were longhands either in
// the current spec or earlier versions of the spec.
const CSS_TYPE_SHORTHAND_AND_LONGHAND = 2;
// Each property has the following fields:
// domProp: The name of the relevant member of nsIDOM[NS]CSS2Properties
// inherited: Whether the property is inherited by default (stated as
// yes or no in the property header in all CSS specs)
// type: see above
// get_computed: if present, the property's computed value shows up on
// another property, and this is a function used to get it
// initial_values: Values whose computed value should be the same as the
// computed value for the property's initial value.
// other_values: Values whose computed value should be different from the
// computed value for the property's initial value.
// XXX Should have a third field for values whose computed value may or
// may not be the same as for the property's initial value.
// invalid_values: Things that are not values for the property and
// should be rejected.
var gCSSProperties = {
"-moz-appearance": {
domProp: "MozAppearance",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "radio", "menulist" ],
invalid_values: []
},
"-moz-background-clip": {
domProp: "MozBackgroundClip",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "border" ],
other_values: [ "padding" ],
invalid_values: [ "content", "margin" ]
},
"-moz-background-inline-policy": {
domProp: "MozBackgroundInlinePolicy",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "continuous" ],
other_values: ["bounding-box", "each-box" ],
invalid_values: []
},
"-moz-background-origin": {
domProp: "MozBackgroundOrigin",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "padding" ],
other_values: [ "border", "content" ],
invalid_values: [ "margin" ]
},
"-moz-binding": {
domProp: "MozBinding",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(foo.xml)" ],
invalid_values: []
},
"-moz-border-bottom-colors": {
domProp: "MozBorderBottomColors",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "red green", "red #fc3", "#ff00cc" ],
invalid_values: [ "red none", "red inherit", "red, green" ]
},
"-moz-border-end": {
domProp: "MozBorderEnd",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "-moz-border-end-color", "-moz-border-end-style", "-moz-border-end-width" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
invalid_values: [ "5%" ]
},
"-moz-border-end-color": {
domProp: "MozBorderEndColor",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
initial_values: [ "currentColor" ],
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"-moz-border-end-style": {
domProp: "MozBorderEndStyle",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"-moz-border-end-width": {
domProp: "MozBorderEndWidth",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
prerequisites: { "-moz-border-end-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"-moz-border-left-colors": {
domProp: "MozBorderLeftColors",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "red green", "red #fc3", "#ff00cc" ],
invalid_values: [ "red none", "red inherit", "red, green" ]
},
"-moz-border-radius": {
domProp: "MozBorderRadius",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "-moz-border-radius-bottomleft", "-moz-border-radius-bottomright", "-moz-border-radius-topleft", "-moz-border-radius-topright" ],
initial_values: [ "0", "0px", "0px 0 0 0px" ], /* 0% ? */
other_values: [ "3%", "1px", "2em", "3em 2px", "2pt 3% 4em", "2px 2px 2px 2px" ],
invalid_values: [ "2px -2px" ]
},
"-moz-border-radius-bottomleft": {
domProp: "MozBorderRadiusBottomleft",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px" ], /* 0% ? */
other_values: [ "3%", "1px", "2em" ],
invalid_values: [ "-1px" ]
},
"-moz-border-radius-bottomright": {
domProp: "MozBorderRadiusBottomright",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px" ], /* 0% ? */
other_values: [ "3%", "1px", "2em" ],
invalid_values: [ "-1px" ]
},
"-moz-border-radius-topleft": {
domProp: "MozBorderRadiusTopleft",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px" ], /* 0% ? */
other_values: [ "3%", "1px", "2em" ],
invalid_values: [ "-1px" ]
},
"-moz-border-radius-topright": {
domProp: "MozBorderRadiusTopright",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px" ], /* 0% ? */
other_values: [ "3%", "1px", "2em" ],
invalid_values: [ "-1px" ]
},
"-moz-border-right-colors": {
domProp: "MozBorderRightColors",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "red green", "red #fc3", "#ff00cc" ],
invalid_values: [ "red none", "red inherit", "red, green" ]
},
"-moz-border-start": {
domProp: "MozBorderStart",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "-moz-border-start-color", "-moz-border-start-style", "-moz-border-start-width" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
invalid_values: [ "5%" ]
},
"-moz-border-start-color": {
domProp: "MozBorderStartColor",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
initial_values: [ "currentColor" ],
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"-moz-border-start-style": {
domProp: "MozBorderStartStyle",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"-moz-border-start-width": {
domProp: "MozBorderStartWidth",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
prerequisites: { "-moz-border-start-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"-moz-border-top-colors": {
domProp: "MozBorderTopColors",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "red green", "red #fc3", "#ff00cc" ],
invalid_values: [ "red none", "red inherit", "red, green" ]
},
"-moz-box-align": {
domProp: "MozBoxAlign",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "stretch" ],
other_values: [ "start", "center", "baseline", "end" ],
invalid_values: []
},
"-moz-box-direction": {
domProp: "MozBoxDirection",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "reverse" ],
invalid_values: []
},
"-moz-box-flex": {
domProp: "MozBoxFlex",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0.0", "-0.0" ],
other_values: [ "1", "100", "0.1" ],
invalid_values: [ "10px", "-1" ]
},
"-moz-box-ordinal-group": {
domProp: "MozBoxOrdinalGroup",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1" ],
other_values: [ "0", "-1", "100", "-1000" ],
invalid_values: [ "1.0" ]
},
"-moz-box-orient": {
domProp: "MozBoxOrient",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "horizontal", "inline-axis" ],
other_values: [ "vertical", "block-axis" ],
invalid_values: []
},
"-moz-box-pack": {
domProp: "MozBoxPack",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "start" ],
other_values: [ "center", "end", "justify" ],
invalid_values: []
},
"-moz-box-sizing": {
domProp: "MozBoxSizing",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "content-box" ],
other_values: [ "border-box", "padding-box" ],
invalid_values: [ "margin-box", "content", "padding", "border", "margin" ]
},
"-moz-column-count": {
domProp: "MozColumnCount",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "1", "0", "17" ],
invalid_values: [
// "-1", unclear: see http://lists.w3.org/Archives/Public/www-style/2007Apr/0030
"3px"
]
},
"-moz-column-gap": {
domProp: "MozColumnGap",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal", "1em" ],
other_values: [ "2px", "4em" ],
invalid_values: [ "3%" ]
},
"-moz-column-width": {
domProp: "MozColumnWidth",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "15px", "50%" ],
invalid_values: [ "20" ]
},
"-moz-float-edge": {
domProp: "MozFloatEdge",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "content-box" ],
other_values: [ "border-box", "padding-box", "margin-box" ],
invalid_values: [ "content", "padding", "border", "margin" ]
},
"-moz-force-broken-image-icon": {
domProp: "MozForceBrokenImageIcon",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0" ],
other_values: [ "1" ],
invalid_values: []
},
"-moz-image-region": {
domProp: "MozImageRegion",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "rect(3px 20px 15px 4px)", "rect(17px, 21px, 33px, 2px)" ],
invalid_values: []
},
"-moz-margin-end": {
domProp: "MozMarginEnd",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
/* no subproperties */
/* auto may or may not be initial */
initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
other_values: [ "1px", "3em" ],
invalid_values: []
},
"-moz-margin-start": {
domProp: "MozMarginStart",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
/* no subproperties */
/* auto may or may not be initial */
initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
other_values: [ "1px", "3em" ],
invalid_values: []
},
"-moz-outline-radius": {
domProp: "MozOutlineRadius",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "-moz-outline-radius-bottomleft", "-moz-outline-radius-bottomright", "-moz-outline-radius-topleft", "-moz-outline-radius-topright" ],
initial_values: [ "0", "0px", "0%" ],
other_values: [ "2px", "0.3em", "2%" ],
invalid_values: [ "-2px" ]
},
"-moz-outline-radius-bottomleft": {
domProp: "MozOutlineRadiusBottomleft",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px", "0%" ],
other_values: [ "2px", "0.3em", "2%" ],
invalid_values: [ "-2px" ]
},
"-moz-outline-radius-bottomright": {
domProp: "MozOutlineRadiusBottomright",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px", "0%" ],
other_values: [ "2px", "0.3em", "2%" ],
invalid_values: [ "-2px" ]
},
"-moz-outline-radius-topleft": {
domProp: "MozOutlineRadiusTopleft",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px", "0%" ],
other_values: [ "2px", "0.3em", "2%" ],
invalid_values: [ "-2px" ]
},
"-moz-outline-radius-topright": {
domProp: "MozOutlineRadiusTopright",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px", "0%" ],
other_values: [ "2px", "0.3em", "2%" ],
invalid_values: [ "-2px" ]
},
"-moz-padding-end": {
domProp: "MozPaddingEnd",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
/* no subproperties */
initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
other_values: [ "1px", "3em" ],
invalid_values: []
},
"-moz-padding-start": {
domProp: "MozPaddingStart",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
get_computed: logical_box_prop_get_computed,
/* no subproperties */
initial_values: [ "0", "0px", "0%", "0em", "0ex" ],
other_values: [ "1px", "3em" ],
invalid_values: []
},
"-moz-user-focus": {
domProp: "MozUserFocus",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "normal", "ignore", "select-all", "select-before", "select-after", "select-same", "select-menu" ],
invalid_values: []
},
"-moz-user-input": {
domProp: "MozUserInput",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "none", "enabled", "disabled" ],
invalid_values: []
},
"-moz-user-modify": {
domProp: "MozUserModify",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "read-only" ],
other_values: [ "read-write", "write-only" ],
invalid_values: []
},
"-moz-user-select": {
domProp: "MozUserSelect",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "none", "text", "element", "elements", "all", "toggle", "tri-state", "-moz-all", "-moz-none" ],
invalid_values: []
},
"azimuth": {
domProp: "azimuth",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "center", "0deg" ],
other_values: [ "center behind", "behind far-right", "left-side", "73deg", "90.1deg", "0.1deg" ],
invalid_values: [ "0deg behind", "behind 0deg", "90deg behind", "behind 90deg" ]
},
"background": {
domProp: "background",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "background-attachment", "background-color", "background-image", "background-position", "background-repeat", "-moz-background-clip", "-moz-background-inline-policy", "-moz-background-origin" ],
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"],
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%" ],
invalid_values: [
/* mixes with keywords have to be in correct order */
"50% left", "top 50%",
/* bug 258080: don't accept background-position separated */
"left url(404.png) top", "top url(404.png) left"
]
},
"background-attachment": {
domProp: "backgroundAttachment",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "scroll" ],
other_values: [ "fixed" ],
invalid_values: []
},
"background-color": {
domProp: "backgroundColor",
inherited: false,
type: CSS_TYPE_LONGHAND,
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)" ],
other_values: [ "green", "rgb(255, 0, 128)", "rgb(255.0,0.387,3489)", "#fc2", "#96ed2a", "black", "rgba(255,255,0,3)" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"background-image": {
domProp: "backgroundImage",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
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==")', ],
invalid_values: []
},
"background-position": {
domProp: "backgroundPosition",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "top left", "left top", "0% 0%", "0% top", "left 0%" ],
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%" ],
invalid_values: [ "50% left", "top 50%" ]
},
"background-repeat": {
domProp: "backgroundRepeat",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "repeat" ],
other_values: [ "repeat-x", "repeat-y", "no-repeat" ],
invalid_values: []
},
"border": {
domProp: "border",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
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" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "medium solid", "green solid", "10px solid", "thick solid" ],
invalid_values: [ "5%" ]
},
"border-bottom": {
domProp: "borderBottom",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-bottom-color", "border-bottom-style", "border-bottom-width" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
invalid_values: [ "5%" ]
},
"border-bottom-color": {
domProp: "borderBottomColor",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "color": "black" },
initial_values: [ "currentColor" ],
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"border-bottom-style": {
domProp: "borderBottomStyle",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"border-bottom-width": {
domProp: "borderBottomWidth",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "border-bottom-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"border-collapse": {
domProp: "borderCollapse",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "separate" ],
other_values: [ "collapse" ],
invalid_values: []
},
"border-color": {
domProp: "borderColor",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-top-color", "border-right-color", "border-bottom-color", "border-left-color" ],
initial_values: [ "currentColor", "currentColor currentColor", "currentColor currentColor currentColor", "currentColor currentColor currentcolor CURRENTcolor" ],
other_values: [ "green", "currentColor green", "currentColor currentColor green", "currentColor currentColor currentColor green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"border-left": {
domProp: "borderLeft",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-left-color", "border-left-style", "border-left-width" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
invalid_values: [ "5%" ]
},
"border-left-color": {
domProp: "borderLeftColor",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
prerequisites: { "color": "black" },
initial_values: [ "currentColor" ],
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"border-left-style": {
domProp: "borderLeftStyle",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"border-left-width": {
domProp: "borderLeftWidth",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
prerequisites: { "border-left-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"border-right": {
domProp: "borderRight",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-right-color", "border-right-style", "border-right-width" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
invalid_values: [ "5%" ]
},
"border-right-color": {
domProp: "borderRightColor",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
prerequisites: { "color": "black" },
initial_values: [ "currentColor" ],
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"border-right-style": {
domProp: "borderRightStyle",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"border-right-width": {
domProp: "borderRightWidth",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
prerequisites: { "border-right-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"border-spacing": {
domProp: "borderSpacing",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0 0", "0px", "0 0px" ],
other_values: [ "3px", "4em 2px", "4em 0", "0px 2px" ],
invalid_values: [ "0%", "0 0%" ]
},
"border-style": {
domProp: "borderStyle",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-top-style", "border-right-style", "border-bottom-style", "border-left-style" ],
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none", "none none", "none none none", "none none none none" ],
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" ],
invalid_values: []
},
"border-top": {
domProp: "borderTop",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-top-color", "border-top-style", "border-top-width" ],
initial_values: [ "none", "medium", "currentColor", "none medium currentcolor" ],
other_values: [ "solid", "thin", "green", "medium solid", "green solid", "10px solid", "thick solid", "5px green none" ],
invalid_values: [ "5%" ]
},
"border-top-color": {
domProp: "borderTopColor",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "color": "black" },
initial_values: [ "currentColor" ],
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"border-top-style": {
domProp: "borderTopStyle",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX hidden is sometimes the same as initial */
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"border-top-width": {
domProp: "borderTopWidth",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "border-top-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"border-width": {
domProp: "borderWidth",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "border-top-width", "border-right-width", "border-bottom-width", "border-left-width" ],
prerequisites: { "border-style": "solid" },
initial_values: [ "medium", "3px", "medium medium", "3px medium medium", "medium 3px medium medium" ],
other_values: [ "thin", "thick", "1px", "2em", "2px 0 0px 1em" ],
invalid_values: [ "5%" ]
},
"bottom": {
domProp: "bottom",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX requires position to be set */
/* XXX 0 may or may not be equal to auto */
initial_values: [ "auto" ],
other_values: [ "32px", "-3em", "12%" ],
invalid_values: []
},
"caption-side": {
domProp: "captionSide",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "top" ],
other_values: [ "right", "left", "bottom" ],
invalid_values: []
},
"clear": {
domProp: "clear",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "left", "right", "both" ],
invalid_values: []
},
"clip": {
domProp: "clip",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
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)" ],
invalid_values: [ "rect(auto, 3em, 2%, 5px)" ]
},
"color": {
domProp: "color",
inherited: true,
type: CSS_TYPE_LONGHAND,
/* XXX should test currentColor, but may or may not be initial */
initial_values: [ "black", "#000" ],
other_values: [ "green", "#f3c", "#fed292", "rgba(45,300,12,2)", "transparent" ],
invalid_values: [ "fff", "ffffff", "#f", "#ff", "#ffff", "#fffff", "#fffffff", "#ffffffff", "#fffffffff" ]
},
"content": {
domProp: "content",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX needs to be on pseudo-elements */
initial_values: [ "normal", "none" ],
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==")', ],
invalid_values: []
},
"counter-increment": {
domProp: "counterIncrement",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "foo 1", "bar", "foo 3 bar baz 2" ],
invalid_values: []
},
"counter-reset": {
domProp: "counterReset",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "bar 0", "foo", "foo 3 bar baz 2" ],
invalid_values: []
},
"cue": {
domProp: "cue",
inherited: false,
backend_only: true,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "cue-before", "cue-after" ],
initial_values: [ "none", "none none" ],
other_values: [ "url(404.wav)", "url(404.wav) none", "none url(404.wav)" ],
invalid_values: []
},
"cue-after": {
domProp: "cueAfter",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(404.wav)" ],
invalid_values: []
},
"cue-before": {
domProp: "cueBefore",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(404.wav)" ],
invalid_values: []
},
"cursor": {
domProp: "cursor",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
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" ],
invalid_values: []
},
"direction": {
domProp: "direction",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "ltr" ],
other_values: [ "rtl" ],
invalid_values: []
},
"display": {
domProp: "display",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "inline" ],
/* XXX none will really mess with other properties */
prerequisites: { "float": "none", "position": "static" },
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" ],
invalid_values: []
},
"elevation": {
domProp: "elevation",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "level", "0deg" ],
other_values: [ "below", "above", "60deg", "higher", "lower", "-79deg", "0.33deg" ],
invalid_values: []
},
"empty-cells": {
domProp: "emptyCells",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "show" ],
other_values: [ "hide" ],
invalid_values: []
},
"float": {
domProp: "cssFloat",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "left", "right" ],
invalid_values: []
},
"font": {
domProp: "font",
inherited: true,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "font-style", "font-variant", "font-weight", "font-size", "line-height", "font-family", "font-stretch", "font-size-adjust" ],
/* XXX could be sans-serif */
initial_values: [ "medium serif" ],
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" ],
invalid_values: []
},
"font-family": {
domProp: "fontFamily",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "serif" ],
other_values: [ "sans-serif", "Times New Roman, serif", "'Times New Roman', serif", "cursive", "fantasy" ],
invalid_values: []
},
"font-size": {
domProp: "fontSize",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "medium" ],
other_values: [ "large", "2em", "50%", "xx-small", "36pt", "8px" ],
invalid_values: []
},
"font-size-adjust": {
domProp: "fontSizeAdjust",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "0.3", "0.5", "0.7" ],
invalid_values: []
},
"font-stretch": {
domProp: "fontStretch",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "wider", "narrower", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded" ],
invalid_values: []
},
"font-style": {
domProp: "fontStyle",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "italic", "oblique" ],
invalid_values: []
},
"font-variant": {
domProp: "fontVariant",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "small-caps" ],
invalid_values: []
},
"font-weight": {
domProp: "fontWeight",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal", "400" ],
other_values: [ "bold", "100", "200", "300", "500", "600", "700", "800", "900" ],
invalid_values: [ "107", "399", "401", "699", "710" ]
},
"height": {
domProp: "height",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ " auto" ],
/* XXX these have prerequisites */
other_values: [ "15px", "3em", "15%" ],
invalid_values: [ "none", "-moz-intrinsic", "-moz-min-intrinsic", "-moz-shrink-wrap", "-moz-fill" ]
},
"ime-mode": {
domProp: "imeMode",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "normal", "disabled", "active", "inactive" ],
invalid_values: [ "none", "enabled", "1px" ]
},
"left": {
domProp: "left",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX requires position to be set */
/* XXX 0 may or may not be equal to auto */
initial_values: [ "auto" ],
other_values: [ "32px", "-3em", "12%" ],
invalid_values: []
},
"letter-spacing": {
domProp: "letterSpacing",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "0", "0px", "1em", "2px", "-3px" ],
invalid_values: []
},
"line-height": {
domProp: "lineHeight",
inherited: true,
type: CSS_TYPE_LONGHAND,
/*
* Inheritance tests require consistent font size, since
* getComputedStyle (which uses the CSS2 computed value, or
* CSS2.1 used value) doesn't match what the CSS2.1 computed
* value is. And they even require consistent font metrics for
* computation of 'normal'.
*/
prerequisites: { "font-size": "19px", "font-size-adjust": "none", "font-family": "serif", "font-weight": "normal", "font-style": "normal" },
initial_values: [ "normal" ],
other_values: [ "1.0", "1", "1em", "27px" ],
invalid_values: []
},
"list-style": {
domProp: "listStyle",
inherited: true,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "list-style-type", "list-style-position", "list-style-image" ],
initial_values: [ "outside", "disc", "none disc outside" ],
other_values: [ "inside none", "none inside", "none none inside", "none outside none", "square", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', "none" ],
invalid_values: []
},
"list-style-image": {
domProp: "listStyleImage",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")' ],
invalid_values: []
},
"list-style-position": {
domProp: "listStylePosition",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "outside" ],
other_values: [ "inside" ],
invalid_values: []
},
"list-style-type": {
domProp: "listStyleType",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "disc" ],
other_values: [ "circle", "decimal-leading-zero", "upper-alpha" ],
invalid_values: []
},
"margin": {
domProp: "margin",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "margin-top", "margin-right", "margin-bottom", "margin-left" ],
initial_values: [ "0", "0px 0 0em", "0% 0px 0em 0pt" ],
other_values: [ "3px 0", "2em 4px 2pt", "1em 2em 3px 4px" ],
invalid_values: []
},
"margin-bottom": {
domProp: "marginBottom",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX testing auto has prerequisites */
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"margin-left": {
domProp: "marginLeft",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
/* no subproperties */
/* XXX testing auto has prerequisites */
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: []
},
"margin-right": {
domProp: "marginRight",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
/* no subproperties */
/* XXX testing auto has prerequisites */
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"margin-top": {
domProp: "marginTop",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX testing auto has prerequisites */
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"marker-offset": {
domProp: "markerOffset",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "6em", "-1px" ],
invalid_values: []
},
"marks": {
/* XXX not a real property; applies only to page context */
domProp: "marks",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "crop", "cross", "crop cross", "cross crop" ],
invalid_values: [ "none none", "crop none", "none crop", "cross none", "none cross" ]
},
"max-height": {
domProp: "maxHeight",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "30px", "50%", "0" ],
invalid_values: [ "auto", "-moz-intrinsic", "-moz-min-intrinsic", "-moz-shrink-wrap", "-moz-fill" ]
},
"max-width": {
domProp: "maxWidth",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "30px", "50%", "0", "-moz-intrinsic", "-moz-min-intrinsic", "-moz-shrink-wrap", "-moz-fill" ],
invalid_values: [ "auto" ]
},
"min-height": {
domProp: "minHeight",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0" ],
other_values: [ "30px", "50%" ],
invalid_values: [ "auto", "none", "-moz-intrinsic", "-moz-min-intrinsic", "-moz-shrink-wrap", "-moz-fill" ]
},
"min-width": {
domProp: "minWidth",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0" ],
other_values: [ "30px", "50%", "-moz-intrinsic", "-moz-min-intrinsic", "-moz-shrink-wrap", "-moz-fill" ],
invalid_values: [ "auto", "none" ]
},
"opacity": {
domProp: "opacity",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1", "17", "397.376" ],
other_values: [ "0", "0.4", "0.0000", "-3" ],
invalid_values: [ "0px", "1px" ]
},
"orphans": {
domProp: "orphans",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
// XXX requires display:block
initial_values: [ "2" ],
other_values: [ "1", "7" ],
invalid_values: [
// "0", // not clear whether it's valid or not.
// "-1", // not clear whether it's valid or not.
"0px", "3px"
]
},
"outline": {
domProp: "outline",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "outline-color", "outline-style", "outline-width" ],
initial_values: [
"none", "medium",
// XXX Should be invert, but currently currentcolor.
//"invert", "none medium invert"
"currentColor", "none medium currentcolor"
],
other_values: [ "solid", "medium solid", "green solid", "10px solid", "thick solid" ],
invalid_values: [ "5%" ]
},
"outline-color": {
domProp: "outlineColor",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "color": "black" },
initial_values: [ "currentColor" ], // XXX should be invert
other_values: [ "green", "rgba(255,128,0,0.5)", "transparent" ],
invalid_values: [ "#0", "#00", "#0000", "#00000", "#0000000", "#00000000", "#000000000" ]
},
"outline-offset": {
domProp: "outlineOffset",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0" ],
other_values: [ "-3px", "1em" ],
invalid_values: [ "5%" ]
},
"outline-style": {
domProp: "outlineStyle",
inherited: false,
type: CSS_TYPE_LONGHAND,
// XXX Should 'hidden' be the same as initial?
initial_values: [ "none" ],
other_values: [ "solid", "dashed", "dotted", "double", "outset", "inset", "groove", "ridge" ],
invalid_values: []
},
"outline-width": {
domProp: "outlineWidth",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "outline-style": "solid" },
initial_values: [ "medium", "3px" ],
other_values: [ "thin", "thick", "1px", "2em" ],
invalid_values: [ "5%" ]
},
"overflow": {
domProp: "overflow",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
prerequisites: { "display": "block" },
subproperties: [ "overflow-x", "overflow-y" ],
initial_values: [ "visible" ],
other_values: [ "auto", "scroll", "hidden" ],
invalid_values: []
},
"overflow-x": {
domProp: "overflowX",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "display": "block", "overflow-y": "visible" },
initial_values: [ "visible" ],
other_values: [ "auto", "scroll", "hidden" ],
invalid_values: []
},
"overflow-y": {
domProp: "overflowY",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "display": "block", "overflow-x": "visible" },
initial_values: [ "visible" ],
other_values: [ "auto", "scroll", "hidden" ],
invalid_values: []
},
"padding": {
domProp: "padding",
inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "padding-top", "padding-right", "padding-bottom", "padding-left" ],
initial_values: [ "0", "0px 0 0em", "0% 0px 0em 0pt" ],
other_values: [ "3px 0", "2em 4px 2pt", "1em 2em 3px 4px" ],
invalid_values: []
},
"padding-bottom": {
domProp: "paddingBottom",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"padding-left": {
domProp: "paddingLeft",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
/* no subproperties */
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"padding-right": {
domProp: "paddingRight",
inherited: false,
type: CSS_TYPE_SHORTHAND_AND_LONGHAND,
/* no subproperties */
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"padding-top": {
domProp: "paddingTop",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0px", "0%" ],
other_values: [ "1px", "2em", "5%" ],
invalid_values: [ ]
},
"page": {
domProp: "page",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "foo", "bar" ],
invalid_values: [ "3px" ]
},
"page-break-after": {
domProp: "pageBreakAfter",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "always", "avoid", "left", "right" ],
invalid_values: []
},
"page-break-before": {
domProp: "pageBreakBefore",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "always", "avoid", "left", "right" ],
invalid_values: []
},
"page-break-inside": {
domProp: "pageBreakInside",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "avoid" ],
invalid_values: []
},
"pause": {
domProp: "pause",
inherited: false,
backend_only: true,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "pause-before", "pause-after" ],
initial_values: [ "0", "0s", "0ms", "0 0", "0s 0ms", "0ms 0" ],
other_values: [ "1s", "200ms", "-2s", "50%", "-10%", "10% 200ms", "-3s -5%" ],
invalid_values: [ "0px" ]
},
"pause-after": {
domProp: "pauseAfter",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0s", "0ms" ],
other_values: [ "1s", "200ms", "-2s", "50%", "-10%" ],
invalid_values: [ "0px" ]
},
"pause-before": {
domProp: "pauseBefore",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "0s", "0ms" ],
other_values: [ "1s", "200ms", "-2s", "50%", "-10%" ],
invalid_values: [ "0px" ]
},
"pitch": {
domProp: "pitch",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "medium" ],
other_values: [ "x-low", "low", "high", "x-high" ],
invalid_values: []
},
"pitch-range": {
domProp: "pitchRange",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "50", "50.0" ],
other_values: [ "0", "100.0", "99.7", "47", "3.2" ],
invalid_values: [" -0.01", "100.2", "108", "-3" ]
},
"position": {
domProp: "position",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "static" ],
other_values: [ "relative", "absolute", "fixed" ],
invalid_values: []
},
"quotes": {
domProp: "quotes",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ '"\\201C" "\\201D" "\\2018" "\\2019"' ],
other_values: [ "none", "'\"' '\"'" ],
invalid_values: []
},
"richness": {
domProp: "richness",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "50", "50.0" ],
other_values: [ "0", "100.0", "99.7", "47", "3.2" ],
invalid_values: [" -0.01", "100.2", "108", "-3" ]
},
"right": {
domProp: "right",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX requires position to be set */
/* XXX 0 may or may not be equal to auto */
initial_values: [ "auto" ],
other_values: [ "32px", "-3em", "12%" ],
invalid_values: []
},
"size": {
/* XXX not a real property; applies only to page context */
domProp: "size",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "landscape", "portrait", "8.5in 11in", "14in 11in", "297mm 210mm", "21cm 29.7cm", "100mm" ],
invalid_values: [
// XXX spec unclear on 0s and negatives
"100mm 100mm 100mm"
]
},
"speak": {
domProp: "speak",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "none", "spell-out" ],
invalid_values: []
},
"speak-header": {
domProp: "speakHeader",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "once" ],
other_values: [ "always" ],
invalid_values: []
},
"speak-numeral": {
domProp: "speakNumeral",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "continuous" ],
other_values: [ "digits" ],
invalid_values: []
},
"speak-punctuation": {
domProp: "speakPunctuation",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "code" ],
invalid_values: []
},
"speech-rate": {
domProp: "speechRate",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "medium" ],
other_values: [ "x-slow", "slow", "fast", "x-fast", "faster", "slower", "80", "500", "73.2" ],
invalid_values: [
// "0", "-80" // unclear
]
},
"stress": {
domProp: "stress",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "50", "50.0" ],
other_values: [ "0", "100.0", "99.7", "47", "3.2" ],
invalid_values: [" -0.01", "100.2", "108", "-3" ]
},
"table-layout": {
domProp: "tableLayout",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "fixed" ],
invalid_values: []
},
"text-align": {
domProp: "textAlign",
inherited: true,
type: CSS_TYPE_LONGHAND,
// don't know whether left and right are same as start
initial_values: [ "start" ],
other_values: [ "center", "justify" ],
invalid_values: []
},
"text-decoration": {
domProp: "textDecoration",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "underline", "overline", "line-through", "blink line-through underline", "underline overline line-through blink" ],
invalid_values: [ "underline none", "none underline", "line-through blink line-through" ]
},
"text-indent": {
domProp: "textIndent",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0" ],
other_values: [ "2em", "5%", "-10px" ],
invalid_values: []
},
"text-shadow": {
domProp: "textShadow",
inherited: false,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
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" ],
invalid_values: [ "3% 3%", "2px 2px 2px 2px", "2px 2px, none" ]
},
"text-transform": {
domProp: "textTransform",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "capitalize", "uppercase", "lowercase" ],
invalid_values: []
},
"top": {
domProp: "top",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX requires position to be set */
/* XXX 0 may or may not be equal to auto */
initial_values: [ "auto" ],
other_values: [ "32px", "-3em", "12%" ],
invalid_values: []
},
"unicode-bidi": {
domProp: "unicodeBidi",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "embed", "bidi-override" ],
invalid_values: [ "auto", "none" ]
},
"vertical-align": {
domProp: "verticalAlign",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "baseline" ],
other_values: [ "sub", "super", "top", "text-top", "middle", "bottom", "text-bottom", "15%", "3px", "0.2em", "-5px", "-3%" ],
invalid_values: []
},
"visibility": {
domProp: "visibility",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "visible" ],
other_values: [ "hidden", "collapse" ],
invalid_values: []
},
"voice-family": {
domProp: "voiceFamily",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "male" ], /* arbitrary guess */
other_values: [ "female", "child", "Bob, male", "Jane, Juliet, female" ],
invalid_values: []
},
"volume": {
domProp: "volume",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "50", "50.0", "medium" ],
other_values: [ "0", "100.0", "99.7", "47", "3.2", "silent", "x-soft", "soft", "loud", "x-loud" ],
invalid_values: [" -0.01", "100.2", "108", "-3" ]
},
"white-space": {
domProp: "whiteSpace",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal" ],
other_values: [ "pre", "nowrap" ],
invalid_values: []
},
"widows": {
domProp: "widows",
inherited: true,
backend_only: true,
type: CSS_TYPE_LONGHAND,
// XXX requires display:block
initial_values: [ "2" ],
other_values: [ "1", "7" ],
invalid_values: [
// "0", // not clear whether it's valid or not.
// "-1", // not clear whether it's valid or not.
"0px", "3px"
]
},
"width": {
domProp: "width",
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ " auto" ],
/* XXX these have prerequisites */
other_values: [ "15px", "3em", "15%", "-moz-intrinsic", "-moz-min-intrinsic", "-moz-shrink-wrap", "-moz-fill" ],
invalid_values: [ "none" ]
},
"word-spacing": {
domProp: "wordSpacing",
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "normal", "0", "0px", "-0em" ],
other_values: [ "1em", "2px", "-3px" ],
invalid_values: []
},
"z-index": {
domProp: "zIndex",
inherited: false,
type: CSS_TYPE_LONGHAND,
/* XXX requires position */
initial_values: [ "auto" ],
other_values: [ "0", "3", "-7000", "12000" ],
invalid_values: [ "3.0", "17.5" ]
}
,
"clip-path": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(#mypath)", "url('404.svg#mypath')" ],
invalid_values: []
},
"clip-rule": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "nonzero" ],
other_values: [ "evenodd" ],
invalid_values: []
},
"color-interpolation": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "sRGB" ],
other_values: [ "auto", "linearRGB" ],
invalid_values: []
},
"color-interpolation-filters": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "linearRGB" ],
other_values: [ "sRGB", "auto" ],
invalid_values: []
},
"dominant-baseline": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "use-script", "no-change", "reset-size", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge" ],
invalid_values: []
},
"fill": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)" ],
other_values: [ "green", "#fc3", "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green', "none" ],
invalid_values: []
},
"fill-opacity": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1", "2.8", "1.000" ],
other_values: [ "0", "0.3", "-7.3" ],
invalid_values: []
},
"fill-rule": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "nonzero" ],
other_values: [ "evenodd" ],
invalid_values: []
},
"filter": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(#myfilt)" ],
invalid_values: [ "url(#myfilt) none" ]
},
"flood-color": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)" ],
other_values: [ "green", "#fc3" ],
invalid_values: [ "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green' ]
},
"flood-opacity": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1", "2.8", "1.000" ],
other_values: [ "0", "0.3", "-7.3" ],
invalid_values: []
},
"lighting-color": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "white", "#fff", "#ffffff", "rgb(255,255,255)", "rgba(255,255,255,1.0)", "rgba(255,255,255,42.0)" ],
other_values: [ "green", "#fc3" ],
invalid_values: [ "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green' ]
},
"marker": {
domProp: null,
inherited: true,
type: CSS_TYPE_TRUE_SHORTHAND,
subproperties: [ "marker-start", "marker-mid", "marker-end" ],
initial_values: [ "none" ],
other_values: [ "url(#mysym)" ],
invalid_values: [ "none none", "url(#mysym) url(#mysym)", "none url(#mysym)", "url(#mysym) none" ]
},
"marker-end": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(#mysym)" ],
invalid_values: []
},
"marker-mid": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(#mysym)" ],
invalid_values: []
},
"marker-start": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(#mysym)" ],
invalid_values: []
},
"mask": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "url(#mymask)" ],
invalid_values: []
},
"pointer-events": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "visiblepainted" ],
other_values: [ "visibleFill", "visiblestroke", "Visible", "painted", "fill", "stroke", "all", "none" ],
invalid_values: []
},
"shape-rendering": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "optimizeSpeed", "crispEdges", "geometricPrecision" ],
invalid_values: []
},
"stop-color": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)" ],
other_values: [ "green", "#fc3" ],
invalid_values: [ "url('#myserver')", "url(foo.svg#myserver)", 'url("#myserver") green' ]
},
"stop-opacity": {
domProp: null,
inherited: false,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1", "2.8", "1.000" ],
other_values: [ "0", "0.3", "-7.3" ],
invalid_values: []
},
"stroke": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
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' ],
invalid_values: []
},
"stroke-dasharray": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "none" ],
other_values: [ "5px,3px,2px", " 5px ,3px , 2px ", "1px", "5%", "3em" ],
invalid_values: []
},
"stroke-dashoffset": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "0", "-0px", "0em" ],
other_values: [ "3px", "3%", "1em" ],
invalid_values: []
},
"stroke-linecap": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "butt" ],
other_values: [ "round", "square" ],
invalid_values: []
},
"stroke-linejoin": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "miter" ],
other_values: [ "round", "bevel" ],
invalid_values: []
},
"stroke-miterlimit": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "4" ],
other_values: [ "1", "7", "5000" ],
invalid_values: [ "0.9", "0", "-1", "3px" ]
},
"stroke-opacity": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1", "2.8", "1.000" ],
other_values: [ "0", "0.3", "-7.3" ],
invalid_values: []
},
"stroke-width": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "1px" ],
other_values: [ "0", "0px", "-0em", "17px", "0.2em" ],
invalid_values: [ "-0.1px", "-3px" ]
},
"text-anchor": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "start" ],
other_values: [ "middle", "end" ],
invalid_values: []
},
"text-rendering": {
domProp: null,
inherited: true,
type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ],
other_values: [ "optimizeSpeed", "optimizeLegibility", "geometricPrecision" ],
invalid_values: []
}
}
function logical_box_prop_get_computed(cs, property)
{
if (! /^-moz-/.test(property))
throw "Unexpected property";
property = property.substring(5);
if (cs.getPropertyValue("direction") == "ltr")
property = property.replace("-start", "-left").replace("-end", "-right");
else
property = property.replace("-start", "-right").replace("-end", "-left");
return cs.getPropertyValue(property);
}
// Get the computed value for a property. For shorthands, return the
// computed values of all the subproperties, delimited by " ; ".
function get_computed_value(cs, property)
{
var info = gCSSProperties[property];
if ("subproperties" in info) {
var results = [];
for (var idx in info.subproperties) {
var subprop = info.subproperties[idx];
results.push(get_computed_value(cs, subprop));
}
return results.join(" ; ");
}
if (info.get_computed)
return info.get_computed(cs, property);
return cs.getPropertyValue(property);
}