property_database.js (408303B)
1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* eslint-disable dot-notation */ 3 /* vim: set ts=2 sw=2 sts=2 et: */ 4 /* This Source Code Form is subject to the terms of the Mozilla Public 5 * License, v. 2.0. If a copy of the MPL was not distributed with this 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 7 8 // Utility function. Returns true if the given boolean pref... 9 // (a) exists and (b) is set to true. 10 // Otherwise, returns false. 11 // 12 // This function also reports a test failure if the pref isn't set at all. This 13 // ensures that we remove pref-checks from mochitests (instead of accidentally 14 // disabling the tests that are controlled by that check) when we remove a 15 // mature feature's pref from the rest of the codebase. 16 function IsCSSPropertyPrefEnabled(prefName) { 17 try { 18 if (SpecialPowers.getBoolPref(prefName)) { 19 return true; 20 } 21 } catch (ex) { 22 ok( 23 false, 24 "Failed to look up property-controlling pref '" + 25 prefName + 26 "' (" + 27 ex + 28 ")" 29 ); 30 } 31 32 return false; 33 } 34 35 // True longhand properties. 36 const CSS_TYPE_LONGHAND = 0; 37 38 // True shorthand properties. 39 const CSS_TYPE_TRUE_SHORTHAND = 1; 40 41 // Properties that we handle as shorthands but were longhands either in 42 // the current spec or earlier versions of the spec. 43 const CSS_TYPE_SHORTHAND_AND_LONGHAND = 2; 44 45 // Legacy shorthand properties, that behave mostly like an alias 46 // (CSS_TYPE_SHORTHAND_AND_LONGHAND) but not quite because their syntax may not 47 // match, plus they shouldn't serialize in cssText. 48 const CSS_TYPE_LEGACY_SHORTHAND = 3; 49 50 // Each property has the following fields: 51 // domProp: The name of the relevant member of CSSStyleProperties 52 // inherited: Whether the property is inherited by default (stated as 53 // yes or no in the property header in all CSS specs) 54 // type: see above 55 // alias_for: optional, indicates that the property is an alias for 56 // some other property that is the preferred serialization. (Type 57 // must not be CSS_TYPE_LONGHAND.) 58 // logical: optional, indicates that the property is a logical directional 59 // property. (Type must be CSS_TYPE_LONGHAND.) 60 // axis: optional, indicates that the property is an axis-related logical 61 // directional property. (Type must be CSS_TYPE_LONGHAND and 'logical' 62 // must be true.) 63 // initial_values: Values whose computed value should be the same as the 64 // computed value for the property's initial value. 65 // other_values: Values whose computed value should be different from the 66 // computed value for the property's initial value. 67 // XXX Should have a third field for values whose computed value may or 68 // may not be the same as for the property's initial value. 69 // invalid_values: Things that are not values for the property and 70 // should be rejected, but which are balanced and should not absorb 71 // what follows 72 // quirks_values: Values that should be accepted in quirks mode only, 73 // mapped to the values they are equivalent to. 74 // unbalanced_values: Things that are not values for the property and 75 // should be rejected, and which also contain unbalanced constructs 76 // that should absorb what follows 77 // 78 // Note: By default, an alias is assumed to accept/reject the same values as 79 // the property that it aliases, and to have the same prerequisites. So, if 80 // "alias_for" is set, the "*_values" and "prerequisites" fields can simply 81 // be omitted, and they'll be populated automatically to match the aliased 82 // property's fields. 83 84 // Helper functions used to construct gCSSProperties. 85 86 function initial_font_family_is_sans_serif() { 87 // The initial value of 'font-family' might be 'serif' or 88 // 'sans-serif'. 89 const meta = document.createElement("meta"); 90 meta.setAttribute("style", "font: initial;"); 91 document.documentElement.appendChild(meta); 92 const family = getComputedStyle(meta).fontFamily; 93 meta.remove(); 94 return family == "sans-serif"; 95 } 96 97 var gInitialFontFamilyIsSansSerif = initial_font_family_is_sans_serif(); 98 99 // shared by background-image and border-image-source 100 var validNonUrlImageValues = [ 101 "-moz-element(#a)", 102 "-moz-element( #a )", 103 "-moz-element(#a-1)", 104 "-moz-element(#a\\:1)", 105 /* gradient torture test */ 106 "linear-gradient(red, blue)", 107 "linear-gradient(red, yellow, blue)", 108 "linear-gradient(red 1px, yellow 20%, blue 24em, green)", 109 "linear-gradient(red, yellow, green, blue 50%)", 110 "linear-gradient(red -50%, yellow -25%, green, blue)", 111 "linear-gradient(red -99px, yellow, green, blue 120%)", 112 "linear-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 113 "linear-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 114 "linear-gradient(red, green calc(50% + 20px), blue)", 115 "linear-gradient(180deg, red, blue)", 116 117 "linear-gradient(to top, red, blue)", 118 "linear-gradient(to bottom, red, blue)", 119 "linear-gradient(to left, red, blue)", 120 "linear-gradient(to right, red, blue)", 121 "linear-gradient(to top left, red, blue)", 122 "linear-gradient(to top right, red, blue)", 123 "linear-gradient(to bottom left, red, blue)", 124 "linear-gradient(to bottom right, red, blue)", 125 "linear-gradient(to left top, red, blue)", 126 "linear-gradient(to left bottom, red, blue)", 127 "linear-gradient(to right top, red, blue)", 128 "linear-gradient(to right bottom, red, blue)", 129 130 "linear-gradient(-33deg, red, blue)", 131 "linear-gradient(30grad, red, blue)", 132 "linear-gradient(10deg, red, blue)", 133 "linear-gradient(1turn, red, blue)", 134 "linear-gradient(.414rad, red, blue)", 135 136 "linear-gradient(.414rad, red, 50%, blue)", 137 "linear-gradient(.414rad, red, 0%, blue)", 138 "linear-gradient(.414rad, red, 100%, blue)", 139 140 "linear-gradient(.414rad, red 50%, 50%, blue 50%)", 141 "linear-gradient(.414rad, red 50%, 20%, blue 50%)", 142 "linear-gradient(.414rad, red 50%, 30%, blue 10%)", 143 "linear-gradient(to right bottom, red, 20%, green 50%, 65%, blue)", 144 "linear-gradient(to right bottom, red, 20%, green 10%, blue)", 145 "linear-gradient(to right bottom, red, 50%, green 50%, 50%, blue)", 146 "linear-gradient(to right bottom, red, 0%, green 50%, 100%, blue)", 147 148 "linear-gradient(red 0% 100%)", 149 "linear-gradient(red 0% 50%, blue 50%)", 150 "linear-gradient(red 0% 50%, blue 50% 100%)", 151 "linear-gradient(red 0% 50%, 0%, blue 50%)", 152 "linear-gradient(red 0% 50%, 0%, blue 50% 100%)", 153 154 /* Unitless 0 is valid as an <angle> */ 155 "linear-gradient(0, red, blue)", 156 157 "radial-gradient(red, blue)", 158 "radial-gradient(red, yellow, blue)", 159 "radial-gradient(red 1px, yellow 20%, blue 24em, green)", 160 "radial-gradient(red, yellow, green, blue 50%)", 161 "radial-gradient(red -50%, yellow -25%, green, blue)", 162 "radial-gradient(red -99px, yellow, green, blue 120%)", 163 "radial-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 164 165 "radial-gradient(0 0, red, blue)", 166 "radial-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 167 168 "radial-gradient(at top left, red, blue)", 169 "radial-gradient(at 20% bottom, red, blue)", 170 "radial-gradient(at center 20%, red, blue)", 171 "radial-gradient(at left 35px, red, blue)", 172 "radial-gradient(at 10% 10em, red, blue)", 173 "radial-gradient(at 44px top, red, blue)", 174 "radial-gradient(at 0 0, red, blue)", 175 176 "radial-gradient(farthest-corner, red, blue)", 177 "radial-gradient(circle, red, blue)", 178 "radial-gradient(ellipse closest-corner, red, blue)", 179 "radial-gradient(closest-corner ellipse, red, blue)", 180 "radial-gradient(farthest-side circle, red, blue)", 181 182 "radial-gradient(at 43px, red, blue)", 183 "radial-gradient(at 43px 43px, red, blue)", 184 "radial-gradient(at 50% 50%, red, blue)", 185 "radial-gradient(at 43px 50%, red, blue)", 186 "radial-gradient(at 50% 43px, red, blue)", 187 "radial-gradient(circle 43px, red, blue)", 188 "radial-gradient(43px circle, red, blue)", 189 "radial-gradient(ellipse 43px 43px, red, blue)", 190 "radial-gradient(ellipse 50% 50%, red, blue)", 191 "radial-gradient(ellipse 43px 50%, red, blue)", 192 "radial-gradient(ellipse 50% 43px, red, blue)", 193 "radial-gradient(50% 43px ellipse, red, blue)", 194 195 "radial-gradient(farthest-corner at top left, red, blue)", 196 "radial-gradient(ellipse closest-corner at 45px, red, blue)", 197 "radial-gradient(circle farthest-side at 45px, red, blue)", 198 "radial-gradient(closest-side ellipse at 50%, red, blue)", 199 "radial-gradient(farthest-corner circle at 4em, red, blue)", 200 201 "radial-gradient(30% 40% at top left, red, blue)", 202 "radial-gradient(50px 60px at 15% 20%, red, blue)", 203 "radial-gradient(7em 8em at 45px, red, blue)", 204 205 "radial-gradient(circle at 15% 20%, red, blue)", 206 207 "radial-gradient(red 0% 100%)", 208 "radial-gradient(red 0% 50%, blue 50%)", 209 "radial-gradient(red 0% 50%, blue 50% 100%)", 210 "radial-gradient(red 0% 50%, 0%, blue 50%)", 211 "radial-gradient(red 0% 50%, 0%, blue 50% 100%)", 212 213 "repeating-radial-gradient(red, blue)", 214 "repeating-radial-gradient(red, yellow, blue)", 215 "repeating-radial-gradient(red 1px, yellow 20%, blue 24em, green)", 216 "repeating-radial-gradient(red, yellow, green, blue 50%)", 217 "repeating-radial-gradient(red -50%, yellow -25%, green, blue)", 218 "repeating-radial-gradient(red -99px, yellow, green, blue 120%)", 219 "repeating-radial-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 220 "repeating-radial-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 221 222 "repeating-radial-gradient(at top left, red, blue)", 223 "repeating-radial-gradient(at 0 0, red, blue)", 224 "repeating-radial-gradient(at 20% bottom, red, blue)", 225 "repeating-radial-gradient(at center 20%, red, blue)", 226 "repeating-radial-gradient(at left 35px, red, blue)", 227 "repeating-radial-gradient(at 10% 10em, red, blue)", 228 "repeating-radial-gradient(at 44px top, red, blue)", 229 230 "repeating-radial-gradient(farthest-corner at top left, red, blue)", 231 "repeating-radial-gradient(closest-corner ellipse at 45px, red, blue)", 232 "repeating-radial-gradient(farthest-side circle at 45px, red, blue)", 233 "repeating-radial-gradient(ellipse closest-side at 50%, red, blue)", 234 "repeating-radial-gradient(circle farthest-corner at 4em, red, blue)", 235 236 "repeating-radial-gradient(30% 40% at top left, red, blue)", 237 "repeating-radial-gradient(50px 60px at 15% 20%, red, blue)", 238 "repeating-radial-gradient(7em 8em at 45px, red, blue)", 239 240 // When that happens this should be moved to the `invalid` list. 241 "repeating-radial-gradient(circle closest-side at left 0px bottom 7in, hsl(2,2%,5%), rgb(1,6,0))", 242 243 "radial-gradient(at calc(25%) top, red, blue)", 244 "radial-gradient(at left calc(25%), red, blue)", 245 "radial-gradient(at calc(25px) top, red, blue)", 246 "radial-gradient(at left calc(25px), red, blue)", 247 "radial-gradient(at calc(-25%) top, red, blue)", 248 "radial-gradient(at left calc(-25%), red, blue)", 249 "radial-gradient(at calc(-25px) top, red, blue)", 250 "radial-gradient(at left calc(-25px), red, blue)", 251 "radial-gradient(at calc(100px + -25%) top, red, blue)", 252 "radial-gradient(at left calc(100px + -25%), red, blue)", 253 "radial-gradient(at calc(100px + -25px) top, red, blue)", 254 "radial-gradient(at left calc(100px + -25px), red, blue)", 255 256 "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", 257 "image-set(linear-gradient(red, red), url(foobar.png) 2x)", 258 "image-set(url(foobar.png) 2x)", 259 "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", 260 "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", 261 "image-set(url(foobar.png) type('image/png'))", 262 "image-set(url(foobar.png) 1x type('image/png'))", 263 "image-set(url(foobar.png) type('image/png') 1x)", 264 265 ...(IsCSSPropertyPrefEnabled("layout.css.cross-fade.enabled") 266 ? [ 267 "cross-fade(red, blue)", 268 "cross-fade(red)", 269 "cross-fade(red 50%)", 270 // see: <https://github.com/w3c/csswg-drafts/issues/5333>. This 271 // may become invalid depending on how discussion on that issue 272 // goes. 273 "cross-fade(red -50%, blue 150%)", 274 "cross-fade(red -50%, url(www.example.com))", 275 276 "cross-fade(url(http://placekitten.com/200/300), 55% linear-gradient(red, blue))", 277 "cross-fade(cross-fade(red, white), cross-fade(blue))", 278 "cross-fade(gold 77%, 60% blue)", 279 280 "cross-fade(url(http://placekitten.com/200/300), url(http://placekitten.com/200/300))", 281 "cross-fade(#F0F8FF, rgb(0, 0, 0), rgba(0, 255, 0, 1) 25%)", 282 ] 283 : []), 284 285 // Conic gradient 286 "conic-gradient(red, blue)", 287 "conic-gradient(red,blue,yellow)", 288 "conic-gradient( red , blue, yellow)", 289 "conic-gradient(red 0, blue 50deg)", 290 "conic-gradient(red 10%, blue 50%)", 291 "conic-gradient(red -50deg, blue 50deg)", 292 "conic-gradient(red 50deg, blue 0.3turn, yellow 200grad, orange 60% 5rad)", 293 294 "conic-gradient(red 0 100%)", 295 "conic-gradient(red 0 50%, blue 50%)", 296 "conic-gradient(red 0 50deg, blue 50% 100%)", 297 "conic-gradient(red 0 50%, 0deg, blue 50%)", 298 "conic-gradient(red 0deg 50%, 0%, blue 50% 100%)", 299 300 "conic-gradient(from 0, red, blue)", 301 "conic-gradient(from 40deg, red, blue)", 302 "conic-gradient(from 0.4turn, red, blue)", 303 "conic-gradient(from 200grad, red, blue)", 304 "conic-gradient(from 5rad, red, blue)", 305 306 "conic-gradient(at top, red, blue)", 307 "conic-gradient(at top left, red, blue)", 308 "conic-gradient(at left top, red, blue)", 309 "conic-gradient(at center center, red, blue)", 310 "conic-gradient(at 20% bottom, red, blue)", 311 "conic-gradient(at center 20%, red, blue)", 312 "conic-gradient(at left 35px, red, blue)", 313 "conic-gradient(at 10% 10em, red, blue)", 314 "conic-gradient(at 44px top, red, blue)", 315 "conic-gradient(at 0 0, red, blue)", 316 "conic-gradient(at 10px, red, blue)", 317 318 "conic-gradient(at calc(25%) top, red, blue)", 319 "conic-gradient(at left calc(25%), red, blue)", 320 "conic-gradient(at calc(25px) top, red, blue)", 321 "conic-gradient(at left calc(25px), red, blue)", 322 "conic-gradient(at calc(-25%) top, red, blue)", 323 "conic-gradient(at left calc(-25%), red, blue)", 324 "conic-gradient(at calc(-25px) top, red, blue)", 325 "conic-gradient(at left calc(-25px), red, blue)", 326 "conic-gradient(at calc(100px + -25%) top, red, blue)", 327 "conic-gradient(at left calc(100px + -25%), red, blue)", 328 "conic-gradient(at calc(100px + -25px) top, red, blue)", 329 "conic-gradient(at left calc(100px + -25px), red, blue)", 330 331 "conic-gradient(from 0 at 0 0, red, blue)", 332 "conic-gradient(from 40deg at 50%, red, blue)", 333 "conic-gradient(from 0.4turn at left 30%, red, blue)", 334 "conic-gradient(from 200grad at calc(100px + -25%) top, red, blue)", 335 "conic-gradient(from 5rad at 10px, red, blue)", 336 337 "repeating-conic-gradient(red, blue)", 338 "repeating-conic-gradient(red, yellow, blue)", 339 "repeating-conic-gradient(red 1deg, yellow 20%, blue 5rad, green)", 340 "repeating-conic-gradient(red, yellow, green, blue 50%)", 341 "repeating-conic-gradient(red -50%, yellow -25%, green, blue)", 342 "repeating-conic-gradient(red -99deg, yellow, green, blue 120%)", 343 "repeating-conic-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 344 "repeating-conic-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 345 346 "repeating-conic-gradient(from 0, red, blue)", 347 "repeating-conic-gradient(from 40deg, red, blue)", 348 "repeating-conic-gradient(from 0.4turn, red, blue)", 349 "repeating-conic-gradient(from 200grad, red, blue)", 350 "repeating-conic-gradient(from 5rad, red, blue)", 351 352 "repeating-conic-gradient(at top left, red, blue)", 353 "repeating-conic-gradient(at 0 0, red, blue)", 354 "repeating-conic-gradient(at 20% bottom, red, blue)", 355 "repeating-conic-gradient(at center 20%, red, blue)", 356 "repeating-conic-gradient(at left 35px, red, blue)", 357 "repeating-conic-gradient(at 10% 10em, red, blue)", 358 "repeating-conic-gradient(at 44px top, red, blue)", 359 360 "repeating-conic-gradient(from 0 at 0 0, red, blue)", 361 "repeating-conic-gradient(from 40deg at 50%, red, blue)", 362 "repeating-conic-gradient(from 0.4turn at left 30%, red, blue)", 363 "repeating-conic-gradient(from 200grad at calc(100px + -25%) top, red, blue)", 364 "repeating-conic-gradient(from 5rad at 10px, red, blue)", 365 366 // 2008 GRADIENTS: -webkit-gradient() 367 // ---------------------------------- 368 // linear w/ no color stops (valid) and a variety of position values: 369 "-webkit-gradient(linear, 1 2, 3 4)", 370 "-webkit-gradient(linear,1 2,3 4)", // (no extra space) 371 "-webkit-gradient(linear , 1 2 , 3 4 )", // (lots of extra space) 372 "-webkit-gradient(linear, 1 10% , 0% 4)", // percentages 373 "-webkit-gradient(linear, +1.0 -2%, +5.3% -0)", // (+/- & decimals are valid) 374 "-webkit-gradient(linear, left top, right bottom)", // keywords 375 "-webkit-gradient(linear, right center, center top)", 376 "-webkit-gradient(linear, center center, center center)", 377 "-webkit-gradient(linear, center 5%, 30 top)", // keywords mixed w/ nums 378 379 // linear w/ just 1 color stop: 380 "-webkit-gradient(linear, 1 2, 3 4, from(lime))", 381 "-webkit-gradient(linear, 1 2, 3 4, to(lime))", 382 // * testing the various allowable stop values (<number> & <percent>): 383 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, lime))", 384 "-webkit-gradient(linear, 1 2, 3 4, color-stop(-0, lime))", 385 "-webkit-gradient(linear, 1 2, 3 4, color-stop(-30, lime))", 386 "-webkit-gradient(linear, 1 2, 3 4, color-stop(+9999, lime))", 387 "-webkit-gradient(linear, 1 2, 3 4, color-stop(-.1, lime))", 388 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0%, lime))", 389 "-webkit-gradient(linear, 1 2, 3 4, color-stop(100%, lime))", 390 "-webkit-gradient(linear, 1 2, 3 4, color-stop(9999%, lime))", 391 "-webkit-gradient(linear, 1 2, 3 4, color-stop(-.5%, lime))", 392 "-webkit-gradient(linear, 1 2, 3 4, color-stop(+0%, lime))", 393 // * testing the various color values: 394 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, transparent))", 395 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, rgb(1,2,3)))", 396 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, #00ff00))", 397 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, #00f))", 398 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, hsla(240, 30%, 50%, 0.8)))", 399 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, rgba(255, 230, 10, 0.5)))", 400 401 // linear w/ multiple color stops: 402 // * using from()/to() -- note that out-of-order is OK: 403 "-webkit-gradient(linear, 1 2, 3 4, from(lime), from(blue))", 404 "-webkit-gradient(linear, 1 2, 3 4, to(lime), to(blue))", 405 "-webkit-gradient(linear, 1 2, 3 4, from(lime), to(blue))", 406 "-webkit-gradient(linear, 1 2, 3 4, to(lime), from(blue))", 407 "-webkit-gradient(linear, 1 2, 3 4, from(lime), to(blue), from(purple))", 408 // * using color-stop(): 409 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, lime), color-stop(30%, blue))", 410 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0, lime), color-stop(30%, blue), color-stop(100%, purple))", 411 // * using color-stop() intermixed with from()/to() functions: 412 "-webkit-gradient(linear, 1 2, 3 4, from(lime), color-stop(30%, blue))", 413 "-webkit-gradient(linear, 1 2, 3 4, color-stop(30%, blue), to(lime))", 414 // * overshooting endpoints (0 & 1.0) 415 "-webkit-gradient(linear, 1 2, 3 4, color-stop(-30%, lime), color-stop(.4, blue), color-stop(1.5, purple))", 416 // * repeating a stop position (valid) 417 "-webkit-gradient(linear, 1 2, 3 4, color-stop(30%, lime), color-stop(30%, blue))", 418 // * stops out of order (valid) 419 "-webkit-gradient(linear, 1 2, 3 4, color-stop(70%, lime), color-stop(20%, blue), color-stop(40%, purple))", 420 421 // radial w/ no color stops (valid) and a several different radius values: 422 "-webkit-gradient(radial, 1 2, 8, 3 4, 9)", 423 "-webkit-gradient(radial, 0 0, 10, 0 0, 5)", 424 425 // radial w/ color stops 426 // (mostly leaning on more-robust 'linear' tests above; just testing a few 427 // examples w/ radial as a sanity-check): 428 "-webkit-gradient(radial, 1 2, 8, 3 4, 9, from(lime))", 429 "-webkit-gradient(radial, 1 2, 8, 3 4, 9, to(blue))", 430 "-webkit-gradient(radial, 1 2, 8, 3 4, 9, color-stop(0.5, #00f), color-stop(0.8, rgba(100, 200, 0, 0.5)))", 431 432 // 2011 GRADIENTS: -webkit-linear-gradient(), -webkit-radial -gradient() 433 // --------------------------------------------------------------------- 434 // Basic linear-gradient syntax (valid when prefixed or unprefixed): 435 "-webkit-linear-gradient(red, green, blue)", 436 437 // Angled linear-gradients (valid when prefixed or unprefixed): 438 "-webkit-linear-gradient(135deg, red, blue)", 439 "-webkit-linear-gradient( 135deg , red , blue )", 440 "-webkit-linear-gradient(280deg, red 60%, blue)", 441 442 // Linear-gradient with unitless-0 <angle> (normally invalid for <angle> 443 // but accepted here for better webkit emulation): 444 "-webkit-linear-gradient(0, red, blue)", 445 446 // Linear-gradient with calc expression (bug 1363349) 447 "-webkit-gradient(linear, calc(5 + 5) top, calc(10 + 10) top, from(blue), to(lime))", 448 "-webkit-gradient(linear, calc(5 - 5) top, calc(10 + 10) top, from(blue), to(lime))", 449 "-webkit-gradient(linear, calc(5 * 5) top, calc(10 + 10) top, from(blue), to(lime))", 450 "-webkit-gradient(linear, calc(5 / 5) top, calc(10 + 10) top, from(blue), to(lime))", 451 "-webkit-gradient(linear, left calc(25% - 10%), right calc(75% + 10%), from(blue), to(lime))", 452 "-webkit-gradient(linear, calc(1) 2, 3 4)", 453 454 // Radial-gradient with calc expression (bug 1363349) 455 "-webkit-gradient(radial, 1 2, 0, 3 4, calc(1 + 5), from(blue), to(lime))", 456 "-webkit-gradient(radial, 1 2, calc(1 + 2), 3 4, calc(1 + 5), from(blue), to(lime))", 457 "-webkit-gradient(radial, 1 2, calc(1 - 2), 3 4, calc(1 + 5), from(blue), to(lime))", 458 "-webkit-gradient(radial, 1 2, calc(1 * 2), 3 4, calc(1 + 5), from(blue), to(lime))", 459 "-webkit-gradient(radial, 1 2, calc(1 / 2), 3 4, calc(1 + 5), from(blue), to(lime))", 460 "-webkit-gradient(radial, calc(0 + 1) calc(1 + 1), calc(1 + 2), calc(1 + 2) 4, calc(1 + 5), from(blue), to(lime))", 461 "-webkit-gradient(radial, 1 2, calc(8), 3 4, 9)", 462 463 // Basic radial-gradient syntax (valid when prefixed or unprefixed): 464 "-webkit-radial-gradient(circle, white, black)", 465 "-webkit-radial-gradient(circle, white, black)", 466 "-webkit-radial-gradient(ellipse closest-side, white, black)", 467 "-webkit-radial-gradient(circle farthest-corner, white, black)", 468 469 // Contain/cover keywords (valid only for -moz/-webkit prefixed): 470 "-webkit-radial-gradient(cover, red, blue)", 471 "-webkit-radial-gradient(cover circle, red, blue)", 472 "-webkit-radial-gradient(contain, red, blue)", 473 "-webkit-radial-gradient(contain ellipse, red, blue)", 474 475 // Initial side/corner/point (valid only for -moz/-webkit prefixed): 476 "-webkit-linear-gradient(top, red, blue)", 477 "-webkit-linear-gradient(left, red, blue)", 478 "-webkit-linear-gradient(bottom, red, blue)", 479 "-webkit-linear-gradient(right top, red, blue)", 480 "-webkit-linear-gradient(top right, red, blue)", 481 "-webkit-radial-gradient(right, red, blue)", 482 "-webkit-radial-gradient(left bottom, red, blue)", 483 "-webkit-radial-gradient(bottom left, red, blue)", 484 "-webkit-radial-gradient(center, red, blue)", 485 "-webkit-radial-gradient(center right, red, blue)", 486 "-webkit-radial-gradient(center center, red, blue)", 487 "-webkit-radial-gradient(center top, red, blue)", 488 "-webkit-radial-gradient(left 50%, red, blue)", 489 "-webkit-radial-gradient(20px top, red, blue)", 490 "-webkit-radial-gradient(20em 30%, red, blue)", 491 492 // Point + keyword-sized shape (valid only for -moz/-webkit prefixed): 493 "-webkit-radial-gradient(center, circle closest-corner, red, blue)", 494 "-webkit-radial-gradient(10px 20px, cover circle, red, blue)", 495 "-webkit-radial-gradient(5em 50%, ellipse contain, red, blue)", 496 497 // Repeating examples: 498 "-webkit-repeating-linear-gradient(red 10%, blue 30%)", 499 "-webkit-repeating-linear-gradient(30deg, pink 20px, orange 70px)", 500 "-webkit-repeating-linear-gradient(left, red, blue)", 501 "-webkit-repeating-linear-gradient(left, red 10%, blue 30%)", 502 "-webkit-repeating-radial-gradient(circle, red, blue 10%, red 20%)", 503 "-webkit-repeating-radial-gradient(circle farthest-corner, gray 10px, yellow 20px)", 504 "-webkit-repeating-radial-gradient(top left, circle, red, blue 4%, red 8%)", 505 ]; 506 var invalidNonUrlImageValues = [ 507 "-moz-element(#a:1)", 508 "-moz-element(a#a)", 509 "-moz-element(#a a)", 510 "-moz-element(#a+a)", 511 "-moz-element(#a())", 512 /* no quirks mode colors */ 513 "linear-gradient(red, ff00ff)", 514 /* no quirks mode colors */ 515 "radial-gradient(at 10% bottom, ffffff, black) scroll no-repeat", 516 /* no quirks mode lengths */ 517 "linear-gradient(red -99, yellow, green, blue 120%)", 518 /* Unitless nonzero numbers are valid as an <angle> */ 519 "linear-gradient(30, red, blue)", 520 /* There must be a comma between gradient-line (e.g. <angle>) and colors */ 521 "linear-gradient(30deg red, blue)", 522 "linear-gradient(to top left red, blue)", 523 "linear-gradient(to right red, blue)", 524 /* Invalid color or calc() function */ 525 "linear-gradient(red, rgb(0, rubbish, 0) 50%, red)", 526 "linear-gradient(red, red calc(50% + rubbish), red)", 527 "linear-gradient(to top calc(50% + rubbish), red, blue)", 528 529 "radial-gradient(circle 175px 20px, black, white)", 530 "radial-gradient(175px 20px circle, black, white)", 531 "radial-gradient(ellipse 175px, black, white)", 532 "radial-gradient(175px ellipse, black, white)", 533 "radial-gradient(50%, red, blue)", 534 "radial-gradient(circle 50%, red, blue)", 535 "radial-gradient(50% circle, red, blue)", 536 537 /* Invalid units */ 538 "conic-gradient(red, blue 50px, yellow 30px)", 539 "repeating-conic-gradient(red 1deg, yellow 20%, blue 24em, green)", 540 "conic-gradient(from 0%, black, white)", 541 "conic-gradient(from 60%, black, white)", 542 "conic-gradient(from 40px, black, white)", 543 "conic-gradient(from 50, black, white)", 544 "conic-gradient(at 50deg, black, white)", 545 "conic-gradient(from 40deg at 50deg, black, white)", 546 "conic-gradient(from 40deg at 50deg 60deg, black, white)", 547 /* Invalid keywords (or ordering) */ 548 "conic-gradient(at 40% from 50deg, black, white)", 549 "conic-gradient(to 50deg, black, white)", 550 551 /* Used to be valid only when prefixed */ 552 "linear-gradient(top left, red, blue)", 553 "linear-gradient(0 0, red, blue)", 554 "linear-gradient(20% bottom, red, blue)", 555 "linear-gradient(center 20%, red, blue)", 556 "linear-gradient(left 35px, red, blue)", 557 "linear-gradient(10% 10em, red, blue)", 558 "linear-gradient(44px top, red, blue)", 559 560 "linear-gradient(top left 45deg, red, blue)", 561 "linear-gradient(20% bottom -300deg, red, blue)", 562 "linear-gradient(center 20% 1.95929rad, red, blue)", 563 "linear-gradient(left 35px 30grad, red, blue)", 564 "linear-gradient(left 35px 0.1turn, red, blue)", 565 "linear-gradient(10% 10em 99999deg, red, blue)", 566 "linear-gradient(44px top -33deg, red, blue)", 567 568 "linear-gradient(30grad left 35px, red, blue)", 569 "linear-gradient(10deg 20px, red, blue)", 570 "linear-gradient(1turn 20px, red, blue)", 571 "linear-gradient(.414rad bottom, red, blue)", 572 573 "linear-gradient(to top, 0%, blue)", 574 "linear-gradient(to top, red, 100%)", 575 "linear-gradient(to top, red, 45%, 56%, blue)", 576 "linear-gradient(to top, red,, blue)", 577 "linear-gradient(to top, red, green 35%, 15%, 54%, blue)", 578 579 "linear-gradient(unset, 10px 10px, from(blue))", 580 "linear-gradient(unset, 10px 10px, blue 0)", 581 "repeating-linear-gradient(unset, 10px 10px, blue 0)", 582 583 "radial-gradient(top left 45deg, red, blue)", 584 "radial-gradient(20% bottom -300deg, red, blue)", 585 "radial-gradient(center 20% 1.95929rad, red, blue)", 586 "radial-gradient(left 35px 30grad, red, blue)", 587 "radial-gradient(10% 10em 99999deg, red, blue)", 588 "radial-gradient(44px top -33deg, red, blue)", 589 590 "radial-gradient(-33deg, red, blue)", 591 "radial-gradient(30grad left 35px, red, blue)", 592 "radial-gradient(10deg 20px, red, blue)", 593 "radial-gradient(.414rad bottom, red, blue)", 594 595 "radial-gradient(cover, red, blue)", 596 "radial-gradient(ellipse contain, red, blue)", 597 "radial-gradient(cover circle, red, blue)", 598 599 "radial-gradient(top left, cover, red, blue)", 600 "radial-gradient(15% 20%, circle, red, blue)", 601 "radial-gradient(45px, ellipse closest-corner, red, blue)", 602 "radial-gradient(45px, farthest-side circle, red, blue)", 603 604 "radial-gradient(99deg, cover, red, blue)", 605 "radial-gradient(-1.2345rad, circle, red, blue)", 606 "radial-gradient(399grad, ellipse closest-corner, red, blue)", 607 "radial-gradient(399grad, farthest-side circle, red, blue)", 608 609 "radial-gradient(top left 99deg, cover, red, blue)", 610 "radial-gradient(15% 20% -1.2345rad, circle, red, blue)", 611 "radial-gradient(45px 399grad, ellipse closest-corner, red, blue)", 612 "radial-gradient(45px 399grad, farthest-side circle, red, blue)", 613 "radial-gradient(circle red, blue)", 614 615 /* don't allow more than two positions with multi-position syntax */ 616 "linear-gradient(red 0% 50% 100%)", 617 "linear-gradient(red 0% 50% 75%, blue 75%)", 618 "linear-gradient(to bottom, red 0% 50% 100%)", 619 "linear-gradient(to bottom, red 0% 50% 75%, blue 75%)", 620 "radial-gradient(red 0% 50% 100%)", 621 "radial-gradient(red 0% 50% 75%, blue 75%)", 622 "radial-gradient(center, red 0% 50% 100%)", 623 "radial-gradient(center, red 0% 50% 75%, blue 75%)", 624 "conic-gradient(red 0% 50% 100%)", 625 "conic-gradient(red 0% 50% 75%, blue 75%)", 626 "conic-gradient(center, red 0% 50% 100%)", 627 "conic-gradient(center, red 0% 50% 75%, blue 75%)", 628 629 // missing color in color stop 630 "conic-gradient(red 50deg, blue 0.3turn, yellow 200grad, orange 60%, 5rad)", 631 632 "-moz-linear-gradient(unset, 10px 10px, from(blue))", 633 "-moz-linear-gradient(unset, 10px 10px, blue 0)", 634 "-moz-repeating-linear-gradient(unset, 10px 10px, blue 0)", 635 636 // 2008 GRADIENTS: -webkit-gradient() 637 // https://www.webkit.org/blog/175/introducing-css-gradients/ 638 // ---------------------------------- 639 // Mostly-empty expressions (missing most required pieces): 640 "-webkit-gradient()", 641 "-webkit-gradient( )", 642 "-webkit-gradient(,)", 643 "-webkit-gradient(bogus)", 644 "-webkit-gradient(linear)", 645 "-webkit-gradient(linear,)", 646 "-webkit-gradient(,linear)", 647 "-webkit-gradient(radial)", 648 "-webkit-gradient(radial,)", 649 650 // linear w/ partial/missing <point> expression(s) 651 "-webkit-gradient(linear, 1)", // Incomplete <point> 652 "-webkit-gradient(linear, left)", // Incomplete <point> 653 "-webkit-gradient(linear, center)", // Incomplete <point> 654 "-webkit-gradient(linear, top)", // Incomplete <point> 655 "-webkit-gradient(linear, 5%)", // Incomplete <point> 656 "-webkit-gradient(linear, 1 2)", // Missing 2nd <point> 657 "-webkit-gradient(linear, 1, 3)", // 2 incomplete <point>s 658 "-webkit-gradient(linear, 1, 3 4)", // Incomplete 1st <point> 659 "-webkit-gradient(linear, 1 2, 3)", // Incomplete 2nd <point> 660 "-webkit-gradient(linear, 1 2, 3, 4)", // Comma inside <point> 661 "-webkit-gradient(linear, 1, 2, 3 4)", // Comma inside <point> 662 "-webkit-gradient(linear, 1, 2, 3, 4)", // Comma inside <point> 663 664 // linear w/ invalid units in <point> expression 665 "-webkit-gradient(linear, 1px 2, 3 4)", 666 "-webkit-gradient(linear, 1 2, 3 4px)", 667 "-webkit-gradient(linear, 1px 2px, 3px 4px)", 668 "-webkit-gradient(linear, 1 2em, 3 4)", 669 670 // linear w/ <radius> (only valid for radial) 671 "-webkit-gradient(linear, 1 2, 8, 3 4, 9)", 672 673 // linear w/ out-of-order position keywords in <point> expression 674 // (horizontal keyword is supposed to come first, for "x" coord) 675 "-webkit-gradient(linear, 0 0, top right)", 676 "-webkit-gradient(linear, bottom center, 0 0)", 677 "-webkit-gradient(linear, top bottom, 0 0)", 678 "-webkit-gradient(linear, bottom top, 0 0)", 679 "-webkit-gradient(linear, bottom top, 0 0)", 680 681 // linear w/ trailing comma (which implies missing color-stops): 682 "-webkit-gradient(linear, 1 2, 3 4,)", 683 684 // linear w/ invalid color values: 685 "-webkit-gradient(linear, 1 2, 3 4, from(invalidcolorname))", 686 "-webkit-gradient(linear, 1 2, 3 4, from(inherit))", 687 "-webkit-gradient(linear, 1 2, 3 4, from(initial))", 688 "-webkit-gradient(linear, 1 2, 3 4, from(currentColor))", 689 "-webkit-gradient(linear, 1 2, 3 4, from(00ff00))", 690 "-webkit-gradient(linear, 1 2, 3 4, from(##00ff00))", 691 "-webkit-gradient(linear, 1 2, 3 4, from(#00fff))", // wrong num hex digits 692 "-webkit-gradient(linear, 1 2, 3 4, from(xyz(0,0,0)))", // bogus color func 693 // Mixing <number> and <percentage> is invalid. 694 "-webkit-gradient(linear, 1 2, 3 4, from(rgb(100, 100%, 30)))", 695 696 // linear w/ color stops that have comma issues 697 "-webkit-gradient(linear, 1 2, 3 4 from(lime))", 698 "-webkit-gradient(linear, 1 2, 3 4, from(lime,))", 699 "-webkit-gradient(linear, 1 2, 3 4, from(lime),)", 700 "-webkit-gradient(linear, 1 2, 3 4, from(lime) to(blue))", 701 "-webkit-gradient(linear, 1 2, 3 4, from(lime),, to(blue))", 702 "-webkit-gradient(linear, 1 2, 3 4, from(rbg(0, 0, 0,)))", 703 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0 lime))", 704 "-webkit-gradient(linear, 1 2, 3 4, color-stop(0,, lime))", 705 706 // radial w/ broken <point>/radius expression(s) 707 "-webkit-gradient(radial, 1)", // Incomplete <point> 708 "-webkit-gradient(radial, 1 2)", // Missing radius + 2nd <point> 709 "-webkit-gradient(radial, 1 2, 8)", // Missing 2nd <point> 710 "-webkit-gradient(radial, 1 2, 8, 3)", // Incomplete 2nd <point> 711 "-webkit-gradient(radial, 1 2, 8, 3 4)", // Missing 2nd radius 712 "-webkit-gradient(radial, 1 2, 3 4, 9)", // Missing 1st radius 713 "-webkit-gradient(radial, 1 2, -1.5, center center, +99999.9999)", // Negative radius 714 715 // radial w/ incorrect units on radius (invalid; expecting <number>) 716 "-webkit-gradient(radial, 1 2, 8%, 3 4, 9)", 717 "-webkit-gradient(radial, 1 2, 8px, 3 4, 9)", 718 "-webkit-gradient(radial, 1 2, 8em, 3 4, 9)", 719 "-webkit-gradient(radial, 1 2, top, 3 4, 9)", 720 721 // radial w/ trailing comma (which implies missing color-stops): 722 "-webkit-gradient(linear, 1 2, 8, 3 4, 9,)", 723 724 // radial w/ invalid color value (mostly leaning on 'linear' test above): 725 "-webkit-gradient(radial, 1 2, 8, 3 4, 9, from(invalidcolorname))", 726 727 // 2011 GRADIENTS: -webkit-linear-gradient(), -webkit-radial -gradient() 728 // --------------------------------------------------------------------- 729 // Syntax that's invalid for all types of gradients: 730 // * empty gradient expressions: 731 "-webkit-linear-gradient()", 732 "-webkit-radial-gradient()", 733 "-webkit-repeating-linear-gradient()", 734 "-webkit-repeating-radial-gradient()", 735 736 // * missing comma between <legacy-gradient-line> and color list: 737 "-webkit-linear-gradient(0 red, blue)", 738 "-webkit-linear-gradient(30deg red, blue)", 739 "-webkit-linear-gradient(top right red, blue)", 740 "-webkit-linear-gradient(bottom red, blue)", 741 742 // Linear-gradient with calc expression containing mixed units 743 // (bug 1363349) 744 "-webkit-gradient(linear, calc(5 + 5%) top, calc(10 + 10) top, from(blue), to(lime))", 745 "-webkit-gradient(linear, left calc(25 - 10%), right calc(75% + 10%), from(blue), to(lime))", 746 747 // Radial-gradient with calc expression containing mixed units, or a 748 // percentage in the radius (bug 1363349) 749 "-webkit-gradient(radial, 1 2, 0, 3 4, calc(1% + 5%), from(blue), to(lime))", 750 "-webkit-gradient(radial, 1 2, calc(1 + 2), 3 4, calc(1 + 5%), from(blue), to(lime))", 751 "-webkit-gradient(radial, calc(0 + 1) calc(1 + 1), calc(1% + 2%), calc(1 + 2) 4, calc(1 + 5), from(blue), to(lime))", 752 753 // Linear syntax that's invalid for both -webkit & unprefixed, but valid 754 // for -moz: 755 // * initial <legacy-gradient-line> which includes a length: 756 "-webkit-linear-gradient(10px, red, blue)", 757 "-webkit-linear-gradient(10px top, red, blue)", 758 // * initial <legacy-gradient-line> which includes a side *and* an angle: 759 "-webkit-linear-gradient(bottom 30deg, red, blue)", 760 "-webkit-linear-gradient(30deg bottom, red, blue)", 761 "-webkit-linear-gradient(10px top 50deg, red, blue)", 762 "-webkit-linear-gradient(50deg 10px top, red, blue)", 763 // * initial <legacy-gradient-line> which includes explicit "center": 764 "-webkit-linear-gradient(center, red, blue)", 765 "-webkit-linear-gradient(left center, red, blue)", 766 "-webkit-linear-gradient(top center, red, blue)", 767 "-webkit-linear-gradient(center top, red, blue)", 768 769 // Linear syntax that's invalid for -webkit, but valid for -moz & unprefixed: 770 // * "to" syntax: 771 "-webkit-linear-gradient(to top, red, blue)", 772 773 // * <shape> followed by angle: 774 "-webkit-radial-gradient(circle 10deg, red, blue)", 775 776 // Radial syntax that's invalid for both -webkit & -moz, but valid for 777 // unprefixed: 778 // * "<shape> at <position>" syntax: 779 "-webkit-radial-gradient(circle at left bottom, red, blue)", 780 // * explicitly-sized shape: 781 "-webkit-radial-gradient(circle 10px, red, blue)", 782 "-webkit-radial-gradient(ellipse 40px 20px, red, blue)", 783 784 // Radial syntax that's invalid for both -webkit & unprefixed, but valid 785 // for -moz: 786 // * initial angle 787 "-webkit-radial-gradient(30deg, red, blue)", 788 // * initial angle/position combo 789 "-webkit-radial-gradient(top 30deg, red, blue)", 790 "-webkit-radial-gradient(left top 30deg, red, blue)", 791 "-webkit-radial-gradient(10px 20px 30deg, red, blue)", 792 793 // Conic gradients should not support prefixed syntax 794 "-webkit-gradient(conic, 1 2, 3 4, color-stop(0, lime))", 795 "-webkit-conic-gradient(red, blue)", 796 "-moz-conic-gradient(red, blue)", 797 "-webkit-repeating-conic-gradient(red, blue)", 798 "-moz-repeating-conic-gradient(red, blue)", 799 800 "image-set(url(foobar.png) 1x, none)", 801 "image-set(garbage)", 802 "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", // Nested image-sets should fail to parse 803 "image-set(image-set(garbage))", 804 "image-set()", 805 "image-set(type('image/png') url(foobar.png) 1x)", 806 "image-set(url(foobar.png) type('image/png') 1x type('image/png'))", 807 "image-set(url(foobar.png) type('image/png') type('image/png'))", 808 "image-set(url(foobar.png) type(image/png))", 809 "image-set(url(foobar.png) epyt('image/png'))", 810 811 ...(IsCSSPropertyPrefEnabled("layout.css.cross-fade.enabled") 812 ? [ 813 "cross-fade(red blue)", 814 "cross-fade()", 815 "cross-fade(50%, blue 50%)", 816 // Old syntax 817 "cross-fade(red, white, 50%)", 818 // see: <https://github.com/w3c/csswg-drafts/issues/5333>. This 819 // may become invalid depending on how discussion on that issue 820 // goes. 821 "cross-fade(red, 150%, blue)", 822 "cross-fade(red auto, blue 10%)", 823 824 // nested invalidity should propagate. 825 "cross-fade(url(http://placekitten.com/200/300), 55% linear-gradient(center, red, blue))", 826 "cross-fade(cross-fade(red, white, 50%), cross-fade(blue))", 827 828 "cross-fade(url(http://placekitten.com/200/300) url(http://placekitten.com/200/300))", 829 "cross-fade(#F0F8FF, rgb(0, 0, 0), rgba(0, 255, 0, 1), 25%)", 830 ] 831 : []), 832 ]; 833 var unbalancedGradientAndElementValues = ["-moz-element(#a()"]; 834 835 var basicShapeSVGBoxValues = [ 836 "fill-box", 837 "stroke-box", 838 "view-box", 839 840 "polygon(evenodd, 20pt 20cm) fill-box", 841 "polygon(evenodd, 20ex 20pc) stroke-box", 842 "polygon(evenodd, 20rem 20in) view-box", 843 ]; 844 845 var basicShapeOtherValues = [ 846 "polygon(20px 20px)", 847 "polygon(20px 20%)", 848 "polygon(20% 20%)", 849 "polygon(20rem 20em)", 850 "polygon(20cm 20mm)", 851 "polygon(20px 20px, 30px 30px)", 852 "polygon(20px 20px, 30% 30%, 30px 30px)", 853 854 "content-box", 855 "padding-box", 856 "border-box", 857 858 "polygon(0 0) content-box", 859 "border-box polygon(0 0)", 860 "padding-box polygon( 0 20px , 30px 20% ) ", 861 862 "circle()", 863 "circle(at center)", 864 "circle(at top 0px left 20px)", 865 "circle(at bottom right)", 866 "circle(20%)", 867 "circle(300px)", 868 "circle(calc(20px + 30px))", 869 "circle(farthest-side)", 870 "circle(closest-side)", 871 "circle(closest-side at center)", 872 "circle(farthest-side at top)", 873 "circle(20px at top right)", 874 "circle(40% at 50% 100%)", 875 "circle(calc(20% + 20%) at right bottom)", 876 "circle() padding-box", 877 878 "ellipse()", 879 "ellipse(at center)", 880 "ellipse(at top 0px left 20px)", 881 "ellipse(at bottom right)", 882 "ellipse(20% 20%)", 883 "ellipse(300px 50%)", 884 "ellipse(calc(20px + 30px) 10%)", 885 "ellipse(farthest-side closest-side)", 886 "ellipse(closest-side farthest-side)", 887 "ellipse(farthest-side farthest-side)", 888 "ellipse(closest-side closest-side)", 889 "ellipse(closest-side closest-side at center)", 890 "ellipse(20% farthest-side at top)", 891 "ellipse(20px 50% at top right)", 892 "ellipse(closest-side 40% at 50% 100%)", 893 "ellipse(calc(20% + 20%) calc(20px + 20cm) at right bottom)", 894 895 "inset(1px)", 896 "inset(20% -20px)", 897 "inset(20em 4rem calc(20% + 20px))", 898 "inset(20vh 20vw 20pt 3%)", 899 "inset(5px round 3px)", 900 "inset(1px 2px round 3px / 3px)", 901 "inset(1px 2px 3px round 3px 2em / 20%)", 902 "inset(1px 2px 3px 4px round 3px 2vw 20% / 20px 3em 2vh 20%)", 903 ]; 904 905 var basicShapeOtherValuesWithFillRule = [ 906 "polygon(nonzero, 20px 20px, 30% 30%, 30px 30px)", 907 "polygon(evenodd, 20px 20px, 30% 30%, 30px 30px)", 908 "polygon(evenodd, 20% 20em) content-box", 909 "polygon(evenodd, 20vh 20em) padding-box", 910 "polygon(evenodd, 20vh calc(20% + 20em)) border-box", 911 "polygon(evenodd, 20vh 20vw) margin-box", 912 ]; 913 914 var basicShapeInvalidValues = [ 915 "url(#test) url(#tes2)", 916 "polygon (0 0)", 917 "polygon(20px, 40px)", 918 "border-box content-box", 919 "polygon(0 0) polygon(0 0)", 920 "polygon(nonzero 0 0)", 921 "polygon(evenodd 20px 20px)", 922 "polygon(20px 20px, evenodd)", 923 "polygon(20px 20px, nonzero)", 924 "polygon(0 0) conten-box content-box", 925 "content-box polygon(0 0) conten-box", 926 "padding-box polygon(0 0) conten-box", 927 "polygon(0 0) polygon(0 0) content-box", 928 "polygon(0 0) content-box polygon(0 0)", 929 "polygon(0 0), content-box", 930 "polygon(0 0), polygon(0 0)", 931 "content-box polygon(0 0) polygon(0 0)", 932 "content-box polygon(0 0) none", 933 "none content-box polygon(0 0)", 934 "inherit content-box polygon(0 0)", 935 "initial polygon(0 0)", 936 "polygon(0 0) farthest-side", 937 "farthest-corner polygon(0 0)", 938 "polygon(0 0) farthest-corner", 939 "polygon(0 0) conten-box", 940 "polygon(0 0) polygon(0 0) farthest-corner", 941 "polygon(0 0) polygon(0 0) polygon(0 0)", 942 "border-box polygon(0, 0)", 943 "border-box padding-box", 944 "margin-box farthest-side", 945 "nonsense() border-box", 946 "border-box nonsense()", 947 948 "circle(at)", 949 "circle(at 20% 20% 30%)", 950 "circle(20px 2px at center)", 951 "circle(2at center)", 952 "circle(closest-corner)", 953 "circle(at center top closest-side)", 954 "circle(-20px)", 955 "circle(farthest-side closest-side)", 956 "circle(20% 20%)", 957 "circle(at farthest-side)", 958 "circle(calc(20px + rubbish))", 959 "circle(at top left 20px)", 960 961 "ellipse(at)", 962 "ellipse(at 20% 20% 30%)", 963 "ellipse(20px at center)", 964 "ellipse(-20px 20px)", 965 "ellipse(closest-corner farthest-corner)", 966 "ellipse(20px -20px)", 967 "ellipse(-20px -20px)", 968 "ellipse(farthest-side)", 969 "ellipse(20%)", 970 "ellipse(at farthest-side farthest-side)", 971 "ellipse(at top left calc(20px + rubbish))", 972 "ellipse(at top left 20px)", 973 974 "polygon(at)", 975 "polygon(at 20% 20% 30%)", 976 "polygon(20px at center)", 977 "polygon(2px 2at center)", 978 "polygon(closest-corner farthest-corner)", 979 "polygon(at center top closest-side closest-side)", 980 "polygon(40% at 50% 100%)", 981 "polygon(40% farthest-side 20px at 50% 100%)", 982 983 "inset()", 984 "inset(round)", 985 "inset(round 3px)", 986 "inset(1px round 1px 2px 3px 4px 5px)", 987 "inset(1px 2px 3px 4px 5px)", 988 "inset(1px, round 3px)", 989 "inset(1px, 2px)", 990 "inset(1px 2px, 3px)", 991 "inset(1px at 3px)", 992 "inset(1px round 1px // 2px)", 993 "inset(1px round)", 994 "inset(1px calc(2px + rubbish))", 995 "inset(1px round 2px calc(3px + rubbish))", 996 ]; 997 998 var basicShapeUnbalancedValues = [ 999 "polygon(30% 30%", 1000 "polygon(nonzero, 20% 20px", 1001 "polygon(evenodd, 20px 20px", 1002 1003 "circle(", 1004 "circle(40% at 50% 100%", 1005 "ellipse(", 1006 "ellipse(40% at 50% 100%", 1007 1008 "inset(1px", 1009 "inset(1px 2px", 1010 "inset(1px 2px 3px", 1011 "inset(1px 2px 3px 4px", 1012 "inset(1px 2px 3px 4px round 5px", 1013 "inset(1px 2px 3px 4px round 5px / 6px", 1014 ]; 1015 1016 var basicShapeXywhRectValues = [ 1017 "xywh(1px 2% 3px 4em)", 1018 "xywh(1px 2% 3px 4em round 0px)", 1019 "xywh(1px 2% 3px 4em round 0px 1%)", 1020 "xywh(1px 2% 3px 4em round 0px 1% 2px)", 1021 "xywh(1px 2% 3px 4em round 0px 1% 2px 3em)", 1022 "rect(auto auto auto auto)", 1023 "rect(1px 2% auto 4em)", 1024 "rect(1px 2% auto 4em round 0px)", 1025 "rect(1px 2% auto 4em round 0px 1%)", 1026 "rect(1px 2% auto 4em round 0px 1% 2px)", 1027 "rect(1px 2% auto 4em round 0px 1% 2px 3em)", 1028 ]; 1029 1030 var basicShapeShapeValues = []; 1031 var basicShapeShapeValuesWithFillRule = []; 1032 if (IsCSSPropertyPrefEnabled("layout.css.basic-shape-shape.enabled")) { 1033 basicShapeShapeValuesWithFillRule.push( 1034 "shape(evenodd from 0px 0px, line to 10px 10px)", 1035 "shape(nonzero from 0px 0px, line to 10px 10px)" 1036 ); 1037 1038 basicShapeShapeValues.push( 1039 "shape(from 0px 0%, line to 10px 10%)", 1040 "shape(from 10px 10px, move by 10px 5px, line by 20px 40%, close)", 1041 "shape(from 10px 10px, hline by 10px, vline to 5rem)", 1042 "shape(from 10px 10px, vline by 5%, hline to 1vw)", 1043 "shape(from 10px 10px, curve to 50px 20px with 10rem 1%)", 1044 "shape(from 10px 10px, smooth to 50px 20px with 10rem 1%)", 1045 "shape(from 10% 1rem, arc to 50px 1pt of 20% cw large rotate 25deg)" 1046 ); 1047 1048 // It's fine to include this for properties which don't support shape(), 1049 // e.g. shape-outside, because they must reject these values. 1050 basicShapeInvalidValues.push( 1051 "shape()", 1052 "shape(evenodd, from 0px 0px)", 1053 "shape(from 0px 0px line to 10px 10px)", 1054 "shape(from 0px 0px)", 1055 "shape(close)", 1056 "shape(nonzero, close)" 1057 ); 1058 } 1059 1060 if (/* mozGradientsEnabled */ true) { 1061 // Maybe one day :( 1062 // Extend gradient lists with valid/invalid moz-prefixed expressions: 1063 validNonUrlImageValues.push( 1064 "-moz-linear-gradient(red, blue)", 1065 "-moz-linear-gradient(red, yellow, blue)", 1066 "-moz-linear-gradient(red 1px, yellow 20%, blue 24em, green)", 1067 "-moz-linear-gradient(red, yellow, green, blue 50%)", 1068 "-moz-linear-gradient(red -50%, yellow -25%, green, blue)", 1069 "-moz-linear-gradient(red -99px, yellow, green, blue 120%)", 1070 "-moz-linear-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 1071 "-moz-linear-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 1072 1073 "-moz-linear-gradient(top, red, blue)", 1074 1075 "-moz-linear-gradient(to top, red, blue)", 1076 "-moz-linear-gradient(to bottom, red, blue)", 1077 "-moz-linear-gradient(to left, red, blue)", 1078 "-moz-linear-gradient(to right, red, blue)", 1079 "-moz-linear-gradient(to top left, red, blue)", 1080 "-moz-linear-gradient(to top right, red, blue)", 1081 "-moz-linear-gradient(to bottom left, red, blue)", 1082 "-moz-linear-gradient(to bottom right, red, blue)", 1083 "-moz-linear-gradient(to left top, red, blue)", 1084 "-moz-linear-gradient(to left bottom, red, blue)", 1085 "-moz-linear-gradient(to right top, red, blue)", 1086 "-moz-linear-gradient(to right bottom, red, blue)", 1087 1088 "-moz-linear-gradient(top left, red, blue)", 1089 "-moz-linear-gradient(left, red, blue)", 1090 "-moz-linear-gradient(bottom, red, blue)", 1091 1092 "-moz-linear-gradient(0, red, blue)", 1093 1094 "-moz-linear-gradient(-33deg, red, blue)", 1095 1096 "-moz-linear-gradient(blue calc(0px) ,green calc(25%) ,red calc(40px) ,blue calc(60px) , yellow calc(100px))", 1097 "-moz-linear-gradient(-33deg, blue calc(-25%) ,red 40px)", 1098 "-moz-linear-gradient(10deg, blue calc(100px + -25%),red calc(40px))", 1099 "-moz-linear-gradient(10deg, blue calc(-25px),red calc(100%))", 1100 "-moz-linear-gradient(.414rad, blue calc(100px + -25px) ,green calc(100px + -25px) ,red calc(100px + -25%) ,blue calc(-25px) , yellow calc(-25px))", 1101 "-moz-linear-gradient(1turn, blue calc(-25%) ,green calc(25px) ,red calc(25%),blue calc(0px),white 50px, yellow calc(-25px))", 1102 1103 "-moz-radial-gradient(red, blue)", 1104 "-moz-radial-gradient(red, yellow, blue)", 1105 "-moz-radial-gradient(red 1px, yellow 20%, blue 24em, green)", 1106 "-moz-radial-gradient(red, yellow, green, blue 50%)", 1107 "-moz-radial-gradient(red -50%, yellow -25%, green, blue)", 1108 "-moz-radial-gradient(red -99px, yellow, green, blue 120%)", 1109 "-moz-radial-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 1110 1111 "-moz-radial-gradient(top left, red, blue)", 1112 "-moz-radial-gradient(20% bottom, red, blue)", 1113 "-moz-radial-gradient(center 20%, red, blue)", 1114 "-moz-radial-gradient(left 35px, red, blue)", 1115 "-moz-radial-gradient(10% 10em, red, blue)", 1116 "-moz-radial-gradient(44px top, red, blue)", 1117 1118 "-moz-radial-gradient(0 0, red, blue)", 1119 "-moz-radial-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 1120 1121 "-moz-radial-gradient(cover, red, blue)", 1122 "-moz-radial-gradient(cover circle, red, blue)", 1123 "-moz-radial-gradient(contain, red, blue)", 1124 "-moz-radial-gradient(contain ellipse, red, blue)", 1125 "-moz-radial-gradient(circle, red, blue)", 1126 "-moz-radial-gradient(ellipse closest-corner, red, blue)", 1127 "-moz-radial-gradient(farthest-side circle, red, blue)", 1128 1129 "-moz-radial-gradient(top left, cover, red, blue)", 1130 "-moz-radial-gradient(15% 20%, circle, red, blue)", 1131 "-moz-radial-gradient(45px, ellipse closest-corner, red, blue)", 1132 "-moz-radial-gradient(45px, farthest-side circle, red, blue)", 1133 1134 "-moz-repeating-linear-gradient(red, blue)", 1135 "-moz-repeating-linear-gradient(red, yellow, blue)", 1136 "-moz-repeating-linear-gradient(red 1px, yellow 20%, blue 24em, green)", 1137 "-moz-repeating-linear-gradient(red, yellow, green, blue 50%)", 1138 "-moz-repeating-linear-gradient(red -50%, yellow -25%, green, blue)", 1139 "-moz-repeating-linear-gradient(red -99px, yellow, green, blue 120%)", 1140 "-moz-repeating-linear-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 1141 "-moz-repeating-linear-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 1142 1143 "-moz-repeating-linear-gradient(to top, red, blue)", 1144 "-moz-repeating-linear-gradient(to bottom, red, blue)", 1145 "-moz-repeating-linear-gradient(to left, red, blue)", 1146 "-moz-repeating-linear-gradient(to right, red, blue)", 1147 "-moz-repeating-linear-gradient(to top left, red, blue)", 1148 "-moz-repeating-linear-gradient(to top right, red, blue)", 1149 "-moz-repeating-linear-gradient(to bottom left, red, blue)", 1150 "-moz-repeating-linear-gradient(to bottom right, red, blue)", 1151 "-moz-repeating-linear-gradient(to left top, red, blue)", 1152 "-moz-repeating-linear-gradient(to left bottom, red, blue)", 1153 "-moz-repeating-linear-gradient(to right top, red, blue)", 1154 "-moz-repeating-linear-gradient(to right bottom, red, blue)", 1155 1156 "-moz-repeating-linear-gradient(top left, red, blue)", 1157 1158 "-moz-repeating-radial-gradient(red, blue)", 1159 "-moz-repeating-radial-gradient(red, yellow, blue)", 1160 "-moz-repeating-radial-gradient(red 1px, yellow 20%, blue 24em, green)", 1161 "-moz-repeating-radial-gradient(red, yellow, green, blue 50%)", 1162 "-moz-repeating-radial-gradient(red -50%, yellow -25%, green, blue)", 1163 "-moz-repeating-radial-gradient(red -99px, yellow, green, blue 120%)", 1164 "-moz-repeating-radial-gradient(#ffff00, #ef3, rgba(10, 20, 30, 0.4))", 1165 "-moz-repeating-radial-gradient(rgba(10, 20, 30, 0.4), #ffff00, #ef3)", 1166 1167 "-moz-repeating-radial-gradient(farthest-corner, red, blue)", 1168 "-moz-repeating-radial-gradient(circle, red, blue)", 1169 "-moz-repeating-radial-gradient(ellipse closest-corner, red, blue)", 1170 1171 "-moz-radial-gradient(calc(25%) top, red, blue)", 1172 "-moz-radial-gradient(left calc(25%), red, blue)", 1173 "-moz-radial-gradient(calc(25px) top, red, blue)", 1174 "-moz-radial-gradient(left calc(25px), red, blue)", 1175 "-moz-radial-gradient(calc(-25%) top, red, blue)", 1176 "-moz-radial-gradient(left calc(-25%), red, blue)", 1177 "-moz-radial-gradient(calc(-25px) top, red, blue)", 1178 "-moz-radial-gradient(left calc(-25px), red, blue)", 1179 "-moz-radial-gradient(calc(100px + -25%) top, red, blue)", 1180 "-moz-radial-gradient(left calc(100px + -25%), red, blue)", 1181 "-moz-radial-gradient(calc(100px + -25px) top, red, blue)", 1182 "-moz-radial-gradient(left calc(100px + -25px), red, blue)" 1183 ); 1184 1185 invalidNonUrlImageValues.push( 1186 // The entries in this block used to be valid with the older more-complex 1187 // -moz prefixed gradient syntax, but we've since simplified the syntax for 1188 // consistency with -webkit prefixed gradients, in a way that makes these 1189 // invalid now. 1190 "-moz-linear-gradient(center 0%, red, blue)", 1191 "-moz-linear-gradient(50% top, red, blue)", 1192 "-moz-linear-gradient(50% 0%, red, blue)", 1193 "-moz-linear-gradient(0 0, red, blue)", 1194 "-moz-linear-gradient(20% bottom, red, blue)", 1195 "-moz-linear-gradient(center 20%, red, blue)", 1196 "-moz-linear-gradient(left 35px, red, blue)", 1197 "-moz-linear-gradient(10% 10em, red, blue)", 1198 "-moz-linear-gradient(44px top, red, blue)", 1199 "-moz-linear-gradient(0px, red, blue)", 1200 "-moz-linear-gradient(top left 45deg, red, blue)", 1201 "-moz-linear-gradient(20% bottom -300deg, red, blue)", 1202 "-moz-linear-gradient(center 20% 1.95929rad, red, blue)", 1203 "-moz-linear-gradient(left 35px 30grad, red, blue)", 1204 "-moz-linear-gradient(left 35px 0.1turn, red, blue)", 1205 "-moz-linear-gradient(10% 10em 99999deg, red, blue)", 1206 "-moz-linear-gradient(44px top -33deg, red, blue)", 1207 "-moz-linear-gradient(30grad left 35px, red, blue)", 1208 "-moz-linear-gradient(10deg 20px, red, blue)", 1209 "-moz-linear-gradient(1turn 20px, red, blue)", 1210 "-moz-linear-gradient(.414rad bottom, red, blue)", 1211 "-moz-radial-gradient(top left 45deg, red, blue)", 1212 "-moz-radial-gradient(20% bottom -300deg, red, blue)", 1213 "-moz-radial-gradient(center 20% 1.95929rad, red, blue)", 1214 "-moz-radial-gradient(left 35px 30grad, red, blue)", 1215 "-moz-radial-gradient(10% 10em 99999deg, red, blue)", 1216 "-moz-radial-gradient(44px top -33deg, red, blue)", 1217 "-moz-radial-gradient(-33deg, red, blue)", 1218 "-moz-radial-gradient(30grad left 35px, red, blue)", 1219 "-moz-radial-gradient(10deg 20px, red, blue)", 1220 "-moz-radial-gradient(.414rad bottom, red, blue)", 1221 "-moz-radial-gradient(99deg, cover, red, blue)", 1222 "-moz-radial-gradient(-1.2345rad, circle, red, blue)", 1223 "-moz-radial-gradient(399grad, ellipse closest-corner, red, blue)", 1224 "-moz-radial-gradient(399grad, farthest-side circle, red, blue)", 1225 "-moz-radial-gradient(top left 99deg, cover, red, blue)", 1226 "-moz-radial-gradient(15% 20% -1.2345rad, circle, red, blue)", 1227 "-moz-radial-gradient(45px 399grad, ellipse closest-corner, red, blue)", 1228 "-moz-radial-gradient(45px 399grad, farthest-side circle, red, blue)", 1229 "-moz-repeating-linear-gradient(0 0, red, blue)", 1230 "-moz-repeating-linear-gradient(20% bottom, red, blue)", 1231 "-moz-repeating-linear-gradient(center 20%, red, blue)", 1232 "-moz-repeating-linear-gradient(left 35px, red, blue)", 1233 "-moz-repeating-linear-gradient(10% 10em, red, blue)", 1234 "-moz-repeating-linear-gradient(44px top, red, blue)", 1235 "-moz-repeating-linear-gradient(top left 45deg, red, blue)", 1236 "-moz-repeating-linear-gradient(20% bottom -300deg, red, blue)", 1237 "-moz-repeating-linear-gradient(center 20% 1.95929rad, red, blue)", 1238 "-moz-repeating-linear-gradient(left 35px 30grad, red, blue)", 1239 "-moz-repeating-linear-gradient(10% 10em 99999deg, red, blue)", 1240 "-moz-repeating-linear-gradient(44px top -33deg, red, blue)", 1241 "-moz-repeating-linear-gradient(30grad left 35px, red, blue)", 1242 "-moz-repeating-linear-gradient(10deg 20px, red, blue)", 1243 "-moz-repeating-linear-gradient(.414rad bottom, red, blue)", 1244 1245 /* Negative radii */ 1246 "-moz-radial-gradient(40%, -100px -10%, red, blue)", 1247 1248 /* no quirks mode colors */ 1249 "-moz-radial-gradient(10% bottom, ffffff, black) scroll no-repeat", 1250 /* no quirks mode lengths */ 1251 "-moz-linear-gradient(10 10px -45deg, red, blue) repeat", 1252 "-moz-linear-gradient(10px 10 -45deg, red, blue) repeat", 1253 /* Unitless 0 is invalid as an <angle> */ 1254 "-moz-linear-gradient(top left 0, red, blue)", 1255 "-moz-linear-gradient(5px 5px 0, red, blue)", 1256 /* There must be a comma between gradient-line (e.g. <angle>) and colors */ 1257 "-moz-linear-gradient(30deg red, blue)", 1258 "-moz-linear-gradient(5px 5px 30deg red, blue)", 1259 "-moz-linear-gradient(5px 5px red, blue)", 1260 "-moz-linear-gradient(top left 30deg red, blue)", 1261 1262 /* Old syntax */ 1263 "-moz-linear-gradient(10px 10px, 20px, 30px 30px, 40px, from(blue), to(red))", 1264 "-moz-radial-gradient(20px 20px, 10px 10px, from(green), to(#ff00ff))", 1265 "-moz-radial-gradient(10px 10px, 20%, 40px 40px, 10px, from(green), to(#ff00ff))", 1266 "-moz-linear-gradient(10px, 20px, 30px, 40px, color-stop(0.5, #00ccff))", 1267 "-moz-linear-gradient(20px 20px, from(blue), to(red))", 1268 "-moz-linear-gradient(40px 40px, 10px 10px, from(blue) to(red) color-stop(10%, fuchsia))", 1269 "-moz-linear-gradient(20px 20px 30px, 10px 10px, from(red), to(#ff0000))", 1270 "-moz-radial-gradient(left top, center, 20px 20px, 10px, from(blue), to(red))", 1271 "-moz-linear-gradient(left left, top top, from(blue))", 1272 "-moz-linear-gradient(inherit, 10px 10px, from(blue))", 1273 /* New syntax */ 1274 "-moz-linear-gradient(10px 10px, 20px, 30px 30px, 40px, blue 0, red 100%)", 1275 "-moz-radial-gradient(20px 20px, 10px 10px, from(green), to(#ff00ff))", 1276 "-moz-radial-gradient(10px 10px, 20%, 40px 40px, 10px, from(green), to(#ff00ff))", 1277 "-moz-linear-gradient(10px, 20px, 30px, 40px, #00ccff 50%)", 1278 "-moz-linear-gradient(40px 40px, 10px 10px, blue 0 fuchsia 10% red 100%)", 1279 "-moz-linear-gradient(20px 20px 30px, 10px 10px, red 0, #ff0000 100%)", 1280 "-moz-radial-gradient(left top, center, 20px 20px, 10px, from(blue), to(red))", 1281 "-moz-linear-gradient(left left, top top, blue 0)", 1282 "-moz-linear-gradient(inherit, 10px 10px, blue 0)", 1283 "-moz-linear-gradient(left left blue red)", 1284 "-moz-linear-gradient(left left blue, red)", 1285 "-moz-linear-gradient()", 1286 "-moz-linear-gradient(cover, red, blue)", 1287 "-moz-linear-gradient(auto, red, blue)", 1288 "-moz-linear-gradient(22 top, red, blue)", 1289 "-moz-linear-gradient(10% red blue)", 1290 "-moz-linear-gradient(10%, red blue)", 1291 "-moz-linear-gradient(10%,, red, blue)", 1292 "-moz-linear-gradient(45px, center, red, blue)", 1293 "-moz-linear-gradient(45px, center red, blue)", 1294 "-moz-radial-gradient(contain, ellipse, red, blue)", 1295 "-moz-radial-gradient(10deg contain, red, blue)", 1296 "-moz-radial-gradient(10deg, contain,, red, blue)", 1297 "-moz-radial-gradient(contain contain, red, blue)", 1298 "-moz-radial-gradient(ellipse circle, red, blue)", 1299 "-moz-radial-gradient(to top left, red, blue)", 1300 "-moz-radial-gradient(center, 10%, red, blue)", 1301 "-moz-radial-gradient(5rad, 20px, red, blue)", 1302 1303 "-moz-radial-gradient(at top left to cover, red, blue)", 1304 "-moz-radial-gradient(at 15% 20% circle, red, blue)", 1305 1306 "-moz-radial-gradient(to cover, red, blue)", 1307 "-moz-radial-gradient(to contain, red, blue)", 1308 "-moz-radial-gradient(to closest-side circle, red, blue)", 1309 "-moz-radial-gradient(to farthest-corner ellipse, red, blue)", 1310 1311 "-moz-radial-gradient(ellipse at 45px closest-corner, red, blue)", 1312 "-moz-radial-gradient(circle at 45px farthest-side, red, blue)", 1313 "-moz-radial-gradient(ellipse 45px, closest-side, red, blue)", 1314 "-moz-radial-gradient(circle 45px, farthest-corner, red, blue)", 1315 "-moz-radial-gradient(ellipse, ellipse closest-side, red, blue)", 1316 "-moz-radial-gradient(circle, circle farthest-corner, red, blue)", 1317 1318 "-moz-radial-gradient(99deg to farthest-corner, red, blue)", 1319 "-moz-radial-gradient(-1.2345rad circle, red, blue)", 1320 "-moz-radial-gradient(ellipse 399grad to closest-corner, red, blue)", 1321 "-moz-radial-gradient(circle 399grad to farthest-side, red, blue)", 1322 1323 "-moz-radial-gradient(at top left 99deg, to farthest-corner, red, blue)", 1324 "-moz-radial-gradient(circle at 15% 20% -1.2345rad, red, blue)", 1325 "-moz-radial-gradient(to top left at 30% 40%, red, blue)", 1326 "-moz-radial-gradient(ellipse at 45px 399grad, to closest-corner, red, blue)", 1327 "-moz-radial-gradient(at 45px 399grad to farthest-side circle, red, blue)", 1328 1329 "-moz-radial-gradient(to 50%, red, blue)", 1330 "-moz-radial-gradient(circle to 50%, red, blue)", 1331 "-moz-radial-gradient(circle to 43px 43px, red, blue)", 1332 "-moz-radial-gradient(circle to 50% 50%, red, blue)", 1333 "-moz-radial-gradient(circle to 43px 50%, red, blue)", 1334 "-moz-radial-gradient(circle to 50% 43px, red, blue)", 1335 "-moz-radial-gradient(ellipse to 43px, red, blue)", 1336 "-moz-radial-gradient(ellipse to 50%, red, blue)", 1337 1338 "-moz-linear-gradient(to 0 0, red, blue)", 1339 "-moz-linear-gradient(to 20% bottom, red, blue)", 1340 "-moz-linear-gradient(to center 20%, red, blue)", 1341 "-moz-linear-gradient(to left 35px, red, blue)", 1342 "-moz-linear-gradient(to 10% 10em, red, blue)", 1343 "-moz-linear-gradient(to 44px top, red, blue)", 1344 "-moz-linear-gradient(to top left 45deg, red, blue)", 1345 "-moz-linear-gradient(to 20% bottom -300deg, red, blue)", 1346 "-moz-linear-gradient(to center 20% 1.95929rad, red, blue)", 1347 "-moz-linear-gradient(to left 35px 30grad, red, blue)", 1348 "-moz-linear-gradient(to 10% 10em 99999deg, red, blue)", 1349 "-moz-linear-gradient(to 44px top -33deg, red, blue)", 1350 "-moz-linear-gradient(to -33deg, red, blue)", 1351 "-moz-linear-gradient(to 30grad left 35px, red, blue)", 1352 "-moz-linear-gradient(to 10deg 20px, red, blue)", 1353 "-moz-linear-gradient(to .414rad bottom, red, blue)", 1354 1355 "-moz-linear-gradient(to top top, red, blue)", 1356 "-moz-linear-gradient(to bottom bottom, red, blue)", 1357 "-moz-linear-gradient(to left left, red, blue)", 1358 "-moz-linear-gradient(to right right, red, blue)", 1359 1360 "-moz-repeating-linear-gradient(10px 10px, 20px, 30px 30px, 40px, blue 0, red 100%)", 1361 "-moz-repeating-radial-gradient(20px 20px, 10px 10px, from(green), to(#ff00ff))", 1362 "-moz-repeating-radial-gradient(10px 10px, 20%, 40px 40px, 10px, from(green), to(#ff00ff))", 1363 "-moz-repeating-linear-gradient(10px, 20px, 30px, 40px, #00ccff 50%)", 1364 "-moz-repeating-linear-gradient(40px 40px, 10px 10px, blue 0 fuchsia 10% red 100%)", 1365 "-moz-repeating-linear-gradient(20px 20px 30px, 10px 10px, red 0, #ff0000 100%)", 1366 "-moz-repeating-radial-gradient(left top, center, 20px 20px, 10px, from(blue), to(red))", 1367 "-moz-repeating-linear-gradient(left left, top top, blue 0)", 1368 "-moz-repeating-linear-gradient(inherit, 10px 10px, blue 0)", 1369 "-moz-repeating-linear-gradient(left left blue red)", 1370 "-moz-repeating-linear-gradient()", 1371 1372 "-moz-repeating-linear-gradient(to 0 0, red, blue)", 1373 "-moz-repeating-linear-gradient(to 20% bottom, red, blue)", 1374 "-moz-repeating-linear-gradient(to center 20%, red, blue)", 1375 "-moz-repeating-linear-gradient(to left 35px, red, blue)", 1376 "-moz-repeating-linear-gradient(to 10% 10em, red, blue)", 1377 "-moz-repeating-linear-gradient(to 44px top, red, blue)", 1378 "-moz-repeating-linear-gradient(to top left 45deg, red, blue)", 1379 "-moz-repeating-linear-gradient(to 20% bottom -300deg, red, blue)", 1380 "-moz-repeating-linear-gradient(to center 20% 1.95929rad, red, blue)", 1381 "-moz-repeating-linear-gradient(to left 35px 30grad, red, blue)", 1382 "-moz-repeating-linear-gradient(to 10% 10em 99999deg, red, blue)", 1383 "-moz-repeating-linear-gradient(to 44px top -33deg, red, blue)", 1384 "-moz-repeating-linear-gradient(to -33deg, red, blue)", 1385 "-moz-repeating-linear-gradient(to 30grad left 35px, red, blue)", 1386 "-moz-repeating-linear-gradient(to 10deg 20px, red, blue)", 1387 "-moz-repeating-linear-gradient(to .414rad bottom, red, blue)", 1388 1389 "-moz-repeating-linear-gradient(to top top, red, blue)", 1390 "-moz-repeating-linear-gradient(to bottom bottom, red, blue)", 1391 "-moz-repeating-linear-gradient(to left left, red, blue)", 1392 "-moz-repeating-linear-gradient(to right right, red, blue)", 1393 1394 "-moz-repeating-radial-gradient(to top left at 30% 40%, red, blue)", 1395 "-moz-repeating-radial-gradient(ellipse at 45px closest-corner, red, blue)", 1396 "-moz-repeating-radial-gradient(circle at 45px farthest-side, red, blue)", 1397 1398 /* Valid only when unprefixed */ 1399 "-moz-radial-gradient(at top left, red, blue)", 1400 "-moz-radial-gradient(at 20% bottom, red, blue)", 1401 "-moz-radial-gradient(at center 20%, red, blue)", 1402 "-moz-radial-gradient(at left 35px, red, blue)", 1403 "-moz-radial-gradient(at 10% 10em, red, blue)", 1404 "-moz-radial-gradient(at 44px top, red, blue)", 1405 "-moz-radial-gradient(at 0 0, red, blue)", 1406 1407 "-moz-radial-gradient(circle 43px, red, blue)", 1408 "-moz-radial-gradient(ellipse 43px 43px, red, blue)", 1409 "-moz-radial-gradient(ellipse 50% 50%, red, blue)", 1410 "-moz-radial-gradient(ellipse 43px 50%, red, blue)", 1411 "-moz-radial-gradient(ellipse 50% 43px, red, blue)", 1412 1413 "-moz-radial-gradient(farthest-corner at top left, red, blue)", 1414 "-moz-radial-gradient(ellipse closest-corner at 45px, red, blue)", 1415 "-moz-radial-gradient(circle farthest-side at 45px, red, blue)", 1416 "-moz-radial-gradient(closest-side ellipse at 50%, red, blue)", 1417 "-moz-radial-gradient(farthest-corner circle at 4em, red, blue)", 1418 1419 "-moz-radial-gradient(30% 40% at top left, red, blue)", 1420 "-moz-radial-gradient(50px 60px at 15% 20%, red, blue)", 1421 "-moz-radial-gradient(7em 8em at 45px, red, blue)" 1422 ); 1423 } 1424 1425 const pathValues = { 1426 other_values: [ 1427 "path('M 10 10 20 20 H 90 V 90 Z')", 1428 "path('M10 10 20,20H90V90Z')", 1429 "path('M 10 10 C 20 20, 40 20, 50 10')", 1430 "path('M 10 80 C 40 10, 65 10, 95 80 S 1.5e2 150, 180 80')", 1431 "path('M 10 80 Q 95 10 180 80')", 1432 "path('M 10 80 Q 52.5 10, 95 80 T 180 80')", 1433 "path('M 80 80 A 45 45, 0, 0, 0, 1.25e2 1.25e2 L 125 80 Z')", 1434 "path('M100-200h20z')", 1435 "path('M10,10L20.6.5z')", 1436 ], 1437 invalid_values: [ 1438 "path()", 1439 "path(a)", 1440 "path('M 10 Z')", 1441 "path('M 10-10 20')", 1442 "path('M 10 10 C 20 20 40 20')", 1443 ], 1444 }; 1445 1446 var gCSSProperties = { 1447 animation: { 1448 domProp: "animation", 1449 inherited: false, 1450 type: CSS_TYPE_TRUE_SHORTHAND, 1451 applies_to_marker: true, 1452 subproperties: [ 1453 "animation-name", 1454 "animation-duration", 1455 "animation-timing-function", 1456 "animation-delay", 1457 "animation-direction", 1458 "animation-fill-mode", 1459 "animation-iteration-count", 1460 "animation-play-state", 1461 ], 1462 initial_values: [ 1463 "none none 0s 0s ease normal running 1.0", 1464 "none", 1465 "0s", 1466 "ease", 1467 "normal", 1468 "running", 1469 "1.0", 1470 ], 1471 other_values: [ 1472 "none none 0s 0s cubic-bezier(0.25, 0.1, 0.25, 1.0) normal running 1.0", 1473 "bounce 1s linear 2s", 1474 "bounce 1s 2s linear", 1475 "bounce linear 1s 2s", 1476 "linear bounce 1s 2s", 1477 "linear 1s bounce 2s", 1478 "linear 1s 2s bounce", 1479 "1s bounce linear 2s", 1480 "1s bounce 2s linear", 1481 "1s 2s bounce linear", 1482 "1s linear bounce 2s", 1483 "1s linear 2s bounce", 1484 "1s 2s linear bounce", 1485 "bounce linear 1s", 1486 "bounce 1s linear", 1487 "linear bounce 1s", 1488 "linear 1s bounce", 1489 "1s bounce linear", 1490 "1s linear bounce", 1491 "1s 2s bounce", 1492 "1s bounce 2s", 1493 "bounce 1s 2s", 1494 "1s 2s linear", 1495 "1s linear 2s", 1496 "linear 1s 2s", 1497 "bounce 1s", 1498 "1s bounce", 1499 "linear 1s", 1500 "1s linear", 1501 "1s 2s", 1502 "2s 1s", 1503 "bounce", 1504 "linear", 1505 "1s", 1506 "height", 1507 "2s", 1508 "ease-in-out", 1509 "2s ease-in", 1510 "opacity linear", 1511 "ease-out 2s", 1512 "2s color, 1s bounce, 500ms height linear, 1s opacity 4s cubic-bezier(0.0, 0.1, 1.0, 1.0)", 1513 "1s \\32bounce linear 2s", 1514 "1s -bounce linear 2s", 1515 "1s -\\32bounce linear 2s", 1516 "1s \\32 0bounce linear 2s", 1517 "1s -\\32 0bounce linear 2s", 1518 "1s \\2bounce linear 2s", 1519 "1s -\\2bounce linear 2s", 1520 "2s, 1s bounce", 1521 "1s bounce, 2s", 1522 "2s all, 1s bounce", 1523 "1s bounce, 2s all", 1524 "1s bounce, 2s none", 1525 "2s none, 1s bounce", 1526 "2s bounce, 1s all", 1527 "2s all, 1s bounce", 1528 ], 1529 invalid_values: [ 1530 "2s inherit", 1531 "inherit 2s", 1532 "2s bounce, 1s inherit", 1533 "2s inherit, 1s bounce", 1534 "2s initial", 1535 "2s all,, 1s bounce", 1536 "2s all, , 1s bounce", 1537 "bounce 1s cubic-bezier(0, rubbish) 2s", 1538 "bounce 1s steps(rubbish) 2s", 1539 "2s unset", 1540 ], 1541 }, 1542 "animation-delay": { 1543 domProp: "animationDelay", 1544 inherited: false, 1545 type: CSS_TYPE_LONGHAND, 1546 applies_to_marker: true, 1547 initial_values: ["0s", "0ms"], 1548 other_values: [ 1549 "1s", 1550 "250ms", 1551 "-100ms", 1552 "-1s", 1553 "1s, 250ms, 2.3s", 1554 "calc(1s + 2ms)", 1555 ], 1556 invalid_values: ["0", "0px"], 1557 }, 1558 "animation-direction": { 1559 domProp: "animationDirection", 1560 inherited: false, 1561 type: CSS_TYPE_LONGHAND, 1562 applies_to_marker: true, 1563 initial_values: ["normal"], 1564 other_values: [ 1565 "alternate", 1566 "normal, alternate", 1567 "alternate, normal", 1568 "normal, normal", 1569 "normal, normal, normal", 1570 "reverse", 1571 "alternate-reverse", 1572 "normal, reverse, alternate-reverse, alternate", 1573 ], 1574 invalid_values: [ 1575 "normal normal", 1576 "inherit, normal", 1577 "reverse-alternate", 1578 "normal, unset", 1579 "unset, normal", 1580 ], 1581 }, 1582 "animation-duration": { 1583 domProp: "animationDuration", 1584 inherited: false, 1585 type: CSS_TYPE_LONGHAND, 1586 initial_values: ["0s", "0ms"], 1587 applies_to_marker: true, 1588 other_values: ["1s", "250ms", "1s, 250ms, 2.3s", "calc(1s + 2ms)"], 1589 invalid_values: ["0", "0px", "-1ms", "-2s"], 1590 }, 1591 "animation-fill-mode": { 1592 domProp: "animationFillMode", 1593 inherited: false, 1594 type: CSS_TYPE_LONGHAND, 1595 applies_to_marker: true, 1596 initial_values: ["none"], 1597 other_values: [ 1598 "forwards", 1599 "backwards", 1600 "both", 1601 "none, none", 1602 "forwards, backwards", 1603 "forwards, none", 1604 "none, both", 1605 ], 1606 invalid_values: ["all"], 1607 }, 1608 "animation-iteration-count": { 1609 domProp: "animationIterationCount", 1610 inherited: false, 1611 type: CSS_TYPE_LONGHAND, 1612 applies_to_marker: true, 1613 initial_values: ["1"], 1614 other_values: [ 1615 "infinite", 1616 "0", 1617 "0.5", 1618 "7.75", 1619 "-0.0", 1620 "1, 2, 3", 1621 "infinite, 2", 1622 "1, infinite", 1623 "calc(1 + 2.0)", 1624 ], 1625 // negatives forbidden per 1626 // http://lists.w3.org/Archives/Public/www-style/2011Mar/0355.html 1627 invalid_values: ["none", "-1", "-0.5", "-1, infinite", "infinite, -3"], 1628 }, 1629 "animation-name": { 1630 domProp: "animationName", 1631 inherited: false, 1632 type: CSS_TYPE_LONGHAND, 1633 applies_to_marker: true, 1634 initial_values: ["none"], 1635 other_values: [ 1636 "all", 1637 "ball", 1638 "mall", 1639 "color", 1640 "bounce, bubble, opacity", 1641 "foobar", 1642 "auto", 1643 "\\32bounce", 1644 "-bounce", 1645 "-\\32bounce", 1646 "\\32 0bounce", 1647 "-\\32 0bounce", 1648 "\\2bounce", 1649 "-\\2bounce", 1650 ], 1651 invalid_values: [ 1652 "bounce, initial", 1653 "initial, bounce", 1654 "bounce, inherit", 1655 "inherit, bounce", 1656 "bounce, unset", 1657 "unset, bounce", 1658 ], 1659 }, 1660 "animation-play-state": { 1661 domProp: "animationPlayState", 1662 inherited: false, 1663 type: CSS_TYPE_LONGHAND, 1664 applies_to_marker: true, 1665 initial_values: ["running"], 1666 other_values: [ 1667 "paused", 1668 "running, running", 1669 "paused, running", 1670 "paused, paused", 1671 "running, paused", 1672 "paused, running, running, running, paused, running", 1673 ], 1674 invalid_values: ["0"], 1675 }, 1676 "animation-timing-function": { 1677 domProp: "animationTimingFunction", 1678 inherited: false, 1679 type: CSS_TYPE_LONGHAND, 1680 applies_to_marker: true, 1681 initial_values: ["ease"], 1682 other_values: [ 1683 "cubic-bezier(0.25, 0.1, 0.25, 1.0)", 1684 "linear", 1685 "ease-in", 1686 "ease-out", 1687 "ease-in-out", 1688 "linear, ease-in, cubic-bezier(0.1, 0.2, 0.8, 0.9)", 1689 "cubic-bezier(0.5, 0.5, 0.5, 0.5)", 1690 "cubic-bezier(0.25, 1.5, 0.75, -0.5)", 1691 "step-start", 1692 "step-end", 1693 "steps(1)", 1694 "steps(2, start)", 1695 "steps(386)", 1696 "steps(3, end)", 1697 "steps(calc(2 + 1))", 1698 "steps(1, jump-start)", 1699 "steps(1, jump-end)", 1700 "steps(2, jump-none)", 1701 "steps(1, jump-both)", 1702 ], 1703 invalid_values: [ 1704 "none", 1705 "auto", 1706 "cubic-bezier(0.25, 0.1, 0.25)", 1707 "cubic-bezier(0.25, 0.1, 0.25, 0.25, 1.0)", 1708 "cubic-bezier(-0.5, 0.5, 0.5, 0.5)", 1709 "cubic-bezier(1.5, 0.5, 0.5, 0.5)", 1710 "cubic-bezier(0.5, 0.5, -0.5, 0.5)", 1711 "cubic-bezier(0.5, 0.5, 1.5, 0.5)", 1712 "steps(2, step-end)", 1713 "steps(0)", 1714 "steps(-2)", 1715 "steps(0, step-end, 1)", 1716 "steps(0, jump-start)", 1717 "steps(0, jump-end)", 1718 "steps(1, jump-none)", 1719 "steps(0, jump-both)", 1720 ], 1721 }, 1722 appearance: { 1723 domProp: "appearance", 1724 inherited: false, 1725 type: CSS_TYPE_LONGHAND, 1726 initial_values: ["none"], 1727 other_values: ["auto", "radio", "menulist"], 1728 invalid_values: [], 1729 }, 1730 "-moz-appearance": { 1731 domProp: "MozAppearance", 1732 domPropDisabled: true, // Bug 1977489 1733 inherited: false, 1734 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 1735 alias_for: "appearance", 1736 subproperties: ["appearance"], 1737 }, 1738 "-webkit-appearance": { 1739 domProp: "webkitAppearance", 1740 inherited: false, 1741 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 1742 alias_for: "appearance", 1743 subproperties: ["appearance"], 1744 }, 1745 "aspect-ratio": { 1746 domProp: "aspectRatio", 1747 inherited: false, 1748 type: CSS_TYPE_LONGHAND, 1749 initial_values: ["auto"], 1750 other_values: [ 1751 "1", 1752 "1.0", 1753 "1 / 2", 1754 "1/2", 1755 "16.2 / 9.5", 1756 "1/0", 1757 "0/1", 1758 "0 / 0", 1759 "auto 1", 1760 "0 auto", 1761 ], 1762 invalid_values: ["none", "1 test", "1 / auto", "auto / 1"], 1763 }, 1764 "border-inline": { 1765 domProp: "borderInline", 1766 inherited: false, 1767 type: CSS_TYPE_TRUE_SHORTHAND, 1768 subproperties: [ 1769 "border-inline-start-color", 1770 "border-inline-start-style", 1771 "border-inline-start-width", 1772 "border-inline-end-color", 1773 "border-inline-end-style", 1774 "border-inline-end-width", 1775 ], 1776 initial_values: [ 1777 "none", 1778 "medium", 1779 "currentColor", 1780 "thin", 1781 "none medium currentcolor", 1782 ], 1783 other_values: [ 1784 "solid", 1785 "green", 1786 "medium solid", 1787 "green solid", 1788 "10px solid", 1789 "thick solid", 1790 "5px green none", 1791 ], 1792 invalid_values: ["5%", "5", "5 solid green"], 1793 }, 1794 "border-inline-end": { 1795 domProp: "borderInlineEnd", 1796 inherited: false, 1797 type: CSS_TYPE_TRUE_SHORTHAND, 1798 subproperties: [ 1799 "border-inline-end-color", 1800 "border-inline-end-style", 1801 "border-inline-end-width", 1802 ], 1803 initial_values: [ 1804 "none", 1805 "medium", 1806 "currentColor", 1807 "thin", 1808 "none medium currentcolor", 1809 ], 1810 other_values: [ 1811 "solid", 1812 "green", 1813 "medium solid", 1814 "green solid", 1815 "10px solid", 1816 "thick solid", 1817 "5px green none", 1818 ], 1819 invalid_values: ["5%", "5", "5 green none"], 1820 }, 1821 "border-inline-color": { 1822 domProp: "borderInlineColor", 1823 inherited: false, 1824 type: CSS_TYPE_TRUE_SHORTHAND, 1825 subproperties: ["border-inline-start-color", "border-inline-end-color"], 1826 initial_values: ["currentColor"], 1827 other_values: ["green", "rgba(255,128,0,0.5) blue", "blue transparent"], 1828 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000", "000000"], 1829 }, 1830 "border-inline-end-color": { 1831 domProp: "borderInlineEndColor", 1832 inherited: false, 1833 type: CSS_TYPE_LONGHAND, 1834 applies_to_first_letter: true, 1835 logical: true, 1836 initial_values: ["currentColor"], 1837 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 1838 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000", "000000"], 1839 }, 1840 "border-inline-style": { 1841 domProp: "borderInlineStyle", 1842 inherited: false, 1843 type: CSS_TYPE_TRUE_SHORTHAND, 1844 subproperties: ["border-inline-start-style", "border-inline-end-style"], 1845 initial_values: ["none"], 1846 other_values: [ 1847 "solid", 1848 "dashed solid", 1849 "solid dotted", 1850 "double double", 1851 "inset outset", 1852 "inset double", 1853 "none groove", 1854 "ridge none", 1855 ], 1856 invalid_values: [], 1857 }, 1858 "border-inline-end-style": { 1859 domProp: "borderInlineEndStyle", 1860 inherited: false, 1861 type: CSS_TYPE_LONGHAND, 1862 applies_to_first_letter: true, 1863 logical: true, 1864 /* XXX hidden is sometimes the same as initial */ 1865 initial_values: ["none"], 1866 other_values: [ 1867 "solid", 1868 "dashed", 1869 "dotted", 1870 "double", 1871 "outset", 1872 "inset", 1873 "groove", 1874 "ridge", 1875 ], 1876 invalid_values: [], 1877 }, 1878 "border-inline-width": { 1879 domProp: "borderInlineWidth", 1880 inherited: false, 1881 type: CSS_TYPE_TRUE_SHORTHAND, 1882 subproperties: ["border-inline-start-width", "border-inline-end-width"], 1883 prerequisites: { "border-style": "solid" }, 1884 initial_values: ["medium", "3px", "medium medium"], 1885 other_values: [ 1886 "thin", 1887 "thick", 1888 "1px", 1889 "2em", 1890 "calc(2px)", 1891 "calc(2px) thin", 1892 "calc(-2px)", 1893 "calc(-2px) thick", 1894 "calc(0em)", 1895 "medium calc(0em)", 1896 "calc(0px)", 1897 "1px calc(0px)", 1898 "calc(5em)", 1899 "1em calc(5em)", 1900 ], 1901 invalid_values: ["5%", "5", "5 thin", "thin 5%", "blue", "solid"], 1902 }, 1903 "border-inline-end-width": { 1904 domProp: "borderInlineEndWidth", 1905 inherited: false, 1906 type: CSS_TYPE_LONGHAND, 1907 applies_to_first_letter: true, 1908 logical: true, 1909 prerequisites: { "border-inline-end-style": "solid" }, 1910 initial_values: ["medium", "3px", "calc(4px - 1px)"], 1911 other_values: [ 1912 "thin", 1913 "thick", 1914 "1px", 1915 "2em", 1916 "calc(2px)", 1917 "calc(-2px)", 1918 "calc(0em)", 1919 "calc(0px)", 1920 "calc(5em)", 1921 "calc(3*25px)", 1922 "calc(25px*3)", 1923 "calc(3*25px + 5em)", 1924 ], 1925 invalid_values: ["5%", "5", "stretch"], 1926 }, 1927 "border-image": { 1928 domProp: "borderImage", 1929 inherited: false, 1930 type: CSS_TYPE_TRUE_SHORTHAND, 1931 subproperties: [ 1932 "border-image-source", 1933 "border-image-slice", 1934 "border-image-width", 1935 "border-image-outset", 1936 "border-image-repeat", 1937 ], 1938 initial_values: ["none"], 1939 other_values: [ 1940 "url('border.png') 27 27 27 27", 1941 "url('border.png') 27", 1942 "stretch url('border.png')", 1943 "url('border.png') 27 fill", 1944 "url('border.png') 27 27 27 27 repeat", 1945 "repeat url('border.png') 27 27 27 27", 1946 "url('border.png') repeat 27 27 27 27", 1947 "url('border.png') fill 27 27 27 27 repeat", 1948 "url('border.png') fill 27 27 27 27 repeat space", 1949 "url('border.png') 27 27 27 27 / 1em", 1950 "27 27 27 27 / 1em url('border.png') ", 1951 "url('border.png') 27 27 27 27 / 10 10 10 / 10 10 repeat", 1952 "repeat 27 27 27 27 / 10 10 10 / 10 10 url('border.png')", 1953 "url('border.png') 27 27 27 27 / / 10 10 1em", 1954 "fill 27 27 27 27 / / 10 10 1em url('border.png')", 1955 "url('border.png') 27 27 27 27 / 1em 1em 1em 1em repeat", 1956 "url('border.png') 27 27 27 27 / 1em 1em 1em 1em stretch round", 1957 ], 1958 invalid_values: [ 1959 "url('border.png') 27 27 27 27 27", 1960 "url('border.png') 27 27 27 27 / 1em 1em 1em 1em 1em", 1961 "url('border.png') 27 27 27 27 /", 1962 "url('border.png') fill", 1963 "url('border.png') fill repeat", 1964 "fill repeat", 1965 "url('border.png') fill / 1em", 1966 "url('border.png') / repeat", 1967 "url('border.png') 1 /", 1968 "url('border.png') 1 / /", 1969 "1 / url('border.png')", 1970 "url('border.png') / 1", 1971 "url('border.png') / / 1", 1972 ], 1973 }, 1974 "border-image-source": { 1975 domProp: "borderImageSource", 1976 inherited: false, 1977 type: CSS_TYPE_LONGHAND, 1978 applies_to_first_letter: true, 1979 initial_values: ["none"], 1980 other_values: ["url('border.png')"].concat(validNonUrlImageValues), 1981 invalid_values: ["url('border.png') url('border.png')"].concat( 1982 invalidNonUrlImageValues 1983 ), 1984 unbalanced_values: [].concat(unbalancedGradientAndElementValues), 1985 }, 1986 "border-image-slice": { 1987 domProp: "borderImageSlice", 1988 inherited: false, 1989 type: CSS_TYPE_LONGHAND, 1990 applies_to_first_letter: true, 1991 initial_values: ["100%", "100% 100% 100% 100%"], 1992 other_values: [ 1993 "0%", 1994 "10", 1995 "10 100% 0 2", 1996 "0 0 0 0", 1997 "fill 10 10", 1998 "10 10 fill", 1999 ], 2000 invalid_values: [ 2001 "-10%", 2002 "-10", 2003 "10 10 10 10 10", 2004 "10 10 10 10 -10", 2005 "10px", 2006 "-10px", 2007 "fill", 2008 "fill fill 10px", 2009 "10px fill fill", 2010 ], 2011 }, 2012 "border-image-width": { 2013 domProp: "borderImageWidth", 2014 inherited: false, 2015 type: CSS_TYPE_LONGHAND, 2016 applies_to_first_letter: true, 2017 initial_values: ["1", "1 1 1 1"], 2018 other_values: [ 2019 "0", 2020 "0%", 2021 "0px", 2022 "auto auto auto auto", 2023 "10 10% auto 15px", 2024 "10px 10px 10px 10px", 2025 "10", 2026 "10 10", 2027 "10 10 10", 2028 "calc(10px)", 2029 "calc(10px + 5%)", 2030 ], 2031 invalid_values: [ 2032 "stretch", 2033 "-10", 2034 "-10px", 2035 "-10%", 2036 "10 10 10 10 10", 2037 "10 10 10 10 auto", 2038 "auto auto auto auto auto", 2039 "10px calc(nonsense)", 2040 "1px red", 2041 ], 2042 unbalanced_values: ["10px calc("], 2043 }, 2044 "border-image-outset": { 2045 domProp: "borderImageOutset", 2046 inherited: false, 2047 type: CSS_TYPE_LONGHAND, 2048 applies_to_first_letter: true, 2049 initial_values: ["0", "0 0 0 0"], 2050 other_values: [ 2051 "10px", 2052 "10", 2053 "10 10", 2054 "10 10 10", 2055 "10 10 10 10", 2056 "10px 10 10 10px", 2057 ], 2058 invalid_values: [ 2059 "stretch", 2060 "-10", 2061 "-10px", 2062 "-10%", 2063 "10%", 2064 "10 10 10 10 10", 2065 "10px calc(nonsense)", 2066 "1px red", 2067 ], 2068 unbalanced_values: ["10px calc("], 2069 }, 2070 "border-image-repeat": { 2071 domProp: "borderImageRepeat", 2072 inherited: false, 2073 type: CSS_TYPE_LONGHAND, 2074 applies_to_first_letter: true, 2075 initial_values: ["stretch", "stretch stretch"], 2076 other_values: [ 2077 "round", 2078 "repeat", 2079 "stretch round", 2080 "repeat round", 2081 "stretch repeat", 2082 "round round", 2083 "repeat repeat", 2084 "space", 2085 "stretch space", 2086 "repeat space", 2087 "round space", 2088 "space space", 2089 ], 2090 invalid_values: ["none", "stretch stretch stretch", "0", "10", "0%", "0px"], 2091 }, 2092 "border-radius": { 2093 domProp: "borderRadius", 2094 inherited: false, 2095 type: CSS_TYPE_TRUE_SHORTHAND, 2096 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2097 subproperties: [ 2098 "border-bottom-left-radius", 2099 "border-bottom-right-radius", 2100 "border-top-left-radius", 2101 "border-top-right-radius", 2102 ], 2103 initial_values: [ 2104 "0", 2105 "0px", 2106 "0px 0 0 0px", 2107 "calc(-2px)", 2108 "calc(0px) calc(0pt)", 2109 "calc(0px) calc(0pt) calc(0px) calc(0em)", 2110 ], 2111 other_values: [ 2112 "0%", 2113 "3%", 2114 "1px", 2115 "2em", 2116 "3em 2px", 2117 "2pt 3% 4em", 2118 "2px 2px 2px 2px", // circular 2119 "3% / 2%", 2120 "1px / 4px", 2121 "2em / 1em", 2122 "3em 2px / 2px 3em", 2123 "2pt 3% 4em / 4pt 1% 5em", 2124 "2px 2px 2px 2px / 4px 4px 4px 4px", 2125 "1pt / 2pt 3pt", 2126 "4pt 5pt / 3pt", // elliptical 2127 "calc(-1%)", 2128 "calc(2px)", 2129 "calc(50%)", 2130 "calc(3*25px)", 2131 "calc(3*25px) 5px", 2132 "5px calc(3*25px)", 2133 "calc(20%) calc(3*25px)", 2134 "calc(25px*3)", 2135 "calc(3*25px + 50%)", 2136 "2px 2px calc(2px + 1%) 2px", 2137 "1px 2px 2px 2px / 2px 2px calc(2px + 1%) 2px", 2138 ], 2139 invalid_values: [ 2140 "stretch", 2141 "2px -2px", 2142 "inherit 2px", 2143 "inherit / 2px", 2144 "2px inherit", 2145 "2px / inherit", 2146 "2px 2px 2px 2px 2px", 2147 "1px / 2px 2px 2px 2px 2px", 2148 "2", 2149 "2 2", 2150 "2px 2px 2px 2px / 2px 2px 2 2px", 2151 "2px calc(0px + rubbish)", 2152 "unset 2px", 2153 "unset / 2px", 2154 "2px unset", 2155 "2px / unset", 2156 ], 2157 }, 2158 "border-bottom-left-radius": { 2159 domProp: "borderBottomLeftRadius", 2160 inherited: false, 2161 type: CSS_TYPE_LONGHAND, 2162 applies_to_first_letter: true, 2163 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2164 initial_values: ["0", "0px", "calc(-2px)"], 2165 other_values: [ 2166 "0%", 2167 "3%", 2168 "1px", 2169 "2em", // circular 2170 "3% 2%", 2171 "1px 4px", 2172 "2em 2pt", // elliptical 2173 "calc(-1%)", 2174 "calc(2px)", 2175 "calc(50%)", 2176 "calc(3*25px)", 2177 "calc(3*25px) 5px", 2178 "5px calc(3*25px)", 2179 "calc(20%) calc(3*25px)", 2180 "calc(25px*3)", 2181 "calc(3*25px + 50%)", 2182 ], 2183 invalid_values: [ 2184 "-1px", 2185 "4px -2px", 2186 "inherit 2px", 2187 "2px inherit", 2188 "2", 2189 "2px 2", 2190 "2 2px", 2191 "2px calc(0px + rubbish)", 2192 "unset 2px", 2193 "2px unset", 2194 ], 2195 }, 2196 "border-bottom-right-radius": { 2197 domProp: "borderBottomRightRadius", 2198 inherited: false, 2199 type: CSS_TYPE_LONGHAND, 2200 applies_to_first_letter: true, 2201 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2202 initial_values: ["0", "0px", "calc(-2px)"], 2203 other_values: [ 2204 "0%", 2205 "3%", 2206 "1px", 2207 "2em", // circular 2208 "3% 2%", 2209 "1px 4px", 2210 "2em 2pt", // elliptical 2211 "calc(-1%)", 2212 "calc(2px)", 2213 "calc(50%)", 2214 "calc(3*25px)", 2215 "calc(3*25px) 5px", 2216 "5px calc(3*25px)", 2217 "calc(20%) calc(3*25px)", 2218 "calc(25px*3)", 2219 "calc(3*25px + 50%)", 2220 ], 2221 invalid_values: [ 2222 "-1px", 2223 "4px -2px", 2224 "inherit 2px", 2225 "2px inherit", 2226 "2", 2227 "2px 2", 2228 "2 2px", 2229 "2px calc(0px + rubbish)", 2230 "unset 2px", 2231 "2px unset", 2232 ], 2233 }, 2234 "border-top-left-radius": { 2235 domProp: "borderTopLeftRadius", 2236 inherited: false, 2237 type: CSS_TYPE_LONGHAND, 2238 applies_to_first_letter: true, 2239 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2240 initial_values: ["0", "0px", "calc(-2px)"], 2241 other_values: [ 2242 "0%", 2243 "3%", 2244 "1px", 2245 "2em", // circular 2246 "3% 2%", 2247 "1px 4px", 2248 "2em 2pt", // elliptical 2249 "calc(-1%)", 2250 "calc(2px)", 2251 "calc(50%)", 2252 "calc(3*25px)", 2253 "calc(3*25px) 5px", 2254 "5px calc(3*25px)", 2255 "calc(20%) calc(3*25px)", 2256 "calc(25px*3)", 2257 "calc(3*25px + 50%)", 2258 ], 2259 invalid_values: [ 2260 "-1px", 2261 "4px -2px", 2262 "inherit 2px", 2263 "2px inherit", 2264 "2", 2265 "2px 2", 2266 "2 2px", 2267 "2px calc(0px + rubbish)", 2268 "unset 2px", 2269 "2px unset", 2270 ], 2271 }, 2272 "border-top-right-radius": { 2273 domProp: "borderTopRightRadius", 2274 inherited: false, 2275 type: CSS_TYPE_LONGHAND, 2276 applies_to_first_letter: true, 2277 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2278 initial_values: ["0", "0px", "calc(-2px)"], 2279 other_values: [ 2280 "0%", 2281 "3%", 2282 "1px", 2283 "2em", // circular 2284 "3% 2%", 2285 "1px 4px", 2286 "2em 2pt", // elliptical 2287 "calc(-1%)", 2288 "calc(2px)", 2289 "calc(50%)", 2290 "calc(3*25px)", 2291 "calc(3*25px) 5px", 2292 "5px calc(3*25px)", 2293 "calc(20%) calc(3*25px)", 2294 "calc(25px*3)", 2295 "calc(3*25px + 50%)", 2296 ], 2297 invalid_values: [ 2298 "-1px", 2299 "4px -2px", 2300 "inherit 2px", 2301 "2px inherit", 2302 "2", 2303 "2px 2", 2304 "2 2px", 2305 "2px calc(0px + rubbish)", 2306 "unset 2px", 2307 "2px unset", 2308 ], 2309 }, 2310 "border-start-start-radius": { 2311 domProp: "borderStartStartRadius", 2312 inherited: false, 2313 type: CSS_TYPE_LONGHAND, 2314 applies_to_first_letter: true, 2315 logical: true, 2316 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2317 initial_values: ["0", "0px", "calc(-2px)"], 2318 other_values: [ 2319 "0%", 2320 "3%", 2321 "1px", 2322 "2em", // circular 2323 "3% 2%", 2324 "1px 4px", 2325 "2em 2pt", // elliptical 2326 "calc(-1%)", 2327 "calc(2px)", 2328 "calc(50%)", 2329 "calc(3*25px)", 2330 "calc(3*25px) 5px", 2331 "5px calc(3*25px)", 2332 "calc(20%) calc(3*25px)", 2333 "calc(25px*3)", 2334 "calc(3*25px + 50%)", 2335 ], 2336 invalid_values: [ 2337 "-1px", 2338 "4px -2px", 2339 "inherit 2px", 2340 "2px inherit", 2341 "2", 2342 "2px 2", 2343 "2 2px", 2344 "2px calc(0px + rubbish)", 2345 "unset 2px", 2346 "2px unset", 2347 ], 2348 }, 2349 "border-start-end-radius": { 2350 domProp: "borderStartEndRadius", 2351 inherited: false, 2352 type: CSS_TYPE_LONGHAND, 2353 applies_to_first_letter: true, 2354 logical: true, 2355 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2356 initial_values: ["0", "0px", "calc(-2px)"], 2357 other_values: [ 2358 "0%", 2359 "3%", 2360 "1px", 2361 "2em", // circular 2362 "3% 2%", 2363 "1px 4px", 2364 "2em 2pt", // elliptical 2365 "calc(-1%)", 2366 "calc(2px)", 2367 "calc(50%)", 2368 "calc(3*25px)", 2369 "calc(3*25px) 5px", 2370 "5px calc(3*25px)", 2371 "calc(20%) calc(3*25px)", 2372 "calc(25px*3)", 2373 "calc(3*25px + 50%)", 2374 ], 2375 invalid_values: [ 2376 "-1px", 2377 "4px -2px", 2378 "inherit 2px", 2379 "2px inherit", 2380 "2", 2381 "2px 2", 2382 "2 2px", 2383 "2px calc(0px + rubbish)", 2384 "unset 2px", 2385 "2px unset", 2386 ], 2387 }, 2388 "border-end-start-radius": { 2389 domProp: "borderEndStartRadius", 2390 inherited: false, 2391 type: CSS_TYPE_LONGHAND, 2392 applies_to_first_letter: true, 2393 logical: true, 2394 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2395 initial_values: ["0", "0px", "calc(-2px)"], 2396 other_values: [ 2397 "0%", 2398 "3%", 2399 "1px", 2400 "2em", // circular 2401 "3% 2%", 2402 "1px 4px", 2403 "2em 2pt", // elliptical 2404 "calc(-1%)", 2405 "calc(2px)", 2406 "calc(50%)", 2407 "calc(3*25px)", 2408 "calc(3*25px) 5px", 2409 "5px calc(3*25px)", 2410 "calc(20%) calc(3*25px)", 2411 "calc(25px*3)", 2412 "calc(3*25px + 50%)", 2413 ], 2414 invalid_values: [ 2415 "-1px", 2416 "4px -2px", 2417 "inherit 2px", 2418 "2px inherit", 2419 "2", 2420 "2px 2", 2421 "2 2px", 2422 "2px calc(0px + rubbish)", 2423 "unset 2px", 2424 "2px unset", 2425 ], 2426 }, 2427 "border-end-end-radius": { 2428 domProp: "borderEndEndRadius", 2429 inherited: false, 2430 type: CSS_TYPE_LONGHAND, 2431 applies_to_first_letter: true, 2432 logical: true, 2433 prerequisites: { width: "200px", height: "100px", display: "inline-block" }, 2434 initial_values: ["0", "0px", "calc(-2px)"], 2435 other_values: [ 2436 "0%", 2437 "3%", 2438 "1px", 2439 "2em", // circular 2440 "3% 2%", 2441 "1px 4px", 2442 "2em 2pt", // elliptical 2443 "calc(-1%)", 2444 "calc(2px)", 2445 "calc(50%)", 2446 "calc(3*25px)", 2447 "calc(3*25px) 5px", 2448 "5px calc(3*25px)", 2449 "calc(20%) calc(3*25px)", 2450 "calc(25px*3)", 2451 "calc(3*25px + 50%)", 2452 ], 2453 invalid_values: [ 2454 "-1px", 2455 "4px -2px", 2456 "inherit 2px", 2457 "2px inherit", 2458 "2", 2459 "2px 2", 2460 "2 2px", 2461 "2px calc(0px + rubbish)", 2462 "unset 2px", 2463 "2px unset", 2464 ], 2465 }, 2466 "border-inline-start": { 2467 domProp: "borderInlineStart", 2468 inherited: false, 2469 type: CSS_TYPE_TRUE_SHORTHAND, 2470 subproperties: [ 2471 "border-inline-start-color", 2472 "border-inline-start-style", 2473 "border-inline-start-width", 2474 ], 2475 initial_values: [ 2476 "none", 2477 "medium", 2478 "currentColor", 2479 "thin", 2480 "none medium currentcolor", 2481 ], 2482 other_values: [ 2483 "solid", 2484 "green", 2485 "medium solid", 2486 "green solid", 2487 "10px solid", 2488 "thick solid", 2489 "5px green none", 2490 ], 2491 invalid_values: ["5%", "5", "5 green solid"], 2492 }, 2493 "border-inline-start-color": { 2494 domProp: "borderInlineStartColor", 2495 inherited: false, 2496 type: CSS_TYPE_LONGHAND, 2497 applies_to_first_letter: true, 2498 logical: true, 2499 initial_values: ["currentColor"], 2500 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 2501 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000", "000000"], 2502 }, 2503 "border-inline-start-style": { 2504 domProp: "borderInlineStartStyle", 2505 inherited: false, 2506 type: CSS_TYPE_LONGHAND, 2507 applies_to_first_letter: true, 2508 logical: true, 2509 /* XXX hidden is sometimes the same as initial */ 2510 initial_values: ["none"], 2511 other_values: [ 2512 "solid", 2513 "dashed", 2514 "dotted", 2515 "double", 2516 "outset", 2517 "inset", 2518 "groove", 2519 "ridge", 2520 ], 2521 invalid_values: [], 2522 }, 2523 "border-inline-start-width": { 2524 domProp: "borderInlineStartWidth", 2525 inherited: false, 2526 type: CSS_TYPE_LONGHAND, 2527 applies_to_first_letter: true, 2528 logical: true, 2529 prerequisites: { "border-inline-start-style": "solid" }, 2530 initial_values: ["medium", "3px", "calc(4px - 1px)"], 2531 other_values: [ 2532 "thin", 2533 "thick", 2534 "1px", 2535 "2em", 2536 "calc(2px)", 2537 "calc(-2px)", 2538 "calc(0em)", 2539 "calc(0px)", 2540 "calc(5em)", 2541 "calc(3*25px)", 2542 "calc(25px*3)", 2543 "calc(3*25px + 5em)", 2544 ], 2545 invalid_values: ["5%", "5", "stretch"], 2546 }, 2547 "-moz-box-align": { 2548 domProp: "MozBoxAlign", 2549 inherited: false, 2550 type: CSS_TYPE_LONGHAND, 2551 initial_values: ["stretch"], 2552 other_values: ["start", "center", "baseline", "end"], 2553 invalid_values: [], 2554 }, 2555 "-moz-box-direction": { 2556 domProp: "MozBoxDirection", 2557 inherited: false, 2558 type: CSS_TYPE_LONGHAND, 2559 initial_values: ["normal"], 2560 other_values: ["reverse"], 2561 invalid_values: [], 2562 }, 2563 "-moz-box-flex": { 2564 domProp: "MozBoxFlex", 2565 inherited: false, 2566 type: CSS_TYPE_LONGHAND, 2567 initial_values: ["0", "0.0", "-0.0"], 2568 other_values: ["1", "100", "0.1"], 2569 invalid_values: ["10px", "-1"], 2570 }, 2571 "-moz-box-ordinal-group": { 2572 domProp: "MozBoxOrdinalGroup", 2573 inherited: false, 2574 type: CSS_TYPE_LONGHAND, 2575 initial_values: ["1"], 2576 other_values: ["2", "100", "0"], 2577 invalid_values: ["1.0", "-1", "-1000"], 2578 }, 2579 "-moz-box-orient": { 2580 domProp: "MozBoxOrient", 2581 inherited: false, 2582 type: CSS_TYPE_LONGHAND, 2583 initial_values: ["horizontal", "inline-axis"], 2584 other_values: ["vertical", "block-axis"], 2585 invalid_values: [], 2586 }, 2587 "-moz-box-pack": { 2588 domProp: "MozBoxPack", 2589 inherited: false, 2590 type: CSS_TYPE_LONGHAND, 2591 initial_values: ["start"], 2592 other_values: ["center", "end", "justify"], 2593 invalid_values: [], 2594 }, 2595 "box-decoration-break": { 2596 domProp: "boxDecorationBreak", 2597 inherited: false, 2598 type: CSS_TYPE_LONGHAND, 2599 initial_values: ["slice"], 2600 other_values: ["clone"], 2601 invalid_values: ["auto", "none", "1px"], 2602 }, 2603 "box-sizing": { 2604 domProp: "boxSizing", 2605 inherited: false, 2606 type: CSS_TYPE_LONGHAND, 2607 initial_values: ["content-box"], 2608 other_values: ["border-box"], 2609 invalid_values: [ 2610 "padding-box", 2611 "margin-box", 2612 "content", 2613 "padding", 2614 "border", 2615 "margin", 2616 ], 2617 }, 2618 "-moz-box-sizing": { 2619 domProp: "MozBoxSizing", 2620 inherited: false, 2621 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 2622 alias_for: "box-sizing", 2623 subproperties: ["box-sizing"], 2624 }, 2625 "print-color-adjust": { 2626 domProp: "printColorAdjust", 2627 inherited: true, 2628 type: CSS_TYPE_LONGHAND, 2629 initial_values: ["economy"], 2630 other_values: ["exact"], 2631 invalid_values: [], 2632 }, 2633 "color-adjust": { 2634 domProp: "colorAdjust", 2635 inherited: true, 2636 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 2637 alias_for: "print-color-adjust", 2638 subproperties: ["print-color-adjust"], 2639 }, 2640 "color-scheme": { 2641 domProp: "colorScheme", 2642 inherited: true, 2643 type: CSS_TYPE_LONGHAND, 2644 initial_values: ["normal"], 2645 other_values: [ 2646 "light", 2647 "dark", 2648 "light dark", 2649 "light dark purple", 2650 "light light dark", 2651 "only light", 2652 "only light dark", 2653 "only light dark purple", 2654 "light only", 2655 ], 2656 invalid_values: ["only normal", "normal only", "only light only"], 2657 }, 2658 columns: { 2659 domProp: "columns", 2660 inherited: false, 2661 type: CSS_TYPE_TRUE_SHORTHAND, 2662 subproperties: ["column-count", "column-width"], 2663 initial_values: ["auto", "auto auto"], 2664 other_values: [ 2665 "3", 2666 "20px", 2667 "2 10px", 2668 "10px 2", 2669 "2 auto", 2670 "auto 2", 2671 "auto 50px", 2672 "50px auto", 2673 ], 2674 invalid_values: [ 2675 "stretch", 2676 "5%", 2677 "-1px", 2678 "-1", 2679 "3 5", 2680 "10px 4px", 2681 "10 2px 5in", 2682 "30px -1", 2683 "auto 3 5px", 2684 "5 auto 20px", 2685 "auto auto auto", 2686 "calc(50px + rubbish) 2", 2687 ], 2688 }, 2689 "column-count": { 2690 domProp: "columnCount", 2691 inherited: false, 2692 type: CSS_TYPE_LONGHAND, 2693 initial_values: ["auto"], 2694 other_values: ["1", "17"], 2695 // negative and zero invalid per editor's draft 2696 invalid_values: ["-1", "0", "3px"], 2697 }, 2698 "column-fill": { 2699 domProp: "columnFill", 2700 inherited: false, 2701 type: CSS_TYPE_LONGHAND, 2702 initial_values: ["balance"], 2703 other_values: ["auto"], 2704 invalid_values: ["2px", "dotted", "5em"], 2705 }, 2706 "column-rule": { 2707 domProp: "columnRule", 2708 inherited: false, 2709 type: CSS_TYPE_TRUE_SHORTHAND, 2710 prerequisites: { color: "green" }, 2711 subproperties: [ 2712 "column-rule-width", 2713 "column-rule-style", 2714 "column-rule-color", 2715 ], 2716 initial_values: [ 2717 "medium none currentColor", 2718 "none", 2719 "medium", 2720 "currentColor", 2721 ], 2722 other_values: [ 2723 "2px blue solid", 2724 "red dotted 1px", 2725 "ridge 4px orange", 2726 "5px solid", 2727 ], 2728 invalid_values: [ 2729 "2px 3px 4px red", 2730 "dotted dashed", 2731 "5px dashed green 3px", 2732 "5 solid", 2733 "5 green solid", 2734 ], 2735 }, 2736 "column-rule-width": { 2737 domProp: "columnRuleWidth", 2738 inherited: false, 2739 type: CSS_TYPE_LONGHAND, 2740 prerequisites: { "column-rule-style": "solid" }, 2741 initial_values: ["medium", "3px", "calc(3px)", "calc(5em + 3px - 5em)"], 2742 other_values: [ 2743 "thin", 2744 "15px", 2745 /* valid calc() values */ 2746 "calc(-2px)", 2747 "calc(2px)", 2748 "calc(3em)", 2749 "calc(3em + 2px)", 2750 "calc( 3em + 2px)", 2751 "calc(3em + 2px )", 2752 "calc( 3em + 2px )", 2753 "calc(3*25px)", 2754 "calc(3 *25px)", 2755 "calc(3 * 25px)", 2756 "calc(3* 25px)", 2757 "calc(25px*3)", 2758 "calc(25px *3)", 2759 "calc(25px* 3)", 2760 "calc(25px * 3)", 2761 "calc(25px * 3 / 4)", 2762 "calc((25px * 3) / 4)", 2763 "calc(25px * (3 / 4))", 2764 "calc(3 * 25px / 4)", 2765 "calc((3 * 25px) / 4)", 2766 "calc(3 * (25px / 4))", 2767 "calc(3em + 25px * 3 / 4)", 2768 "calc(3em + (25px * 3) / 4)", 2769 "calc(3em + 25px * (3 / 4))", 2770 "calc(25px * 3 / 4 + 3em)", 2771 "calc((25px * 3) / 4 + 3em)", 2772 "calc(25px * (3 / 4) + 3em)", 2773 "calc(3em + (25px * 3 / 4))", 2774 "calc(3em + ((25px * 3) / 4))", 2775 "calc(3em + (25px * (3 / 4)))", 2776 "calc((25px * 3 / 4) + 3em)", 2777 "calc(((25px * 3) / 4) + 3em)", 2778 "calc((25px * (3 / 4)) + 3em)", 2779 "calc(3*25px + 1in)", 2780 "calc(1in - 3em + 2px)", 2781 "calc(1in - (3em + 2px))", 2782 "calc((1in - 3em) + 2px)", 2783 "calc(50px/2)", 2784 "calc(50px/(2 - 1))", 2785 "calc(-3px)", 2786 /* numeric reduction cases */ 2787 "calc(5 * 3 * 2em)", 2788 "calc(2em * 5 * 3)", 2789 "calc((5 * 3) * 2em)", 2790 "calc(2em * (5 * 3))", 2791 "calc((5 + 3) * 2em)", 2792 "calc(2em * (5 + 3))", 2793 "calc(2em / (5 + 3))", 2794 "calc(2em * (5*2 + 3))", 2795 "calc(2em * ((5*2) + 3))", 2796 "calc(2em * (5*(2 + 3)))", 2797 2798 "calc((5 + 7) * 3em)", 2799 "calc((5em + 3em) - 2em)", 2800 "calc((5em - 3em) + 2em)", 2801 "calc(2em - (5em - 3em))", 2802 "calc(2em + (5em - 3em))", 2803 "calc(2em - (5em + 3em))", 2804 "calc(2em + (5em + 3em))", 2805 "calc(2em + 5em - 3em)", 2806 "calc(2em - 5em - 3em)", 2807 "calc(2em + 5em + 3em)", 2808 "calc(2em - 5em + 3em)", 2809 2810 "calc(2em / 4 * 3)", 2811 "calc(2em * 4 / 3)", 2812 "calc(2em * 4 * 3)", 2813 "calc(2em / 4 / 3)", 2814 "calc(4 * 2em / 3)", 2815 "calc(4 / 3 * 2em)", 2816 2817 "calc((2em / 4) * 3)", 2818 "calc((2em * 4) / 3)", 2819 "calc((2em * 4) * 3)", 2820 "calc((2em / 4) / 3)", 2821 "calc((4 * 2em) / 3)", 2822 "calc((4 / 3) * 2em)", 2823 2824 "calc(2em / (4 * 3))", 2825 "calc(2em * (4 / 3))", 2826 "calc(2em * (4 * 3))", 2827 "calc(2em / (4 / 3))", 2828 "calc(4 * (2em / 3))", 2829 2830 "min(5px)", 2831 "min(5px,2em)", 2832 2833 "max(5px)", 2834 "max(5px,2em)", 2835 2836 "calc(min(5px))", 2837 "calc(min(5px,2em))", 2838 2839 "calc(max(5px))", 2840 "calc(max(5px,2em))", 2841 2842 // Valid cases with unitless zero (which is never 2843 // a length). 2844 "calc(0 * 2em)", 2845 "calc(2em * 0)", 2846 "calc(3em + 0 * 2em)", 2847 "calc(3em + 2em * 0)", 2848 "calc((0 + 2) * 2em)", 2849 "calc((2 + 0) * 2em)", 2850 // And test zero lengths while we're here. 2851 "calc(2 * 0px)", 2852 "calc(0 * 0px)", 2853 "calc(2 * 0em)", 2854 "calc(0 * 0em)", 2855 "calc(0px * 0)", 2856 "calc(0px * 2)", 2857 ], 2858 invalid_values: [ 2859 "stretch", 2860 "20", 2861 "-1px", 2862 "red", 2863 "50%", 2864 /* invalid calc() values */ 2865 "calc(2em+ 2px)", 2866 "calc(2em +2px)", 2867 "calc(2em+2px)", 2868 "calc(2em- 2px)", 2869 "calc(2em -2px)", 2870 "calc(2em-2px)", 2871 "-moz-min()", 2872 "calc(min())", 2873 "-moz-max()", 2874 "calc(max())", 2875 "-moz-min(5px)", 2876 "-moz-max(5px)", 2877 "-moz-min(5px,2em)", 2878 "-moz-max(5px,2em)", 2879 "calc(5 + 5)", 2880 "calc(5 * 5)", 2881 "calc(5em * 5em)", 2882 "calc(5em / 5em * 5em)", 2883 2884 "calc(4 * 3 / 2em)", 2885 "calc((4 * 3) / 2em)", 2886 "calc(4 * (3 / 2em))", 2887 "calc(4 / (3 * 2em))", 2888 2889 // Tests for handling of unitless zero, which cannot 2890 // be a length inside calc(). 2891 "calc(0)", 2892 "calc(0 + 2em)", 2893 "calc(2em + 0)", 2894 "calc(0 * 2)", 2895 "calc(2 * 0)", 2896 "calc(1 * (2em + 0))", 2897 "calc((2em + 0))", 2898 "calc((2em + 0) * 1)", 2899 "calc(1 * (0 + 2em))", 2900 "calc((0 + 2em))", 2901 "calc((0 + 2em) * 1)", 2902 ], 2903 }, 2904 "column-rule-style": { 2905 domProp: "columnRuleStyle", 2906 inherited: false, 2907 type: CSS_TYPE_LONGHAND, 2908 initial_values: ["none"], 2909 other_values: [ 2910 "solid", 2911 "hidden", 2912 "ridge", 2913 "groove", 2914 "inset", 2915 "outset", 2916 "double", 2917 "dotted", 2918 "dashed", 2919 ], 2920 invalid_values: ["20", "foo"], 2921 }, 2922 "column-rule-color": { 2923 domProp: "columnRuleColor", 2924 inherited: false, 2925 type: CSS_TYPE_LONGHAND, 2926 prerequisites: { color: "green" }, 2927 initial_values: ["currentColor"], 2928 other_values: ["red", "blue", "#ffff00"], 2929 invalid_values: ["ffff00"], 2930 }, 2931 "column-span": { 2932 domProp: "columnSpan", 2933 inherited: false, 2934 type: CSS_TYPE_LONGHAND, 2935 initial_values: ["none"], 2936 other_values: ["all"], 2937 invalid_values: ["-1", "0", "auto", "2px"], 2938 }, 2939 "column-width": { 2940 domProp: "columnWidth", 2941 inherited: false, 2942 type: CSS_TYPE_LONGHAND, 2943 initial_values: ["auto"], 2944 other_values: [ 2945 "15px", 2946 "calc(15px)", 2947 "calc(30px - 3em)", 2948 "calc(-15px)", 2949 "0px", 2950 "calc(0px)", 2951 ], 2952 invalid_values: ["20", "-1px", "50%", "stretch"], 2953 }, 2954 "container-type": { 2955 domProp: "containerType", 2956 inherited: false, 2957 type: CSS_TYPE_LONGHAND, 2958 initial_values: ["normal"], 2959 other_values: ["inline-size", "size"], // see also "layout.css.scroll-state.enabled" in this file 2960 invalid_values: [ 2961 // invalid values should always be invalid 2962 "none style", 2963 "none inline-size", 2964 "inline-size none", 2965 "style none", 2966 "style style", 2967 "inline-size style inline-size", 2968 "inline-size normal inline-size", 2969 "inline-size block-size", 2970 "block-size", 2971 "block-size style", 2972 "size inline-size", 2973 "size block-size", 2974 "size normal", 2975 "normal size", 2976 "inline-size normal", 2977 "normal inline-size", 2978 "scroll-state normal", 2979 "normal scroll-state", 2980 ], 2981 }, 2982 "container-name": { 2983 domProp: "containerName", 2984 inherited: false, 2985 type: CSS_TYPE_LONGHAND, 2986 initial_values: ["none"], 2987 other_values: ["foo bar", "foo", "baz bazz", "foo foo"], 2988 invalid_values: ["foo unset", "none bar", "foo initial", "initial foo"], 2989 }, 2990 container: { 2991 domProp: "container", 2992 inherited: false, 2993 type: CSS_TYPE_TRUE_SHORTHAND, 2994 subproperties: ["container-type", "container-name"], 2995 initial_values: ["none"], 2996 other_values: ["foo / size", "foo bar / size", "foo / inline-size", "foo"], 2997 invalid_values: ["size / foo", "size / foo bar"], 2998 }, 2999 d: { 3000 domProp: "d", 3001 inherited: false, 3002 type: CSS_TYPE_LONGHAND, 3003 initial_values: ["none"], 3004 other_values: ["path('')", "path(' ')"].concat(pathValues.other_values), 3005 invalid_values: pathValues.invalid_values, 3006 }, 3007 "-moz-float-edge": { 3008 domProp: "MozFloatEdge", 3009 inherited: false, 3010 type: CSS_TYPE_LONGHAND, 3011 initial_values: ["content-box"], 3012 other_values: ["margin-box"], 3013 invalid_values: ["content", "padding", "border", "margin"], 3014 }, 3015 "-moz-force-broken-image-icon": { 3016 domProp: "MozForceBrokenImageIcon", 3017 inherited: false, 3018 type: CSS_TYPE_LONGHAND, 3019 initial_values: ["0"], 3020 other_values: ["1"], 3021 invalid_values: [], 3022 }, 3023 "margin-inline": { 3024 domProp: "marginInline", 3025 inherited: false, 3026 type: CSS_TYPE_TRUE_SHORTHAND, 3027 subproperties: ["margin-inline-start", "margin-inline-end"], 3028 initial_values: ["0", "0px 0em"], 3029 other_values: [ 3030 "1px", 3031 "3em 1%", 3032 "5%", 3033 "calc(2px) 1%", 3034 "calc(-2px) 1%", 3035 "calc(50%) 1%", 3036 "calc(3*25px) calc(2px)", 3037 "calc(25px*3) 1em", 3038 "calc(3*25px + 50%) calc(3*25px - 50%)", 3039 ], 3040 invalid_values: [ 3041 "5", 3042 "..25px", 3043 ".+5px", 3044 ".px", 3045 "-.px", 3046 "++5px", 3047 "-+4px", 3048 "+-3px", 3049 "--7px", 3050 "+-.6px", 3051 "-+.5px", 3052 "++.7px", 3053 "--.4px", 3054 ], 3055 }, 3056 "margin-inline-end": { 3057 domProp: "marginInlineEnd", 3058 inherited: false, 3059 type: CSS_TYPE_LONGHAND, 3060 applies_to_first_letter: true, 3061 logical: true, 3062 /* no subproperties */ 3063 /* auto may or may not be initial */ 3064 initial_values: [ 3065 "0", 3066 "0px", 3067 "0%", 3068 "0em", 3069 "0ex", 3070 "calc(0pt)", 3071 "calc(0% + 0px)", 3072 ], 3073 other_values: [ 3074 "1px", 3075 "3em", 3076 "5%", 3077 "calc(2px)", 3078 "calc(-2px)", 3079 "calc(50%)", 3080 "calc(3*25px)", 3081 "calc(25px*3)", 3082 "calc(3*25px + 50%)", 3083 ], 3084 invalid_values: [ 3085 "stretch", 3086 "5", 3087 "..25px", 3088 ".+5px", 3089 ".px", 3090 "-.px", 3091 "++5px", 3092 "-+4px", 3093 "+-3px", 3094 "--7px", 3095 "+-.6px", 3096 "-+.5px", 3097 "++.7px", 3098 "--.4px", 3099 ], 3100 }, 3101 "margin-inline-start": { 3102 domProp: "marginInlineStart", 3103 inherited: false, 3104 type: CSS_TYPE_LONGHAND, 3105 applies_to_first_letter: true, 3106 logical: true, 3107 /* no subproperties */ 3108 /* auto may or may not be initial */ 3109 initial_values: [ 3110 "0", 3111 "0px", 3112 "0%", 3113 "0em", 3114 "0ex", 3115 "calc(0pt)", 3116 "calc(0% + 0px)", 3117 ], 3118 other_values: [ 3119 "1px", 3120 "3em", 3121 "5%", 3122 "calc(2px)", 3123 "calc(-2px)", 3124 "calc(50%)", 3125 "calc(3*25px)", 3126 "calc(25px*3)", 3127 "calc(3*25px + 50%)", 3128 ], 3129 invalid_values: [ 3130 "5", 3131 "..25px", 3132 ".+5px", 3133 ".px", 3134 "-.px", 3135 "++5px", 3136 "-+4px", 3137 "+-3px", 3138 "--7px", 3139 "+-.6px", 3140 "-+.5px", 3141 "++.7px", 3142 "--.4px", 3143 ], 3144 }, 3145 mask: { 3146 domProp: "mask", 3147 inherited: false, 3148 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 3149 /* FIXME: All mask-border-* should be added when we implement them. */ 3150 subproperties: [ 3151 "mask-clip", 3152 "mask-image", 3153 "mask-mode", 3154 "mask-origin", 3155 "mask-position-x", 3156 "mask-position-y", 3157 "mask-repeat", 3158 "mask-size", 3159 "mask-composite", 3160 ], 3161 initial_values: [ 3162 "match-source", 3163 "none", 3164 "repeat", 3165 "add", 3166 "0% 0%", 3167 "top left", 3168 "0% 0% / auto", 3169 "top left / auto", 3170 "left top / auto", 3171 "0% 0% / auto auto", 3172 "top left none", 3173 "left top none", 3174 "none left top", 3175 "none top left", 3176 "none 0% 0%", 3177 "top left / auto none", 3178 "left top / auto none", 3179 "top left / auto auto none", 3180 "match-source none repeat add top left", 3181 "top left repeat none add", 3182 "none repeat add top left / auto", 3183 "top left / auto repeat none add match-source", 3184 "none repeat add 0% 0% / auto auto match-source", 3185 "border-box", 3186 "border-box border-box", 3187 ], 3188 other_values: [ 3189 "none alpha repeat add left top", 3190 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 3191 "no-repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==') alpha left top add", 3192 "repeat-x", 3193 "repeat-y", 3194 "no-repeat", 3195 "none repeat-y alpha add 0% 0%", 3196 "subtract", 3197 "0% top subtract alpha repeat none", 3198 "top", 3199 "left", 3200 "50% 50%", 3201 "center", 3202 "top / 100px", 3203 "left / contain", 3204 "left / cover", 3205 "10px / 10%", 3206 "10em / calc(20px)", 3207 "top left / 100px 100px", 3208 "top left / 100px auto", 3209 "top left / 100px 10%", 3210 "top left / 100px calc(20px)", 3211 "bottom right add none alpha repeat", 3212 "50% alpha", 3213 "alpha 50%", 3214 "50%", 3215 "url(#mymask)", 3216 "radial-gradient(at 10% bottom, #ffffff, black) add no-repeat", 3217 "repeating-radial-gradient(at 10% bottom, #ffffff, black) no-repeat", 3218 "-moz-element(#test) alpha", 3219 /* multiple mask-image */ 3220 "url(404.png), url(404.png)", 3221 "repeat-x, subtract, none", 3222 "0% top url(404.png), url(404.png) 50% top", 3223 "subtract repeat-y top left url(404.png), repeat-x alpha", 3224 "top left / contain, bottom right / cover", 3225 /* test cases with clip+origin in the shorthand */ 3226 "url(404.png) alpha padding-box", 3227 "url(404.png) border-box alpha", 3228 "content-box url(404.png)", 3229 "url(404.png) alpha padding-box padding-box", 3230 "url(404.png) alpha padding-box border-box", 3231 "content-box border-box url(404.png)", 3232 "alpha padding-box url(404.png) border-box", 3233 "alpha padding-box url(404.png) padding-box", 3234 ], 3235 invalid_values: [ 3236 /* mixes with keywords have to be in correct order */ 3237 "50% left", 3238 "top 50%", 3239 /* no quirks mode colors */ 3240 "radial-gradient(at 10% bottom, ffffff, black) add no-repeat", 3241 /* no quirks mode lengths */ 3242 "linear-gradient(red -99, yellow, green, blue 120%)", 3243 /* bug 258080: don't accept background-position separated */ 3244 "left url(404.png) top", 3245 "top url(404.png) left", 3246 "-moz-element(#a rubbish)", 3247 "left top / match-source", 3248 ], 3249 }, 3250 "mask-clip": { 3251 domProp: "maskClip", 3252 inherited: false, 3253 type: CSS_TYPE_LONGHAND, 3254 initial_values: ["border-box"], 3255 other_values: [ 3256 "content-box", 3257 "fill-box", 3258 "stroke-box", 3259 "view-box", 3260 "no-clip", 3261 "padding-box", 3262 "border-box, padding-box", 3263 "padding-box, padding-box, padding-box", 3264 "border-box, border-box", 3265 ], 3266 invalid_values: ["content-box content-box", "margin-box"], 3267 }, 3268 "mask-composite": { 3269 domProp: "maskComposite", 3270 inherited: false, 3271 type: CSS_TYPE_LONGHAND, 3272 initial_values: ["add"], 3273 other_values: [ 3274 "subtract", 3275 "intersect", 3276 "exclude", 3277 "add, add", 3278 "subtract, intersect", 3279 "subtract, subtract, add", 3280 ], 3281 invalid_values: ["add subtract", "intersect exclude"], 3282 }, 3283 "mask-image": { 3284 domProp: "maskImage", 3285 inherited: false, 3286 type: CSS_TYPE_LONGHAND, 3287 initial_values: ["none"], 3288 other_values: [ 3289 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 3290 "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 3291 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 3292 "none, none", 3293 "none, none, none, none, none", 3294 "url(#mymask)", 3295 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none", 3296 "none, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none", 3297 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 3298 ].concat(validNonUrlImageValues), 3299 invalid_values: [].concat(invalidNonUrlImageValues), 3300 unbalanced_values: [].concat(unbalancedGradientAndElementValues), 3301 }, 3302 "mask-mode": { 3303 domProp: "maskMode", 3304 inherited: false, 3305 type: CSS_TYPE_LONGHAND, 3306 initial_values: ["match-source"], 3307 other_values: [ 3308 "alpha", 3309 "luminance", 3310 "match-source, match-source", 3311 "match-source, alpha", 3312 "alpha, luminance, match-source", 3313 ], 3314 invalid_values: ["match-source match-source", "alpha match-source"], 3315 }, 3316 "mask-origin": { 3317 domProp: "maskOrigin", 3318 inherited: false, 3319 type: CSS_TYPE_LONGHAND, 3320 initial_values: ["border-box"], 3321 other_values: [ 3322 "padding-box", 3323 "content-box", 3324 "fill-box", 3325 "stroke-box", 3326 "view-box", 3327 "border-box, padding-box", 3328 "padding-box, padding-box, padding-box", 3329 "border-box, border-box", 3330 ], 3331 invalid_values: ["padding-box padding-box", "no-clip", "margin-box"], 3332 }, 3333 "mask-position": { 3334 domProp: "maskPosition", 3335 inherited: false, 3336 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 3337 initial_values: [ 3338 "top 0% left 0%", 3339 "top left", 3340 "left top", 3341 "0% 0%", 3342 "0% top", 3343 "left 0%", 3344 ], 3345 other_values: [ 3346 "top", 3347 "left", 3348 "right", 3349 "bottom", 3350 "center", 3351 "center bottom", 3352 "bottom center", 3353 "center right", 3354 "right center", 3355 "center top", 3356 "top center", 3357 "center left", 3358 "left center", 3359 "right bottom", 3360 "bottom right", 3361 "50%", 3362 "top left, top left", 3363 "top left, top right", 3364 "top right, top left", 3365 "left top, 0% 0%", 3366 "10% 20%, 30%, 40%", 3367 "top left, bottom right", 3368 "right bottom, left top", 3369 "0%", 3370 "0px", 3371 "30px", 3372 "0%, 10%, 20%, 30%", 3373 "top, top, top, top, top", 3374 "calc(20px)", 3375 "calc(20px) 10px", 3376 "10px calc(20px)", 3377 "calc(20px) 25%", 3378 "25% calc(20px)", 3379 "calc(20px) calc(20px)", 3380 "calc(20px + 1em) calc(20px / 2)", 3381 "calc(20px + 50%) calc(50% - 10px)", 3382 "calc(-20px) calc(-50%)", 3383 "calc(-20%) calc(-50%)", 3384 "0px 0px", 3385 "right 20px top 60px", 3386 "right 20px bottom 60px", 3387 "left 20px top 60px", 3388 "left 20px bottom 60px", 3389 "right -50px top -50px", 3390 "left -50px bottom -50px", 3391 "right 20px top -50px", 3392 "right -20px top 50px", 3393 "right 3em bottom 10px", 3394 "bottom 3em right 10px", 3395 "top 3em right 10px", 3396 "left 15px", 3397 "10px top", 3398 "left 20%", 3399 "right 20%", 3400 ], 3401 subproperties: ["mask-position-x", "mask-position-y"], 3402 invalid_values: [ 3403 "center 10px center 4px", 3404 "center 10px center", 3405 "top 20%", 3406 "bottom 20%", 3407 "50% left", 3408 "top 50%", 3409 "50% bottom 10%", 3410 "right 10% 50%", 3411 "left right", 3412 "top bottom", 3413 "left 10% right", 3414 "top 20px bottom 20px", 3415 "left left", 3416 "0px calc(0px + rubbish)", 3417 "left top 15px", 3418 "left 10px top", 3419 ], 3420 }, 3421 "mask-position-x": { 3422 domProp: "maskPositionX", 3423 inherited: false, 3424 type: CSS_TYPE_LONGHAND, 3425 initial_values: ["left", "0%"], 3426 other_values: [ 3427 "right", 3428 "center", 3429 "50%", 3430 "center, center", 3431 "center, right", 3432 "right, center", 3433 "center, 50%", 3434 "10%, 20%, 40%", 3435 "1px", 3436 "30px", 3437 "50%, 10%, 20%, 30%", 3438 "center, center, center, center, center", 3439 "calc(20px)", 3440 "calc(20px + 1em)", 3441 "calc(20px / 2)", 3442 "calc(20px + 50%)", 3443 "calc(50% - 10px)", 3444 "calc(-20px)", 3445 "calc(-50%)", 3446 "calc(-20%)", 3447 "right 20px", 3448 "left 20px", 3449 "right -50px", 3450 "left -50px", 3451 "right 20px", 3452 "right 3em", 3453 ], 3454 invalid_values: [ 3455 "center 10px", 3456 "right 10% 50%", 3457 "left right", 3458 "left left", 3459 "bottom 20px", 3460 "top 10%", 3461 "bottom 3em", 3462 "top", 3463 "bottom", 3464 "top, top", 3465 "top, bottom", 3466 "bottom, top", 3467 "top, 0%", 3468 "top, top, top, top, top", 3469 "calc(0px + rubbish)", 3470 "center 0%", 3471 ], 3472 }, 3473 "mask-position-y": { 3474 domProp: "maskPositionY", 3475 inherited: false, 3476 type: CSS_TYPE_LONGHAND, 3477 initial_values: ["top", "0%"], 3478 other_values: [ 3479 "bottom", 3480 "center", 3481 "50%", 3482 "center, center", 3483 "center, bottom", 3484 "bottom, center", 3485 "center, 0%", 3486 "10%, 20%, 40%", 3487 "1px", 3488 "30px", 3489 "50%, 10%, 20%, 30%", 3490 "center, center, center, center, center", 3491 "calc(20px)", 3492 "calc(20px + 1em)", 3493 "calc(20px / 2)", 3494 "calc(20px + 50%)", 3495 "calc(50% - 10px)", 3496 "calc(-20px)", 3497 "calc(-50%)", 3498 "calc(-20%)", 3499 "bottom 20px", 3500 "top 20px", 3501 "bottom -50px", 3502 "top -50px", 3503 "bottom 20px", 3504 "bottom 3em", 3505 ], 3506 invalid_values: [ 3507 "center 10px", 3508 "bottom 10% 50%", 3509 "top bottom", 3510 "top top", 3511 "right 20px", 3512 "left 10%", 3513 "right 3em", 3514 "left", 3515 "right", 3516 "left, left", 3517 "left, right", 3518 "right, left", 3519 "left, 0%", 3520 "left, left, left, left, left", 3521 "calc(0px + rubbish)", 3522 "center 0%", 3523 ], 3524 }, 3525 "mask-repeat": { 3526 domProp: "maskRepeat", 3527 inherited: false, 3528 type: CSS_TYPE_LONGHAND, 3529 initial_values: ["repeat", "repeat repeat"], 3530 other_values: [ 3531 "repeat-x", 3532 "repeat-y", 3533 "no-repeat", 3534 "repeat-x, repeat-x", 3535 "repeat, no-repeat", 3536 "repeat-y, no-repeat, repeat-y", 3537 "repeat, repeat, repeat", 3538 "repeat no-repeat", 3539 "no-repeat repeat", 3540 "no-repeat no-repeat", 3541 "repeat no-repeat", 3542 "no-repeat no-repeat, no-repeat no-repeat", 3543 ], 3544 invalid_values: [ 3545 "repeat repeat repeat", 3546 "repeat-x repeat-y", 3547 "repeat repeat-x", 3548 "repeat repeat-y", 3549 "repeat-x repeat", 3550 "repeat-y repeat", 3551 ], 3552 }, 3553 "mask-size": { 3554 domProp: "maskSize", 3555 inherited: false, 3556 type: CSS_TYPE_LONGHAND, 3557 initial_values: ["auto", "auto auto"], 3558 other_values: [ 3559 "contain", 3560 "cover", 3561 "100px auto", 3562 "auto 100px", 3563 "100% auto", 3564 "auto 100%", 3565 "25% 50px", 3566 "3em 40%", 3567 "calc(20px)", 3568 "calc(20px) 10px", 3569 "10px calc(20px)", 3570 "calc(20px) 25%", 3571 "25% calc(20px)", 3572 "calc(20px) calc(20px)", 3573 "calc(20px + 1em) calc(20px / 2)", 3574 "calc(20px + 50%) calc(50% - 10px)", 3575 "calc(-20px) calc(-50%)", 3576 "calc(-20%) calc(-50%)", 3577 ], 3578 invalid_values: [ 3579 "contain contain", 3580 "cover cover", 3581 "cover auto", 3582 "auto cover", 3583 "contain cover", 3584 "cover contain", 3585 "-5px 3px", 3586 "3px -5px", 3587 "auto -5px", 3588 "-5px auto", 3589 "5 3", 3590 "10px calc(10px + rubbish)", 3591 ], 3592 }, 3593 "mask-type": { 3594 domProp: "maskType", 3595 inherited: false, 3596 type: CSS_TYPE_LONGHAND, 3597 initial_values: ["luminance"], 3598 other_values: ["alpha"], 3599 invalid_values: [], 3600 }, 3601 "padding-inline-end": { 3602 domProp: "paddingInlineEnd", 3603 inherited: false, 3604 type: CSS_TYPE_LONGHAND, 3605 applies_to_first_letter: true, 3606 // No applies_to_placeholder because we have a !important rule in forms.css. 3607 logical: true, 3608 /* no subproperties */ 3609 initial_values: [ 3610 "0", 3611 "0px", 3612 "0%", 3613 "0em", 3614 "0ex", 3615 "calc(0pt)", 3616 "calc(0% + 0px)", 3617 "calc(-3px)", 3618 "calc(-1%)", 3619 ], 3620 other_values: [ 3621 "1px", 3622 "3em", 3623 "5%", 3624 "calc(2px)", 3625 "calc(50%)", 3626 "calc(3*25px)", 3627 "calc(25px*3)", 3628 "calc(3*25px + 50%)", 3629 ], 3630 invalid_values: ["5"], 3631 }, 3632 "padding-inline-start": { 3633 domProp: "paddingInlineStart", 3634 inherited: false, 3635 type: CSS_TYPE_LONGHAND, 3636 applies_to_first_letter: true, 3637 // No applies_to_placeholder because we have a !important rule in forms.css. 3638 logical: true, 3639 /* no subproperties */ 3640 initial_values: [ 3641 "0", 3642 "0px", 3643 "0%", 3644 "0em", 3645 "0ex", 3646 "calc(0pt)", 3647 "calc(0% + 0px)", 3648 "calc(-3px)", 3649 "calc(-1%)", 3650 ], 3651 other_values: [ 3652 "1px", 3653 "3em", 3654 "5%", 3655 "calc(2px)", 3656 "calc(50%)", 3657 "calc(3*25px)", 3658 "calc(25px*3)", 3659 "calc(3*25px + 50%)", 3660 ], 3661 invalid_values: ["5"], 3662 }, 3663 resize: { 3664 domProp: "resize", 3665 inherited: false, 3666 type: CSS_TYPE_LONGHAND, 3667 // No applies_to_placeholder because we have a !important rule in forms.css. 3668 prerequisites: { display: "block", overflow: "auto" }, 3669 initial_values: ["none"], 3670 other_values: ["both", "horizontal", "vertical", "inline", "block"], 3671 invalid_values: [], 3672 }, 3673 "tab-size": { 3674 domProp: "tabSize", 3675 inherited: true, 3676 type: CSS_TYPE_LONGHAND, 3677 initial_values: ["8"], 3678 other_values: [ 3679 "0", 3680 "2.5", 3681 "3", 3682 "99", 3683 "12000", 3684 "0px", 3685 "1em", 3686 "calc(1px + 1em)", 3687 "calc(1px - 2px)", 3688 "calc(1 + 1)", 3689 "calc(-2.5)", 3690 ], 3691 invalid_values: [ 3692 "9%", 3693 "calc(9% + 1px)", 3694 "calc(1 + 1em)", 3695 "-1", 3696 "-808", 3697 "auto", 3698 ], 3699 }, 3700 "-moz-text-size-adjust": { 3701 domProp: "MozTextSizeAdjust", 3702 inherited: true, 3703 type: CSS_TYPE_LONGHAND, 3704 initial_values: ["auto"], 3705 other_values: ["none"], 3706 invalid_values: ["-5%", "0", "100", "0%", "50%", "100%", "220.3%"], 3707 }, 3708 transform: { 3709 domProp: "transform", 3710 inherited: false, 3711 type: CSS_TYPE_LONGHAND, 3712 prerequisites: { width: "300px", height: "50px" }, 3713 initial_values: ["none"], 3714 other_values: [ 3715 "translatex(1px)", 3716 "translatex(4em)", 3717 "translatex(-4px)", 3718 "translatex(3px)", 3719 "translatex(0px) translatex(1px) translatex(2px) translatex(3px) translatex(4px)", 3720 "translatey(4em)", 3721 "translate(3px)", 3722 "translate(10px, -3px)", 3723 "rotate(45deg)", 3724 "rotate(45grad)", 3725 "rotate(45rad)", 3726 "rotate(0.25turn)", 3727 "rotate(0)", 3728 "scalex(10)", 3729 "scalex(10%)", 3730 "scalex(-10)", 3731 "scalex(-10%)", 3732 "scaley(10)", 3733 "scaley(10%)", 3734 "scaley(-10)", 3735 "scaley(-10%)", 3736 "scale(10)", 3737 "scale(10%)", 3738 "scale(10, 20)", 3739 "scale(10%, 20%)", 3740 "scale(-10)", 3741 "scale(-10%)", 3742 "scale(-10, 20)", 3743 "scale(10%, -20%)", 3744 "scale(10, 20%)", 3745 "scale(-10, 20%)", 3746 "skewx(30deg)", 3747 "skewx(0)", 3748 "skewy(0)", 3749 "skewx(30grad)", 3750 "skewx(30rad)", 3751 "skewx(0.08turn)", 3752 "skewy(30deg)", 3753 "skewy(30grad)", 3754 "skewy(30rad)", 3755 "skewy(0.08turn)", 3756 "rotate(45deg) scale(2, 1)", 3757 "skewx(45deg) skewx(-50grad)", 3758 "translate(0, 0) scale(1, 1) skewx(0) skewy(0) matrix(1, 0, 0, 1, 0, 0)", 3759 "translatex(50%)", 3760 "translatey(50%)", 3761 "translate(50%)", 3762 "translate(3%, 5px)", 3763 "translate(5px, 3%)", 3764 "matrix(1, 2, 3, 4, 5, 6)", 3765 /* valid calc() values */ 3766 "translatex(calc(5px + 10%))", 3767 "translatey(calc(0.25 * 5px + 10% / 3))", 3768 "translate(calc(5px - 10% * 3))", 3769 "translate(calc(5px - 3 * 10%), 50px)", 3770 "translate(-50px, calc(5px - 10% * 3))", 3771 "translate(10px, calc(min(5px,10%)))", 3772 "translate(calc(max(5px,10%)), 10%)", 3773 "translate(max(5px,10%), 10%)", 3774 "translatez(1px)", 3775 "translatez(4em)", 3776 "translatez(-4px)", 3777 "translatez(0px)", 3778 "translatez(2px) translatez(5px)", 3779 "translate3d(3px, 4px, 5px)", 3780 "translate3d(2em, 3px, 1em)", 3781 "translatex(2px) translate3d(4px, 5px, 6px) translatey(1px)", 3782 "scale3d(4, 4, 4)", 3783 "scale3d(4%, 4%, 4%)", 3784 "scale3d(-2, 3, -7)", 3785 "scale3d(-2%, 3%, -7%)", 3786 "scalez(4)", 3787 "scalez(4%)", 3788 "scalez(-6)", 3789 "scalez(-6%)", 3790 "rotate3d(2, 3, 4, 45deg)", 3791 "rotate3d(-3, 7, 0, 12rad)", 3792 "rotatex(15deg)", 3793 "rotatey(-12grad)", 3794 "rotatez(72rad)", 3795 "rotatex(0.125turn)", 3796 "rotate3d(0, 0, 0, 0rad)", 3797 "perspective(0px)", 3798 "perspective(1000px)", 3799 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)", 3800 ], 3801 invalid_values: [ 3802 "1px", 3803 "#0000ff", 3804 "red", 3805 "auto", 3806 "translatex(1)", 3807 "translatey(1)", 3808 "translate(2)", 3809 "translate(-3, -4)", 3810 "translatex(1px 1px)", 3811 "translatex(translatex(1px))", 3812 "translatex(#0000ff)", 3813 "translatex(red)", 3814 "translatey()", 3815 "matrix(1px, 2px, 3px, 4px, 5px, 6px)", 3816 "skewx(red)", 3817 "matrix(1%, 0, 0, 0, 0px, 0px)", 3818 "matrix(0, 1%, 2, 3, 4px,5px)", 3819 "matrix(0, 1, 2%, 3, 4px, 5px)", 3820 "matrix(0, 1, 2, 3%, 4%, 5%)", 3821 "matrix(1, 2, 3, 4, 5px, 6%)", 3822 "matrix(1, 2, 3, 4, 5%, 6px)", 3823 "matrix(1, 2, 3, 4, 5%, 6%)", 3824 "matrix(1, 2, 3, 4, 5px, 6em)", 3825 /* invalid calc() values */ 3826 "translatey(-moz-min(5px,10%))", 3827 "translatex(-moz-max(5px,10%))", 3828 "matrix(1, 0, 0, 1, max(5px * 3), calc(10% - 3px))", 3829 "perspective(-10px)", 3830 "matrix3d(dinosaur)", 3831 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)", 3832 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)", 3833 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15%, 16)", 3834 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16px)", 3835 "rotatey(words)", 3836 "rotatex(7)", 3837 "translate3d(3px, 4px, 1px, 7px)", 3838 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13px, 14em, 15px, 16)", 3839 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 20%, 10%, 15, 16)", 3840 ], 3841 }, 3842 "transform-box": { 3843 domProp: "transformBox", 3844 inherited: false, 3845 type: CSS_TYPE_LONGHAND, 3846 initial_values: ["view-box"], 3847 other_values: ["fill-box", "border-box", "content-box", "stroke-box"], 3848 invalid_values: ["padding-box", "margin-box"], 3849 }, 3850 "transform-origin": { 3851 domProp: "transformOrigin", 3852 inherited: false, 3853 type: CSS_TYPE_LONGHAND, 3854 /* no subproperties */ 3855 prerequisites: { width: "10px", height: "10px", display: "block" }, 3856 initial_values: ["50% 50%", "center", "center center"], 3857 other_values: [ 3858 "25% 25%", 3859 "6px 5px", 3860 "20% 3em", 3861 "0 0", 3862 "0in 1in", 3863 "top", 3864 "bottom", 3865 "top left", 3866 "top right", 3867 "top center", 3868 "center left", 3869 "center right", 3870 "bottom left", 3871 "bottom right", 3872 "bottom center", 3873 "20% center", 3874 "6px center", 3875 "13in bottom", 3876 "left 50px", 3877 "right 13%", 3878 "center 40px", 3879 "calc(20px)", 3880 "calc(20px) 10px", 3881 "10px calc(20px)", 3882 "calc(20px) 25%", 3883 "25% calc(20px)", 3884 "calc(20px) calc(20px)", 3885 "calc(20px + 1em) calc(20px / 2)", 3886 "calc(20px + 50%) calc(50% - 10px)", 3887 "calc(-20px) calc(-50%)", 3888 "calc(-20%) calc(-50%)", 3889 "6px 5px 5px", 3890 "top center 10px", 3891 ], 3892 invalid_values: [ 3893 "red", 3894 "auto", 3895 "none", 3896 "0.5 0.5", 3897 "40px #0000ff", 3898 "border", 3899 "center red", 3900 "right diagonal", 3901 "#00ffff bottom", 3902 "0px calc(0px + rubbish)", 3903 "0px 0px calc(0px + rubbish)", 3904 ], 3905 }, 3906 "perspective-origin": { 3907 domProp: "perspectiveOrigin", 3908 inherited: false, 3909 type: CSS_TYPE_LONGHAND, 3910 /* no subproperties */ 3911 prerequisites: { width: "10px", height: "10px", display: "block" }, 3912 initial_values: ["50% 50%", "center", "center center"], 3913 other_values: [ 3914 "25% 25%", 3915 "6px 5px", 3916 "20% 3em", 3917 "0 0", 3918 "0in 1in", 3919 "top", 3920 "bottom", 3921 "top left", 3922 "top right", 3923 "top center", 3924 "center left", 3925 "center right", 3926 "bottom left", 3927 "bottom right", 3928 "bottom center", 3929 "20% center", 3930 "6px center", 3931 "13in bottom", 3932 "left 50px", 3933 "right 13%", 3934 "center 40px", 3935 "calc(20px)", 3936 "calc(20px) 10px", 3937 "10px calc(20px)", 3938 "calc(20px) 25%", 3939 "25% calc(20px)", 3940 "calc(20px) calc(20px)", 3941 "calc(20px + 1em) calc(20px / 2)", 3942 "calc(20px + 50%) calc(50% - 10px)", 3943 "calc(-20px) calc(-50%)", 3944 "calc(-20%) calc(-50%)", 3945 ], 3946 invalid_values: [ 3947 "red", 3948 "auto", 3949 "none", 3950 "0.5 0.5", 3951 "40px #0000ff", 3952 "border", 3953 "center red", 3954 "right diagonal", 3955 "#00ffff bottom", 3956 ], 3957 }, 3958 perspective: { 3959 domProp: "perspective", 3960 inherited: false, 3961 type: CSS_TYPE_LONGHAND, 3962 initial_values: ["none"], 3963 other_values: ["1000px", "500.2px", "0", "0px"], 3964 invalid_values: ["pants", "200", "-100px", "-27.2em"], 3965 }, 3966 "backface-visibility": { 3967 domProp: "backfaceVisibility", 3968 inherited: false, 3969 type: CSS_TYPE_LONGHAND, 3970 initial_values: ["visible"], 3971 other_values: ["hidden"], 3972 invalid_values: ["collapse"], 3973 }, 3974 "transform-style": { 3975 domProp: "transformStyle", 3976 inherited: false, 3977 type: CSS_TYPE_LONGHAND, 3978 initial_values: ["flat"], 3979 other_values: ["preserve-3d"], 3980 invalid_values: [], 3981 }, 3982 "-moz-user-select": { 3983 domProp: "MozUserSelect", 3984 inherited: false, 3985 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 3986 alias_for: "user-select", 3987 subproperties: ["user-select"], 3988 }, 3989 "user-select": { 3990 domProp: "userSelect", 3991 inherited: false, 3992 type: CSS_TYPE_LONGHAND, 3993 initial_values: ["auto"], 3994 other_values: ["none", "text", "all", "-moz-none"], 3995 invalid_values: [], 3996 }, 3997 background: { 3998 domProp: "background", 3999 inherited: false, 4000 type: CSS_TYPE_TRUE_SHORTHAND, 4001 subproperties: [ 4002 "background-attachment", 4003 "background-color", 4004 "background-image", 4005 "background-position-x", 4006 "background-position-y", 4007 "background-repeat", 4008 "background-clip", 4009 "background-origin", 4010 "background-size", 4011 ], 4012 initial_values: [ 4013 "transparent", 4014 "none", 4015 "repeat", 4016 "scroll", 4017 "0% 0%", 4018 "top left", 4019 "left top", 4020 "0% 0% / auto", 4021 "top left / auto", 4022 "left top / auto", 4023 "0% 0% / auto auto", 4024 "transparent none", 4025 "top left none", 4026 "left top none", 4027 "none left top", 4028 "none top left", 4029 "none 0% 0%", 4030 "left top / auto none", 4031 "left top / auto auto none", 4032 "transparent none repeat scroll top left", 4033 "left top repeat none scroll transparent", 4034 "transparent none repeat scroll top left / auto", 4035 "left top / auto repeat none scroll transparent", 4036 "none repeat scroll 0% 0% / auto auto transparent", 4037 "padding-box border-box", 4038 ], 4039 other_values: [ 4040 /* without multiple backgrounds */ 4041 "green", 4042 "none green repeat scroll left top", 4043 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 4044 "repeat url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==') transparent left top scroll", 4045 "repeat-x", 4046 "repeat-y", 4047 "no-repeat", 4048 "none repeat-y transparent scroll 0% 0%", 4049 "fixed", 4050 "0% top transparent fixed repeat none", 4051 "top", 4052 "left", 4053 "50% 50%", 4054 "center", 4055 "top / 100px", 4056 "left / contain", 4057 "left / cover", 4058 "10px / 10%", 4059 "10em / calc(20px)", 4060 "top left / 100px 100px", 4061 "top left / 100px auto", 4062 "top left / 100px 10%", 4063 "top left / 100px calc(20px)", 4064 "bottom right 8px scroll none transparent repeat", 4065 "50% transparent", 4066 "transparent 50%", 4067 "50%", 4068 "radial-gradient(at 10% bottom, #ffffff, black) scroll no-repeat", 4069 "repeating-radial-gradient(at 10% bottom, #ffffff, black) scroll no-repeat", 4070 "-moz-element(#test) lime", 4071 /* multiple backgrounds */ 4072 "url(404.png), url(404.png)", 4073 "url(404.png), url(404.png) transparent", 4074 "url(404.png), url(404.png) red", 4075 "repeat-x, fixed, none", 4076 "0% top url(404.png), url(404.png) 0% top", 4077 "fixed repeat-y top left url(404.png), repeat-x green", 4078 "top left / contain, bottom right / cover", 4079 /* test cases with clip+origin in the shorthand */ 4080 "url(404.png) green padding-box", 4081 "url(404.png) border-box transparent", 4082 "content-box url(404.png) blue", 4083 "url(404.png) green padding-box padding-box", 4084 "url(404.png) green padding-box border-box", 4085 "content-box border-box url(404.png) blue", 4086 "url(404.png) green padding-box text", 4087 "content-box text url(404.png) blue", 4088 /* clip and origin separated in the shorthand */ 4089 "url(404.png) padding-box green border-box", 4090 "url(404.png) padding-box green padding-box", 4091 "transparent padding-box url(404.png) border-box", 4092 "transparent padding-box url(404.png) padding-box", 4093 /* text */ 4094 "text", 4095 "text border-box", 4096 ], 4097 invalid_values: [ 4098 /* mixes with keywords have to be in correct order */ 4099 "50% left", 4100 "top 50%", 4101 /* no quirks mode colors */ 4102 "radial-gradient(at 10% bottom, ffffff, black) scroll no-repeat", 4103 /* no quirks mode lengths */ 4104 "linear-gradient(red -99, yellow, green, blue 120%)", 4105 /* bug 258080: don't accept background-position separated */ 4106 "left url(404.png) top", 4107 "top url(404.png) left", 4108 /* not allowed to have color in non-bottom layer */ 4109 "url(404.png) transparent, url(404.png)", 4110 "url(404.png) red, url(404.png)", 4111 "url(404.png) transparent, url(404.png) transparent", 4112 "url(404.png) transparent red, url(404.png) transparent red", 4113 "url(404.png) red, url(404.png) red", 4114 "url(404.png) rgba(0, 0, 0, 0), url(404.png)", 4115 "url(404.png) rgb(255, 0, 0), url(404.png)", 4116 "url(404.png) rgba(0, 0, 0, 0), url(404.png) rgba(0, 0, 0, 0)", 4117 "url(404.png) rgba(0, 0, 0, 0) rgb(255, 0, 0), url(404.png) rgba(0, 0, 0, 0) rgb(255, 0, 0)", 4118 "url(404.png) rgb(255, 0, 0), url(404.png) rgb(255, 0, 0)", 4119 /* error inside functions */ 4120 "-moz-element(#a rubbish) black", 4121 "content-box text text", 4122 "padding-box text url(404.png) text", 4123 ], 4124 }, 4125 "background-attachment": { 4126 domProp: "backgroundAttachment", 4127 inherited: false, 4128 type: CSS_TYPE_LONGHAND, 4129 applies_to_first_letter: true, 4130 applies_to_first_line: true, 4131 applies_to_placeholder: true, 4132 applies_to_cue: true, 4133 initial_values: ["scroll"], 4134 other_values: [ 4135 "fixed", 4136 "local", 4137 "scroll,scroll", 4138 "fixed, scroll", 4139 "scroll, fixed, local, scroll", 4140 "fixed, fixed", 4141 ], 4142 invalid_values: [], 4143 }, 4144 "background-blend-mode": { 4145 domProp: "backgroundBlendMode", 4146 inherited: false, 4147 type: CSS_TYPE_LONGHAND, 4148 applies_to_first_letter: true, 4149 applies_to_first_line: true, 4150 applies_to_placeholder: true, 4151 applies_to_cue: true, 4152 initial_values: ["normal"], 4153 other_values: [ 4154 "multiply", 4155 "screen", 4156 "overlay", 4157 "darken", 4158 "lighten", 4159 "color-dodge", 4160 "color-burn", 4161 "hard-light", 4162 "soft-light", 4163 "difference", 4164 "exclusion", 4165 "hue", 4166 "saturation", 4167 "color", 4168 "luminosity", 4169 ], 4170 invalid_values: ["none", "10px", "multiply multiply", "plus-lighter"], 4171 }, 4172 "background-clip": { 4173 /* 4174 * When we rename this to 'background-clip', we also 4175 * need to rename the values to match the spec. 4176 */ 4177 domProp: "backgroundClip", 4178 inherited: false, 4179 type: CSS_TYPE_LONGHAND, 4180 applies_to_first_letter: true, 4181 applies_to_first_line: true, 4182 applies_to_placeholder: true, 4183 applies_to_cue: true, 4184 initial_values: ["border-box"], 4185 other_values: [ 4186 "content-box", 4187 "padding-box", 4188 "border-box, padding-box", 4189 "padding-box, padding-box, padding-box", 4190 "border-box, border-box", 4191 "text", 4192 "content-box, text", 4193 "text, border-box", 4194 "text, text", 4195 ], 4196 invalid_values: [ 4197 "margin-box", 4198 "border-box border-box", 4199 "fill-box", 4200 "stroke-box", 4201 "view-box", 4202 "no-clip", 4203 ], 4204 }, 4205 "background-color": { 4206 domProp: "backgroundColor", 4207 inherited: false, 4208 type: CSS_TYPE_LONGHAND, 4209 applies_to_first_letter: true, 4210 applies_to_first_line: true, 4211 applies_to_placeholder: true, 4212 applies_to_cue: true, 4213 initial_values: ["transparent", "rgba(0, 0, 0, 0)"], 4214 other_values: [ 4215 "green", 4216 "rgb(255, 0, 128)", 4217 "#fc2", 4218 "#96ed2a", 4219 "black", 4220 "rgba(255,255,0,3)", 4221 "hsl(240, 50%, 50%)", 4222 "rgb(50%, 50%, 50%)", 4223 "-moz-default-background-color", 4224 "rgb(100, 100.0, 100)", 4225 "rgba(255, 127, 15, 0)", 4226 "hsla(240, 97%, 50%, 0.0)", 4227 "rgba(255,255,255,-3.7)", 4228 ], 4229 invalid_values: [ 4230 "#0", 4231 "#00", 4232 "#00000", 4233 "#0000000", 4234 "#000000000", 4235 "rgb(100, 100%, 100)", 4236 ], 4237 quirks_values: { "000000": "#000000", "96ed2a": "#96ed2a" }, 4238 }, 4239 "background-image": { 4240 domProp: "backgroundImage", 4241 inherited: false, 4242 type: CSS_TYPE_LONGHAND, 4243 applies_to_first_letter: true, 4244 applies_to_first_line: true, 4245 applies_to_placeholder: true, 4246 applies_to_cue: true, 4247 initial_values: ["none"], 4248 other_values: [ 4249 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 4250 "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 4251 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 4252 "none, none", 4253 "none, none, none, none, none", 4254 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none", 4255 "none, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), none", 4256 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==), url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 4257 ].concat(validNonUrlImageValues), 4258 invalid_values: [].concat(invalidNonUrlImageValues), 4259 unbalanced_values: [].concat(unbalancedGradientAndElementValues), 4260 }, 4261 "background-origin": { 4262 domProp: "backgroundOrigin", 4263 inherited: false, 4264 type: CSS_TYPE_LONGHAND, 4265 applies_to_first_letter: true, 4266 applies_to_first_line: true, 4267 applies_to_placeholder: true, 4268 applies_to_cue: true, 4269 initial_values: ["padding-box"], 4270 other_values: [ 4271 "border-box", 4272 "content-box", 4273 "border-box, padding-box", 4274 "padding-box, padding-box, padding-box", 4275 "border-box, border-box", 4276 ], 4277 invalid_values: [ 4278 "margin-box", 4279 "padding-box padding-box", 4280 "fill-box", 4281 "stroke-box", 4282 "view-box", 4283 "no-clip", 4284 ], 4285 }, 4286 "background-position": { 4287 domProp: "backgroundPosition", 4288 inherited: false, 4289 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 4290 applies_to_first_letter: true, 4291 applies_to_first_line: true, 4292 applies_to_placeholder: true, 4293 applies_to_cue: true, 4294 initial_values: [ 4295 "top 0% left 0%", 4296 "top 0% left", 4297 "top left", 4298 "left top", 4299 "0% 0%", 4300 "0% top", 4301 "left 0%", 4302 ], 4303 other_values: [ 4304 "top", 4305 "left", 4306 "right", 4307 "bottom", 4308 "center", 4309 "center bottom", 4310 "bottom center", 4311 "center right", 4312 "right center", 4313 "center top", 4314 "top center", 4315 "center left", 4316 "left center", 4317 "right bottom", 4318 "bottom right", 4319 "50%", 4320 "top left, top left", 4321 "top left, top right", 4322 "top right, top left", 4323 "left top, 0% 0%", 4324 "10% 20%, 30%, 40%", 4325 "top left, bottom right", 4326 "right bottom, left top", 4327 "0%", 4328 "0px", 4329 "30px", 4330 "0%, 10%, 20%, 30%", 4331 "top, top, top, top, top", 4332 "calc(20px)", 4333 "calc(20px) 10px", 4334 "10px calc(20px)", 4335 "calc(20px) 25%", 4336 "25% calc(20px)", 4337 "calc(20px) calc(20px)", 4338 "calc(20px + 1em) calc(20px / 2)", 4339 "calc(20px + 50%) calc(50% - 10px)", 4340 "calc(-20px) calc(-50%)", 4341 "calc(-20%) calc(-50%)", 4342 "0px 0px", 4343 "right 20px top 60px", 4344 "right 20px bottom 60px", 4345 "left 20px top 60px", 4346 "left 20px bottom 60px", 4347 "right -50px top -50px", 4348 "left -50px bottom -50px", 4349 "right 20px top -50px", 4350 "right -20px top 50px", 4351 "right 3em bottom 10px", 4352 "bottom 3em right 10px", 4353 "top 3em right 10px", 4354 "left 15px", 4355 "10px top", 4356 "left top 15px", 4357 "left 10px top", 4358 "left 20%", 4359 "right 20%", 4360 ], 4361 subproperties: ["background-position-x", "background-position-y"], 4362 invalid_values: [ 4363 "center 10px center 4px", 4364 "center 10px center", 4365 "top 20%", 4366 "bottom 20%", 4367 "50% left", 4368 "top 50%", 4369 "50% bottom 10%", 4370 "right 10% 50%", 4371 "left right", 4372 "top bottom", 4373 "left 10% right", 4374 "top 20px bottom 20px", 4375 "left left", 4376 "0px calc(0px + rubbish)", 4377 ], 4378 quirks_values: { 4379 "20 20": "20px 20px", 4380 "10 5px": "10px 5px", 4381 "7px 2": "7px 2px", 4382 }, 4383 }, 4384 "background-position-x": { 4385 domProp: "backgroundPositionX", 4386 inherited: false, 4387 type: CSS_TYPE_LONGHAND, 4388 applies_to_first_letter: true, 4389 applies_to_first_line: true, 4390 applies_to_placeholder: true, 4391 applies_to_cue: true, 4392 initial_values: ["left 0%", "left", "0%"], 4393 other_values: [ 4394 "right", 4395 "center", 4396 "50%", 4397 "left, left", 4398 "left, right", 4399 "right, left", 4400 "left, 0%", 4401 "10%, 20%, 40%", 4402 "0px", 4403 "30px", 4404 "0%, 10%, 20%, 30%", 4405 "left, left, left, left, left", 4406 "calc(20px)", 4407 "calc(20px + 1em)", 4408 "calc(20px / 2)", 4409 "calc(20px + 50%)", 4410 "calc(50% - 10px)", 4411 "calc(-20px)", 4412 "calc(-50%)", 4413 "calc(-20%)", 4414 "right 20px", 4415 "left 20px", 4416 "right -50px", 4417 "left -50px", 4418 "right 20px", 4419 "right 3em", 4420 ], 4421 invalid_values: [ 4422 "center 10px", 4423 "right 10% 50%", 4424 "left right", 4425 "left left", 4426 "bottom 20px", 4427 "top 10%", 4428 "bottom 3em", 4429 "top", 4430 "bottom", 4431 "top, top", 4432 "top, bottom", 4433 "bottom, top", 4434 "top, 0%", 4435 "top, top, top, top, top", 4436 "calc(0px + rubbish)", 4437 ], 4438 }, 4439 "background-position-y": { 4440 domProp: "backgroundPositionY", 4441 inherited: false, 4442 type: CSS_TYPE_LONGHAND, 4443 applies_to_first_letter: true, 4444 applies_to_first_line: true, 4445 applies_to_placeholder: true, 4446 applies_to_cue: true, 4447 initial_values: ["top 0%", "top", "0%"], 4448 other_values: [ 4449 "bottom", 4450 "center", 4451 "50%", 4452 "top, top", 4453 "top, bottom", 4454 "bottom, top", 4455 "top, 0%", 4456 "10%, 20%, 40%", 4457 "0px", 4458 "30px", 4459 "0%, 10%, 20%, 30%", 4460 "top, top, top, top, top", 4461 "calc(20px)", 4462 "calc(20px + 1em)", 4463 "calc(20px / 2)", 4464 "calc(20px + 50%)", 4465 "calc(50% - 10px)", 4466 "calc(-20px)", 4467 "calc(-50%)", 4468 "calc(-20%)", 4469 "bottom 20px", 4470 "top 20px", 4471 "bottom -50px", 4472 "top -50px", 4473 "bottom 20px", 4474 "bottom 3em", 4475 ], 4476 invalid_values: [ 4477 "center 10px", 4478 "bottom 10% 50%", 4479 "top bottom", 4480 "top top", 4481 "right 20px", 4482 "left 10%", 4483 "right 3em", 4484 "left", 4485 "right", 4486 "left, left", 4487 "left, right", 4488 "right, left", 4489 "left, 0%", 4490 "left, left, left, left, left", 4491 "calc(0px + rubbish)", 4492 ], 4493 }, 4494 "background-repeat": { 4495 domProp: "backgroundRepeat", 4496 inherited: false, 4497 type: CSS_TYPE_LONGHAND, 4498 applies_to_first_letter: true, 4499 applies_to_first_line: true, 4500 applies_to_placeholder: true, 4501 applies_to_cue: true, 4502 initial_values: ["repeat", "repeat repeat"], 4503 other_values: [ 4504 "repeat-x", 4505 "repeat-y", 4506 "no-repeat", 4507 "repeat-x, repeat-x", 4508 "repeat, no-repeat", 4509 "repeat-y, no-repeat, repeat-y", 4510 "repeat, repeat, repeat", 4511 "repeat no-repeat", 4512 "no-repeat repeat", 4513 "no-repeat no-repeat", 4514 "repeat repeat, repeat repeat", 4515 "round, repeat", 4516 "round repeat, repeat-x", 4517 "round no-repeat, repeat-y", 4518 "round round", 4519 "space, repeat", 4520 "space repeat, repeat-x", 4521 "space no-repeat, repeat-y", 4522 "space space", 4523 "space round", 4524 ], 4525 invalid_values: [ 4526 "repeat repeat repeat", 4527 "repeat-x repeat-y", 4528 "repeat repeat-x", 4529 "repeat repeat-y", 4530 "repeat-x repeat", 4531 "repeat-y repeat", 4532 "round round round", 4533 "repeat-x round", 4534 "round repeat-x", 4535 "repeat-y round", 4536 "round repeat-y", 4537 "space space space", 4538 "repeat-x space", 4539 "space repeat-x", 4540 "repeat-y space", 4541 "space repeat-y", 4542 ], 4543 }, 4544 "background-size": { 4545 domProp: "backgroundSize", 4546 inherited: false, 4547 type: CSS_TYPE_LONGHAND, 4548 applies_to_first_letter: true, 4549 applies_to_first_line: true, 4550 applies_to_placeholder: true, 4551 applies_to_cue: true, 4552 initial_values: ["auto", "auto auto"], 4553 other_values: [ 4554 "contain", 4555 "cover", 4556 "100px auto", 4557 "auto 100px", 4558 "100% auto", 4559 "auto 100%", 4560 "25% 50px", 4561 "3em 40%", 4562 "calc(20px)", 4563 "calc(20px) 10px", 4564 "10px calc(20px)", 4565 "calc(20px) 25%", 4566 "25% calc(20px)", 4567 "calc(20px) calc(20px)", 4568 "calc(20px + 1em) calc(20px / 2)", 4569 "calc(20px + 50%) calc(50% - 10px)", 4570 "calc(-20px) calc(-50%)", 4571 "calc(-20%) calc(-50%)", 4572 ], 4573 invalid_values: [ 4574 "contain contain", 4575 "cover cover", 4576 "cover auto", 4577 "auto cover", 4578 "contain cover", 4579 "cover contain", 4580 "-5px 3px", 4581 "3px -5px", 4582 "auto -5px", 4583 "-5px auto", 4584 "5 3", 4585 "10px calc(10px + rubbish)", 4586 ], 4587 }, 4588 border: { 4589 domProp: "border", 4590 inherited: false, 4591 type: CSS_TYPE_TRUE_SHORTHAND, 4592 subproperties: [ 4593 "border-bottom-color", 4594 "border-bottom-style", 4595 "border-bottom-width", 4596 "border-left-color", 4597 "border-left-style", 4598 "border-left-width", 4599 "border-right-color", 4600 "border-right-style", 4601 "border-right-width", 4602 "border-top-color", 4603 "border-top-style", 4604 "border-top-width", 4605 "border-image-source", 4606 "border-image-slice", 4607 "border-image-width", 4608 "border-image-outset", 4609 "border-image-repeat", 4610 ], 4611 initial_values: [ 4612 "none", 4613 "medium", 4614 "currentColor", 4615 "thin", 4616 "none medium currentcolor", 4617 "calc(4px - 1px) none", 4618 ], 4619 other_values: [ 4620 "solid", 4621 "medium solid", 4622 "green solid", 4623 "10px solid", 4624 "thick solid", 4625 "calc(2px) solid blue", 4626 ], 4627 invalid_values: ["5%", "medium solid ff00ff", "5 solid green"], 4628 }, 4629 "border-bottom": { 4630 domProp: "borderBottom", 4631 inherited: false, 4632 type: CSS_TYPE_TRUE_SHORTHAND, 4633 subproperties: [ 4634 "border-bottom-color", 4635 "border-bottom-style", 4636 "border-bottom-width", 4637 ], 4638 initial_values: [ 4639 "none", 4640 "medium", 4641 "currentColor", 4642 "thin", 4643 "none medium currentcolor", 4644 ], 4645 other_values: [ 4646 "solid", 4647 "green", 4648 "medium solid", 4649 "green solid", 4650 "10px solid", 4651 "thick solid", 4652 "5px green none", 4653 ], 4654 invalid_values: ["5%", "5", "5 solid green"], 4655 }, 4656 "border-bottom-color": { 4657 domProp: "borderBottomColor", 4658 inherited: false, 4659 type: CSS_TYPE_LONGHAND, 4660 applies_to_first_letter: true, 4661 prerequisites: { color: "black" }, 4662 initial_values: ["currentColor"], 4663 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 4664 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000"], 4665 quirks_values: { "000000": "#000000", "96ed2a": "#96ed2a" }, 4666 }, 4667 "border-bottom-style": { 4668 domProp: "borderBottomStyle", 4669 inherited: false, 4670 type: CSS_TYPE_LONGHAND, 4671 applies_to_first_letter: true, 4672 /* XXX hidden is sometimes the same as initial */ 4673 initial_values: ["none"], 4674 other_values: [ 4675 "solid", 4676 "dashed", 4677 "dotted", 4678 "double", 4679 "outset", 4680 "inset", 4681 "groove", 4682 "ridge", 4683 ], 4684 invalid_values: [], 4685 }, 4686 "border-bottom-width": { 4687 domProp: "borderBottomWidth", 4688 inherited: false, 4689 type: CSS_TYPE_LONGHAND, 4690 applies_to_first_letter: true, 4691 prerequisites: { "border-bottom-style": "solid" }, 4692 initial_values: ["medium", "3px", "calc(4px - 1px)"], 4693 other_values: [ 4694 "thin", 4695 "thick", 4696 "1px", 4697 "2em", 4698 "calc(2px)", 4699 "calc(-2px)", 4700 "calc(0em)", 4701 "calc(0px)", 4702 "calc(5em)", 4703 "calc(3*25px)", 4704 "calc(25px*3)", 4705 "calc(3*25px + 5em)", 4706 ], 4707 invalid_values: ["stretch", "5%"], 4708 quirks_values: { 5: "5px" }, 4709 }, 4710 "border-collapse": { 4711 domProp: "borderCollapse", 4712 inherited: true, 4713 type: CSS_TYPE_LONGHAND, 4714 initial_values: ["separate"], 4715 other_values: ["collapse"], 4716 invalid_values: [], 4717 }, 4718 "border-color": { 4719 domProp: "borderColor", 4720 inherited: false, 4721 type: CSS_TYPE_TRUE_SHORTHAND, 4722 subproperties: [ 4723 "border-top-color", 4724 "border-right-color", 4725 "border-bottom-color", 4726 "border-left-color", 4727 ], 4728 initial_values: [ 4729 "currentColor", 4730 "currentColor currentColor", 4731 "currentColor currentColor currentColor", 4732 "currentColor currentColor currentcolor CURRENTcolor", 4733 ], 4734 other_values: [ 4735 "green", 4736 "currentColor green", 4737 "currentColor currentColor green", 4738 "currentColor currentColor currentColor green", 4739 "rgba(255,128,0,0.5)", 4740 "transparent", 4741 ], 4742 invalid_values: [ 4743 "#0", 4744 "#00", 4745 "#00000", 4746 "#0000000", 4747 "#000000000", 4748 "red rgb(nonsense)", 4749 "red 1px", 4750 ], 4751 unbalanced_values: ["red rgb("], 4752 quirks_values: { "000000": "#000000", "96ed2a": "#96ed2a" }, 4753 }, 4754 "border-left": { 4755 domProp: "borderLeft", 4756 inherited: false, 4757 type: CSS_TYPE_TRUE_SHORTHAND, 4758 subproperties: [ 4759 "border-left-color", 4760 "border-left-style", 4761 "border-left-width", 4762 ], 4763 initial_values: [ 4764 "none", 4765 "medium", 4766 "currentColor", 4767 "thin", 4768 "none medium currentcolor", 4769 ], 4770 other_values: [ 4771 "solid", 4772 "green", 4773 "medium solid", 4774 "green solid", 4775 "10px solid", 4776 "thick solid", 4777 "5px green none", 4778 ], 4779 invalid_values: [ 4780 "5%", 4781 "5", 4782 "5 solid green", 4783 "calc(5px + rubbish) green solid", 4784 "5px rgb(0, rubbish, 0) solid", 4785 ], 4786 }, 4787 "border-left-color": { 4788 domProp: "borderLeftColor", 4789 inherited: false, 4790 type: CSS_TYPE_LONGHAND, 4791 applies_to_first_letter: true, 4792 prerequisites: { color: "black" }, 4793 initial_values: ["currentColor"], 4794 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 4795 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000"], 4796 quirks_values: { "000000": "#000000", "96ed2a": "#96ed2a" }, 4797 }, 4798 "border-left-style": { 4799 domProp: "borderLeftStyle", 4800 inherited: false, 4801 type: CSS_TYPE_LONGHAND, 4802 applies_to_first_letter: true, 4803 /* XXX hidden is sometimes the same as initial */ 4804 initial_values: ["none"], 4805 other_values: [ 4806 "solid", 4807 "dashed", 4808 "dotted", 4809 "double", 4810 "outset", 4811 "inset", 4812 "groove", 4813 "ridge", 4814 ], 4815 invalid_values: [], 4816 }, 4817 "border-left-width": { 4818 domProp: "borderLeftWidth", 4819 inherited: false, 4820 type: CSS_TYPE_LONGHAND, 4821 applies_to_first_letter: true, 4822 prerequisites: { "border-left-style": "solid" }, 4823 initial_values: ["medium", "3px", "calc(4px - 1px)"], 4824 other_values: [ 4825 "thin", 4826 "thick", 4827 "1px", 4828 "2em", 4829 "calc(2px)", 4830 "calc(-2px)", 4831 "calc(0em)", 4832 "calc(0px)", 4833 "calc(5em)", 4834 "calc(3*25px)", 4835 "calc(25px*3)", 4836 "calc(3*25px + 5em)", 4837 ], 4838 invalid_values: ["stretch", "5%"], 4839 quirks_values: { 5: "5px" }, 4840 }, 4841 "border-right": { 4842 domProp: "borderRight", 4843 inherited: false, 4844 type: CSS_TYPE_TRUE_SHORTHAND, 4845 subproperties: [ 4846 "border-right-color", 4847 "border-right-style", 4848 "border-right-width", 4849 ], 4850 initial_values: [ 4851 "none", 4852 "medium", 4853 "currentColor", 4854 "thin", 4855 "none medium currentcolor", 4856 ], 4857 other_values: [ 4858 "solid", 4859 "green", 4860 "medium solid", 4861 "green solid", 4862 "10px solid", 4863 "thick solid", 4864 "5px green none", 4865 ], 4866 invalid_values: ["5%", "5", "5 solid green"], 4867 }, 4868 "border-right-color": { 4869 domProp: "borderRightColor", 4870 inherited: false, 4871 type: CSS_TYPE_LONGHAND, 4872 applies_to_first_letter: true, 4873 prerequisites: { color: "black" }, 4874 initial_values: ["currentColor"], 4875 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 4876 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000"], 4877 quirks_values: { "000000": "#000000", "96ed2a": "#96ed2a" }, 4878 }, 4879 "border-right-style": { 4880 domProp: "borderRightStyle", 4881 inherited: false, 4882 type: CSS_TYPE_LONGHAND, 4883 applies_to_first_letter: true, 4884 /* XXX hidden is sometimes the same as initial */ 4885 initial_values: ["none"], 4886 other_values: [ 4887 "solid", 4888 "dashed", 4889 "dotted", 4890 "double", 4891 "outset", 4892 "inset", 4893 "groove", 4894 "ridge", 4895 ], 4896 invalid_values: [], 4897 }, 4898 "border-right-width": { 4899 domProp: "borderRightWidth", 4900 inherited: false, 4901 type: CSS_TYPE_LONGHAND, 4902 applies_to_first_letter: true, 4903 prerequisites: { "border-right-style": "solid" }, 4904 initial_values: ["medium", "3px", "calc(4px - 1px)"], 4905 other_values: [ 4906 "thin", 4907 "thick", 4908 "1px", 4909 "2em", 4910 "calc(2px)", 4911 "calc(-2px)", 4912 "calc(0em)", 4913 "calc(0px)", 4914 "calc(5em)", 4915 "calc(3*25px)", 4916 "calc(25px*3)", 4917 "calc(3*25px + 5em)", 4918 ], 4919 invalid_values: ["5%"], 4920 quirks_values: { 5: "5px" }, 4921 }, 4922 "border-spacing": { 4923 domProp: "borderSpacing", 4924 inherited: true, 4925 type: CSS_TYPE_LONGHAND, 4926 initial_values: [ 4927 "0", 4928 "0 0", 4929 "0px", 4930 "0 0px", 4931 "calc(0px)", 4932 "calc(0px) calc(0em)", 4933 "calc(2em - 2em) calc(3px + 7px - 10px)", 4934 "calc(-5px)", 4935 "calc(-5px) calc(-5px)", 4936 ], 4937 other_values: [ 4938 "3px", 4939 "4em 2px", 4940 "4em 0", 4941 "0px 2px", 4942 "calc(7px)", 4943 "0 calc(7px)", 4944 "calc(7px) 0", 4945 "calc(0px) calc(7px)", 4946 "calc(7px) calc(0px)", 4947 "7px calc(0px)", 4948 "calc(0px) 7px", 4949 "7px calc(0px)", 4950 "3px calc(2em)", 4951 ], 4952 invalid_values: [ 4953 "stretch", 4954 "0%", 4955 "0 0%", 4956 "-5px", 4957 "-5px -5px", 4958 "0 -5px", 4959 "-5px 0", 4960 "0 calc(0px + rubbish)", 4961 ], 4962 quirks_values: { 4963 "2px 5": "2px 5px", 4964 7: "7px", 4965 "3 4px": "3px 4px", 4966 }, 4967 }, 4968 "border-style": { 4969 domProp: "borderStyle", 4970 inherited: false, 4971 type: CSS_TYPE_TRUE_SHORTHAND, 4972 subproperties: [ 4973 "border-top-style", 4974 "border-right-style", 4975 "border-bottom-style", 4976 "border-left-style", 4977 ], 4978 /* XXX hidden is sometimes the same as initial */ 4979 initial_values: [ 4980 "none", 4981 "none none", 4982 "none none none", 4983 "none none none none", 4984 ], 4985 other_values: [ 4986 "solid", 4987 "dashed", 4988 "dotted", 4989 "double", 4990 "outset", 4991 "inset", 4992 "groove", 4993 "ridge", 4994 "none solid", 4995 "none none solid", 4996 "none none none solid", 4997 "groove none none none", 4998 "none ridge none none", 4999 "none none double none", 5000 "none none none dotted", 5001 ], 5002 invalid_values: [], 5003 }, 5004 "border-top": { 5005 domProp: "borderTop", 5006 inherited: false, 5007 type: CSS_TYPE_TRUE_SHORTHAND, 5008 subproperties: ["border-top-color", "border-top-style", "border-top-width"], 5009 initial_values: [ 5010 "none", 5011 "medium", 5012 "currentColor", 5013 "thin", 5014 "none medium currentcolor", 5015 ], 5016 other_values: [ 5017 "solid", 5018 "green", 5019 "medium solid", 5020 "green solid", 5021 "10px solid", 5022 "thick solid", 5023 "5px green none", 5024 ], 5025 invalid_values: ["5%", "5", "5 solid green"], 5026 }, 5027 "border-top-color": { 5028 domProp: "borderTopColor", 5029 inherited: false, 5030 type: CSS_TYPE_LONGHAND, 5031 applies_to_first_letter: true, 5032 prerequisites: { color: "black" }, 5033 initial_values: ["currentColor"], 5034 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 5035 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000"], 5036 quirks_values: { "000000": "#000000", "96ed2a": "#96ed2a" }, 5037 }, 5038 "border-top-style": { 5039 domProp: "borderTopStyle", 5040 inherited: false, 5041 type: CSS_TYPE_LONGHAND, 5042 applies_to_first_letter: true, 5043 /* XXX hidden is sometimes the same as initial */ 5044 initial_values: ["none"], 5045 other_values: [ 5046 "solid", 5047 "dashed", 5048 "dotted", 5049 "double", 5050 "outset", 5051 "inset", 5052 "groove", 5053 "ridge", 5054 ], 5055 invalid_values: [], 5056 }, 5057 "border-top-width": { 5058 domProp: "borderTopWidth", 5059 inherited: false, 5060 type: CSS_TYPE_LONGHAND, 5061 applies_to_first_letter: true, 5062 prerequisites: { "border-top-style": "solid" }, 5063 initial_values: ["medium", "3px", "calc(4px - 1px)"], 5064 other_values: [ 5065 "thin", 5066 "thick", 5067 "1px", 5068 "2em", 5069 "calc(2px)", 5070 "calc(-2px)", 5071 "calc(0em)", 5072 "calc(0px)", 5073 "calc(5em)", 5074 "calc(3*25px)", 5075 "calc(25px*3)", 5076 "calc(3*25px + 5em)", 5077 ], 5078 invalid_values: ["stretch", "5%"], 5079 quirks_values: { 5: "5px" }, 5080 }, 5081 "border-width": { 5082 domProp: "borderWidth", 5083 inherited: false, 5084 type: CSS_TYPE_TRUE_SHORTHAND, 5085 subproperties: [ 5086 "border-top-width", 5087 "border-right-width", 5088 "border-bottom-width", 5089 "border-left-width", 5090 ], 5091 prerequisites: { "border-style": "solid" }, 5092 initial_values: [ 5093 "medium", 5094 "3px", 5095 "medium medium", 5096 "3px medium medium", 5097 "medium 3px medium medium", 5098 "calc(3px) 3px calc(5px - 2px) calc(2px - -1px)", 5099 ], 5100 other_values: ["thin", "thick", "1px", "2em", "2px 0 0px 1em", "calc(2em)"], 5101 invalid_values: ["5%", "1px calc(nonsense)", "1px red"], 5102 unbalanced_values: ["1px calc("], 5103 quirks_values: { 5: "5px" }, 5104 }, 5105 bottom: { 5106 domProp: "bottom", 5107 inherited: false, 5108 type: CSS_TYPE_LONGHAND, 5109 /* FIXME: run tests with multiple prerequisites */ 5110 prerequisites: { position: "relative" }, 5111 /* XXX 0 may or may not be equal to auto */ 5112 initial_values: ["auto"], 5113 other_values: [ 5114 "32px", 5115 "-3em", 5116 "12%", 5117 "calc(2px)", 5118 "calc(-2px)", 5119 "calc(50%)", 5120 "calc(3*25px)", 5121 "calc(25px*3)", 5122 "calc(3*25px + 50%)", 5123 ], 5124 invalid_values: ["stretch"], 5125 quirks_values: { 5: "5px" }, 5126 }, 5127 "box-shadow": { 5128 domProp: "boxShadow", 5129 inherited: false, 5130 type: CSS_TYPE_LONGHAND, 5131 applies_to_first_letter: true, 5132 initial_values: ["none"], 5133 prerequisites: { color: "blue" }, 5134 other_values: [ 5135 "2px 2px", 5136 "2px 2px 1px", 5137 "2px 2px 2px 2px", 5138 "blue 3px 2px", 5139 "2px 2px 1px 5px green", 5140 "2px 2px red", 5141 "green 2px 2px 1px", 5142 "green 2px 2px, blue 1px 3px 4px", 5143 "currentColor 3px 3px", 5144 "blue 2px 2px, currentColor 1px 2px, 1px 2px 3px 2px orange", 5145 "3px 0 0 0", 5146 "inset 2px 2px 3px 4px black", 5147 "2px -2px green inset, 4px 4px 3px blue, inset 2px 2px", 5148 /* calc() values */ 5149 "2px 2px calc(-5px)" /* clamped */, 5150 "calc(3em - 2px) 2px green", 5151 "green calc(3em - 2px) 2px", 5152 "2px calc(2px + 0.2em)", 5153 "blue 2px calc(2px + 0.2em)", 5154 "2px calc(2px + 0.2em) blue", 5155 "calc(-2px) calc(-2px)", 5156 "-2px -2px", 5157 "calc(2px) calc(2px)", 5158 "calc(2px) calc(2px) calc(2px)", 5159 "calc(2px) calc(2px) calc(2px) calc(2px)", 5160 ], 5161 invalid_values: [ 5162 "3% 3%", 5163 "1px 1px 1px 1px 1px", 5164 "2px 2px, none", 5165 "red 2px 2px blue", 5166 "inherit, 2px 2px", 5167 "2px 2px, inherit", 5168 "2px 2px -5px", 5169 "inset 4px 4px black inset", 5170 "inset inherit", 5171 "inset none", 5172 "3 3", 5173 "3px 3", 5174 "3 3px", 5175 "3px 3px 3", 5176 "3px 3px 3px 3", 5177 "3px calc(3px + rubbish)", 5178 "3px 3px calc(3px + rubbish)", 5179 "3px 3px 3px calc(3px + rubbish)", 5180 "3px 3px 3px 3px rgb(0, rubbish, 0)", 5181 "unset, 2px 2px", 5182 "2px 2px, unset", 5183 "inset unset", 5184 ], 5185 }, 5186 "caption-side": { 5187 domProp: "captionSide", 5188 inherited: true, 5189 type: CSS_TYPE_LONGHAND, 5190 initial_values: ["top"], 5191 other_values: ["bottom"], 5192 invalid_values: ["right", "left", "top-outside", "bottom-outside"], 5193 }, 5194 "caret-color": { 5195 domProp: "caretColor", 5196 inherited: true, 5197 type: CSS_TYPE_LONGHAND, 5198 prerequisites: { color: "black" }, 5199 // Though "auto" is an independent computed-value time keyword value, 5200 // it is not distinguishable from currentcolor because getComputedStyle 5201 // always returns used value for <color>. 5202 initial_values: ["auto", "currentcolor", "black", "rgb(0,0,0)"], 5203 other_values: ["green", "transparent", "rgba(128,128,128,.5)", "#123"], 5204 invalid_values: ["#0", "#00", "#00000", "cc00ff"], 5205 }, 5206 clear: { 5207 domProp: "clear", 5208 inherited: false, 5209 type: CSS_TYPE_LONGHAND, 5210 initial_values: ["none"], 5211 other_values: ["left", "right", "both", "inline-start", "inline-end"], 5212 invalid_values: [], 5213 }, 5214 clip: { 5215 domProp: "clip", 5216 inherited: false, 5217 type: CSS_TYPE_LONGHAND, 5218 initial_values: ["auto"], 5219 other_values: [ 5220 "rect(0 0 0 0)", 5221 "rect(auto,auto,auto,auto)", 5222 "rect(3px, 4px, 4em, 0)", 5223 "rect(auto, 3em, 4pt, 2px)", 5224 "rect(2px 3px 4px 5px)", 5225 ], 5226 invalid_values: ["rect(auto, 3em, 2%, 5px)"], 5227 quirks_values: { "rect(1, 2, 3, 4)": "rect(1px, 2px, 3px, 4px)" }, 5228 }, 5229 color: { 5230 domProp: "color", 5231 inherited: true, 5232 type: CSS_TYPE_LONGHAND, 5233 applies_to_first_letter: true, 5234 applies_to_first_line: true, 5235 applies_to_marker: true, 5236 applies_to_placeholder: true, 5237 applies_to_cue: true, 5238 /* XXX should test currentColor, but may or may not be initial */ 5239 initial_values: [ 5240 "black", 5241 "#000", 5242 "#000f", 5243 "#000000ff", 5244 "-moz-default-color", 5245 "rgb(0, 0, 0)", 5246 "rgb(0%, 0%, 0%)", 5247 /* css-color-4: */ 5248 /* rgb() and rgba() are aliases of each other. */ 5249 "rgb(0, 0, 0)", 5250 "rgba(0, 0, 0)", 5251 "rgb(0, 0, 0, 1)", 5252 "rgba(0, 0, 0, 1)", 5253 /* hsl() and hsla() are aliases of each other. */ 5254 "hsl(0, 0%, 0%)", 5255 "hsla(0, 0%, 0%)", 5256 "hsl(0, 0%, 0%, 1)", 5257 "hsla(0, 0%, 0%, 1)", 5258 /* rgb() and rgba() functions now accept <number> rather than <integer>. */ 5259 "rgb(0.0, 0.0, 0.0)", 5260 "rgba(0.0, 0.0, 0.0)", 5261 "rgb(0.0, 0.0, 0.0, 1)", 5262 "rgba(0.0, 0.0, 0.0, 1)", 5263 /* <alpha-value> now accepts <percentage> as well as <number> in rgba() and hsla(). */ 5264 "rgb(0.0, 0.0, 0.0, 100%)", 5265 "hsl(0, 0%, 0%, 100%)", 5266 /* rgb() and hsl() now support comma-less expression. */ 5267 "rgb(0 0 0)", 5268 "rgb(0 0 0 / 1)", 5269 "rgb(0/* comment */0/* comment */0)", 5270 "rgb(0/* comment */0/* comment*/0/1.0)", 5271 "hsl(0 0% 0%)", 5272 "hsl(0 0% 0% / 1)", 5273 "hsl(0/* comment */0%/* comment */0%)", 5274 "hsl(0/* comment */0%/* comment */0%/1)", 5275 /* Support <angle> for hsl() hue component. */ 5276 "hsl(0deg, 0%, 0%)", 5277 "hsl(360deg, 0%, 0%)", 5278 "hsl(0grad, 0%, 0%)", 5279 "hsl(400grad, 0%, 0%)", 5280 "hsl(0rad, 0%, 0%)", 5281 "hsl(0turn, 0%, 0%)", 5282 "hsl(1turn, 0%, 0%)", 5283 /* CSS4 System Colors */ 5284 "canvastext", 5285 /* Preserve previously available specially prefixed colors */ 5286 "-moz-default-color", 5287 ], 5288 other_values: [ 5289 "green", 5290 "#f3c", 5291 "#fed292", 5292 "rgba(45,300,12,2)", 5293 "transparent", 5294 "LinkText", 5295 "rgba(255,128,0,0.5)", 5296 "#e0fc", 5297 "#10fcee72", 5298 /* css-color-4: */ 5299 "rgb(100, 100.0, 100)", 5300 "rgb(300 300 300 / 200%)", 5301 "rgb(300.0 300.0 300.0 / 2.0)", 5302 "hsl(720, 200%, 200%, 2.0)", 5303 "hsla(720 200% 200% / 200%)", 5304 "hsl(480deg, 20%, 30%, 0.3)", 5305 "hsl(55grad, 400%, 30%)", 5306 "hsl(0.5grad 400% 500% / 9.0)", 5307 "hsl(33rad 100% 90% / 4)", 5308 "hsl(0.33turn, 40%, 40%, 10%)", 5309 "hsl(63e292, 41%, 34%)", 5310 /* CSS4 System Colors */ 5311 "canvas", 5312 "linktext", 5313 "visitedtext", 5314 "activetext", 5315 "buttonface", 5316 "field", 5317 "highlight", 5318 "graytext", 5319 /* Preserve previously available specially prefixed colors */ 5320 "-moz-activehyperlinktext", 5321 "-moz-default-background-color", 5322 "-moz-hyperlinktext", 5323 "-moz-visitedhyperlinktext", 5324 /* color-mix */ 5325 "color-mix(red, blue)", 5326 "color-mix(in srgb, red, blue)", 5327 "color-mix(in srgb, highlight, rgba(0, 0, 0, .5))", 5328 "color-mix(in srgb, color-mix(in srgb, red 10%, blue), green)", 5329 "color-mix(in srgb, blue, red 80%)", 5330 "color-mix(in srgb, rgba(0, 200, 32, .5) 90%, red 50%)", 5331 "color-mix(in srgb, currentColor, red)", 5332 ], 5333 invalid_values: [ 5334 "#f", 5335 "#ff", 5336 "#fffff", 5337 "#fffffff", 5338 "#fffffffff", 5339 "rgb(100%, 0, 100%)", 5340 "rgba(100, 0, 100%, 30%)", 5341 "hsl(0, 0, 0%)", 5342 "hsla(0%, 0%, 0%, 0.1)", 5343 /* trailing commas */ 5344 "rgb(0, 0, 0,)", 5345 "rgba(0, 0, 0, 0,)", 5346 "hsl(0, 0%, 0%,)", 5347 "hsla(0, 0%, 0%, 1,)", 5348 /* css-color-4: */ 5349 /* comma and comma-less expressions should not mix together. */ 5350 "rgb(0, 0, 0 / 1)", 5351 "rgb(0 0 0, 1)", 5352 "rgb(0, 0 0, 1)", 5353 "rgb(0 0, 0 / 1)", 5354 "hsl(0, 0%, 0% / 1)", 5355 "hsl(0 0% 0%, 1)", 5356 "hsl(0 0% 0%, 1)", 5357 "hsl(0 0%, 0% / 1)", 5358 /* trailing slash */ 5359 "rgb(0 0 0 /)", 5360 "rgb(0, 0, 0 /)", 5361 "hsl(0 0% 0% /)", 5362 "hsl(0, 0%, 0% /)", 5363 /* color-mix */ 5364 "color-mix(red blue)", 5365 "color-mix(in srgb, red blue)", 5366 "color-mix(in srgb, red 10% blue)", 5367 ], 5368 quirks_values: { 5369 "000000": "#000000", 5370 "96ed2a": "#96ed2a", 5371 fff: "#ffffff", 5372 ffffff: "#ffffff", 5373 }, 5374 }, 5375 content: { 5376 domProp: "content", 5377 inherited: false, 5378 type: CSS_TYPE_LONGHAND, 5379 applies_to_marker: true, 5380 // XXX This really depends on pseudo-element-ness. 5381 initial_values: ["normal", "none"], 5382 other_values: [ 5383 '""', 5384 "''", 5385 '"hello"', 5386 "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==)", 5387 "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==')", 5388 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 5389 "counter(foo)", 5390 "counter(bar, upper-roman)", 5391 'counters(foo, ".")', 5392 "counters(bar, '-', lower-greek)", 5393 "'-' counter(foo) '.'", 5394 "attr(title)", 5395 "open-quote", 5396 "close-quote", 5397 "no-open-quote", 5398 "no-close-quote", 5399 "close-quote attr(title) counters(foo, '.', upper-alpha)", 5400 "attr(\\32)", 5401 "attr(\\2)", 5402 "attr(-\\2)", 5403 "attr(-\\32)", 5404 'attr(title, "fallback")', 5405 'attr(\\32, "fallback")', 5406 'attr(-\\32, "fallback")', 5407 "counter(\\2)", 5408 "counters(\\32, '.')", 5409 "counter(-\\32, upper-roman)", 5410 "counters(-\\2, '-', lower-greek)", 5411 "counter(\\()", 5412 "counters(a\\+b, '.')", 5413 "counter(\\}, upper-alpha)", 5414 "counter(foo, symbols('*'))", 5415 "counter(foo, symbols(numeric '0' '1'))", 5416 "counters(foo, '.', symbols('*'))", 5417 "counters(foo, '.', symbols(numeric '0' '1'))", 5418 "image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==))", 5419 ].concat(validNonUrlImageValues), 5420 invalid_values: [ 5421 "counter(foo, none)", 5422 "counters(bar, '.', none)", 5423 "counters(foo)", 5424 'counter(foo, ".")', 5425 'attr("title")', 5426 "attr('title')", 5427 "attr(2)", 5428 "attr(-2)", 5429 "counter(2)", 5430 "counters(-2, '.')", 5431 "-moz-alt-content", 5432 "-moz-alt-content 'foo'", 5433 "'foo' -moz-alt-content", 5434 "counter(one, two, three) 'foo'", 5435 ].concat(invalidNonUrlImageValues), 5436 }, 5437 "counter-increment": { 5438 domProp: "counterIncrement", 5439 inherited: false, 5440 type: CSS_TYPE_LONGHAND, 5441 applies_to_marker: true, 5442 initial_values: ["none"], 5443 other_values: [ 5444 "foo 1", 5445 "bar", 5446 "foo 3 bar baz 2", 5447 "\\32 1", 5448 "-\\32 1", 5449 "-c 1", 5450 "\\32 1", 5451 "-\\32 1", 5452 "\\2 1", 5453 "-\\2 1", 5454 "-c 1", 5455 "\\2 1", 5456 "-\\2 1", 5457 "-\\7f \\9e 1", 5458 ], 5459 invalid_values: ["none foo", "none foo 3", "foo none", "foo 3 none"], 5460 unbalanced_values: ["foo 1 ("], 5461 }, 5462 "counter-reset": { 5463 domProp: "counterReset", 5464 inherited: false, 5465 type: CSS_TYPE_LONGHAND, 5466 applies_to_marker: true, 5467 initial_values: ["none"], 5468 other_values: [ 5469 "foo 1", 5470 "bar", 5471 "foo 3 bar baz 2", 5472 "\\32 1", 5473 "-\\32 1", 5474 "-c 1", 5475 "\\32 1", 5476 "-\\32 1", 5477 "\\2 1", 5478 "-\\2 1", 5479 "-c 1", 5480 "\\2 1", 5481 "-\\2 1", 5482 "-\\7f \\9e 1", 5483 ], 5484 invalid_values: ["none foo", "none foo 3", "foo none", "foo 3 none"], 5485 }, 5486 "counter-set": { 5487 domProp: "counterSet", 5488 inherited: false, 5489 type: CSS_TYPE_LONGHAND, 5490 applies_to_marker: true, 5491 initial_values: ["none"], 5492 other_values: [ 5493 "foo 1", 5494 "bar", 5495 "foo 3 bar baz 2", 5496 "\\32 1", 5497 "-\\32 1", 5498 "-c 1", 5499 "\\32 1", 5500 "-\\32 1", 5501 "\\2 1", 5502 "-\\2 1", 5503 "-c 1", 5504 "\\2 1", 5505 "-\\2 1", 5506 "-\\7f \\9e 1", 5507 ], 5508 invalid_values: ["none foo", "none foo 3", "foo none", "foo 3 none"], 5509 }, 5510 cursor: { 5511 domProp: "cursor", 5512 inherited: true, 5513 type: CSS_TYPE_LONGHAND, 5514 applies_to_marker: true, 5515 initial_values: ["auto"], 5516 other_values: [ 5517 "crosshair", 5518 "default", 5519 "pointer", 5520 "move", 5521 "e-resize", 5522 "ne-resize", 5523 "nw-resize", 5524 "n-resize", 5525 "se-resize", 5526 "sw-resize", 5527 "s-resize", 5528 "w-resize", 5529 "text", 5530 "wait", 5531 "help", 5532 "progress", 5533 "copy", 5534 "alias", 5535 "context-menu", 5536 "cell", 5537 "not-allowed", 5538 "col-resize", 5539 "row-resize", 5540 "no-drop", 5541 "vertical-text", 5542 "all-scroll", 5543 "nesw-resize", 5544 "nwse-resize", 5545 "ns-resize", 5546 "ew-resize", 5547 "none", 5548 "grab", 5549 "grabbing", 5550 "zoom-in", 5551 "zoom-out", 5552 "-moz-grab", 5553 "-moz-grabbing", 5554 "-moz-zoom-in", 5555 "-moz-zoom-out", 5556 "url(foo.png), move", 5557 "url(foo.png) 5 7, move", 5558 "url(foo.png) 12 3, url(bar.png), no-drop", 5559 "url(foo.png), url(bar.png) 7 2, wait", 5560 "url(foo.png) 3 2, url(bar.png) 7 9, pointer", 5561 "url(foo.png) calc(1 + 2) calc(3), pointer", 5562 "image-set(url(foo.png)), auto", 5563 ], 5564 invalid_values: [ 5565 "url(foo.png)", 5566 "url(foo.png) 5 5", 5567 "image-set(linear-gradient(red, blue)), auto", 5568 // Gradients are supported per spec, but we don't have support for it yet 5569 "linear-gradient(red, blue), auto", 5570 ], 5571 }, 5572 direction: { 5573 domProp: "direction", 5574 inherited: true, 5575 type: CSS_TYPE_LONGHAND, 5576 applies_to_marker: true, 5577 initial_values: ["ltr"], 5578 other_values: ["rtl"], 5579 invalid_values: [], 5580 }, 5581 display: { 5582 domProp: "display", 5583 inherited: false, 5584 type: CSS_TYPE_LONGHAND, 5585 // No applies_to_placeholder because we have a !important rule in forms.css. 5586 initial_values: ["inline"], 5587 /* XXX none will really mess with other properties */ 5588 prerequisites: { float: "none", position: "static", contain: "none" }, 5589 other_values: [ 5590 "block", 5591 "flex", 5592 "inline-flex", 5593 "list-item", 5594 "inline list-item", 5595 "inline flow-root list-item", 5596 "inline-block", 5597 "table", 5598 "inline-table", 5599 "table-row-group", 5600 "table-header-group", 5601 "table-footer-group", 5602 "table-row", 5603 "table-column-group", 5604 "table-column", 5605 "table-cell", 5606 "table-caption", 5607 "block ruby", 5608 "ruby", 5609 "ruby-base", 5610 "ruby-base-container", 5611 "ruby-text", 5612 "ruby-text-container", 5613 "contents", 5614 "none", 5615 ], 5616 invalid_values: [], 5617 }, 5618 "empty-cells": { 5619 domProp: "emptyCells", 5620 inherited: true, 5621 type: CSS_TYPE_LONGHAND, 5622 initial_values: ["show"], 5623 other_values: ["hide"], 5624 invalid_values: [], 5625 }, 5626 float: { 5627 domProp: "cssFloat", 5628 inherited: false, 5629 type: CSS_TYPE_LONGHAND, 5630 applies_to_first_letter: true, 5631 initial_values: ["none"], 5632 other_values: ["left", "right", "inline-start", "inline-end"], 5633 invalid_values: [], 5634 }, 5635 font: { 5636 domProp: "font", 5637 inherited: true, 5638 type: CSS_TYPE_TRUE_SHORTHAND, 5639 prerequisites: { "writing-mode": "initial" }, 5640 subproperties: [ 5641 "font-style", 5642 "font-variant", 5643 "font-weight", 5644 "font-size", 5645 "line-height", 5646 "font-family", 5647 "font-stretch", 5648 "font-size-adjust", 5649 "font-feature-settings", 5650 "font-language-override", 5651 "font-kerning", 5652 "font-variant-alternates", 5653 "font-variant-caps", 5654 "font-variant-east-asian", 5655 "font-variant-ligatures", 5656 "font-variant-numeric", 5657 "font-variant-position", 5658 ], 5659 initial_values: [ 5660 gInitialFontFamilyIsSansSerif ? "medium sans-serif" : "medium serif", 5661 ], 5662 other_values: [ 5663 "large serif", 5664 "9px fantasy", 5665 "condensed bold italic small-caps 24px/1.4 Times New Roman, serif", 5666 "small inherit roman", 5667 "small roman inherit", 5668 // system fonts 5669 "caption", 5670 "icon", 5671 "menu", 5672 "message-box", 5673 "small-caption", 5674 "status-bar", 5675 // line-height with calc() 5676 "condensed bold italic small-caps 24px/calc(2px) Times New Roman, serif", 5677 "condensed bold italic small-caps 24px/calc(50%) Times New Roman, serif", 5678 "condensed bold italic small-caps 24px/calc(3*25px) Times New Roman, serif", 5679 "condensed bold italic small-caps 24px/calc(25px*3) Times New Roman, serif", 5680 "condensed bold italic small-caps 24px/calc(3*25px + 50%) Times New Roman, serif", 5681 "condensed bold italic small-caps 24px/calc(1 + 2*3/4) Times New Roman, serif", 5682 ], 5683 invalid_values: [ 5684 "9 fantasy", 5685 "-2px fantasy", 5686 // line-height with calc() 5687 "condensed bold italic small-caps 24px/calc(1 + 2px) Times New Roman, serif", 5688 "condensed bold italic small-caps 24px/calc(100% + 0.1) Times New Roman, serif", 5689 ], 5690 }, 5691 "font-family": { 5692 domProp: "fontFamily", 5693 inherited: true, 5694 type: CSS_TYPE_LONGHAND, 5695 applies_to_first_letter: true, 5696 applies_to_first_line: true, 5697 applies_to_marker: true, 5698 applies_to_placeholder: true, 5699 applies_to_cue: true, 5700 initial_values: [gInitialFontFamilyIsSansSerif ? "sans-serif" : "serif"], 5701 other_values: [ 5702 gInitialFontFamilyIsSansSerif ? "serif" : "sans-serif", 5703 "Times New Roman, serif", 5704 "'Times New Roman', serif", 5705 "cursive", 5706 "fantasy", 5707 '\\"Times New Roman', 5708 '"Times New Roman"', 5709 'Times, \\"Times New Roman', 5710 'Times, "Times New Roman"', 5711 "-no-such-font-installed", 5712 "inherit roman", 5713 "roman inherit", 5714 "Times, inherit roman", 5715 "inherit roman, Times", 5716 "roman inherit, Times", 5717 "Times, roman inherit", 5718 ], 5719 invalid_values: [ 5720 '"Times New" Roman', 5721 '"Times New Roman\n', 5722 'Times, "Times New Roman\n', 5723 ], 5724 }, 5725 "font-feature-settings": { 5726 domProp: "fontFeatureSettings", 5727 inherited: true, 5728 type: CSS_TYPE_LONGHAND, 5729 applies_to_first_letter: true, 5730 applies_to_first_line: true, 5731 applies_to_marker: true, 5732 applies_to_placeholder: true, 5733 applies_to_cue: true, 5734 initial_values: ["normal"], 5735 other_values: [ 5736 "'liga' on", 5737 "'liga'", 5738 '"liga" 1', 5739 "'liga', 'clig' 1", 5740 '"liga" off', 5741 '"liga" 0', 5742 '"cv01" 3, "cv02" 4', 5743 '"cswh", "smcp" off, "salt" 4', 5744 '"cswh" 1, "smcp" off, "salt" 4', 5745 '"cswh" 0, \'blah\', "liga", "smcp" off, "salt" 4', 5746 '"liga" ,"smcp" 0 , "blah"', 5747 '"ab\\"c"', 5748 '"ab\\\\c"', 5749 "'vert' calc(2)", 5750 ], 5751 invalid_values: [ 5752 "liga", 5753 "liga 1", 5754 "liga normal", 5755 '"liga" normal', 5756 "normal liga", 5757 'normal "liga"', 5758 'normal, "liga"', 5759 '"liga=1"', 5760 "'foobar' on", 5761 '"blahblah" 0', 5762 '"liga" 3.14', 5763 '"liga" 1 3.14', 5764 '"liga" 1 normal', 5765 '"liga" 1 off', 5766 '"liga" on off', 5767 '"liga" , 0 "smcp"', 5768 '"liga" "smcp"', 5769 ], 5770 }, 5771 "font-kerning": { 5772 domProp: "fontKerning", 5773 inherited: true, 5774 type: CSS_TYPE_LONGHAND, 5775 applies_to_first_letter: true, 5776 applies_to_first_line: true, 5777 applies_to_marker: true, 5778 applies_to_placeholder: true, 5779 applies_to_cue: true, 5780 initial_values: ["auto"], 5781 other_values: ["normal", "none"], 5782 invalid_values: ["on"], 5783 }, 5784 "font-language-override": { 5785 domProp: "fontLanguageOverride", 5786 inherited: true, 5787 type: CSS_TYPE_LONGHAND, 5788 applies_to_first_letter: true, 5789 applies_to_first_line: true, 5790 applies_to_marker: true, 5791 applies_to_placeholder: true, 5792 applies_to_cue: true, 5793 initial_values: ["normal"], 5794 other_values: ["'ENG'", "'TRK'", '"TRK"', "'N\\'Ko'"], 5795 invalid_values: ["TRK", "ja"], 5796 }, 5797 "font-size": { 5798 domProp: "fontSize", 5799 inherited: true, 5800 type: CSS_TYPE_LONGHAND, 5801 applies_to_first_letter: true, 5802 applies_to_first_line: true, 5803 applies_to_marker: true, 5804 applies_to_placeholder: true, 5805 applies_to_cue: true, 5806 initial_values: [ 5807 "medium", 5808 "1rem", 5809 "calc(1rem)", 5810 "calc(0.75rem + 200% - 125% + 0.25rem - 75%)", 5811 ], 5812 other_values: [ 5813 "large", 5814 "2em", 5815 "50%", 5816 "xx-small", 5817 "xxx-large", 5818 "36pt", 5819 "8px", 5820 "larger", 5821 "smaller", 5822 "0px", 5823 "0%", 5824 "calc(2em)", 5825 "calc(36pt + 75% + (30% + 2em + 2px))", 5826 "calc(-2em)", 5827 "calc(-50%)", 5828 "calc(-1px)", 5829 ], 5830 invalid_values: ["stretch", "-2em", "-50%", "-1px"], 5831 quirks_values: { 5: "5px" }, 5832 }, 5833 "font-size-adjust": { 5834 domProp: "fontSizeAdjust", 5835 inherited: true, 5836 type: CSS_TYPE_LONGHAND, 5837 applies_to_first_letter: true, 5838 applies_to_first_line: true, 5839 applies_to_marker: true, 5840 applies_to_placeholder: true, 5841 applies_to_cue: true, 5842 initial_values: ["none"], 5843 other_values: [ 5844 "0.7", 5845 "0.0", 5846 "0", 5847 "3", 5848 "from-font", 5849 "cap-height 0.8", 5850 "ch-width 0.4", 5851 "ic-width 0.4", 5852 "ic-height 0.9", 5853 "ch-width from-font", 5854 ], 5855 invalid_values: [ 5856 "-0.3", 5857 "-1", 5858 "normal", 5859 "none none", 5860 "cap-height none", 5861 "none from-font", 5862 "from-font none", 5863 "0.5 from-font", 5864 "0.5 cap-height", 5865 "cap-height, 0.8", 5866 ], 5867 }, 5868 "font-stretch": { 5869 domProp: "fontStretch", 5870 inherited: true, 5871 type: CSS_TYPE_LONGHAND, 5872 applies_to_first_letter: true, 5873 applies_to_first_line: true, 5874 applies_to_marker: true, 5875 applies_to_placeholder: true, 5876 applies_to_cue: true, 5877 initial_values: ["normal"], 5878 other_values: [ 5879 "ultra-condensed", 5880 "extra-condensed", 5881 "condensed", 5882 "semi-condensed", 5883 "semi-expanded", 5884 "expanded", 5885 "extra-expanded", 5886 "ultra-expanded", 5887 ], 5888 invalid_values: ["narrower", "wider"], 5889 }, 5890 "font-style": { 5891 domProp: "fontStyle", 5892 inherited: true, 5893 type: CSS_TYPE_LONGHAND, 5894 applies_to_first_letter: true, 5895 applies_to_first_line: true, 5896 applies_to_marker: true, 5897 applies_to_placeholder: true, 5898 applies_to_cue: true, 5899 initial_values: ["normal"], 5900 other_values: ["italic", "oblique"], 5901 invalid_values: [], 5902 }, 5903 "font-synthesis": { 5904 domProp: "fontSynthesis", 5905 inherited: true, 5906 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 5907 subproperties: [ 5908 "font-synthesis-weight", 5909 "font-synthesis-style", 5910 "font-synthesis-small-caps", 5911 "font-synthesis-position", 5912 ], 5913 applies_to_first_letter: true, 5914 applies_to_first_line: true, 5915 applies_to_marker: true, 5916 applies_to_placeholder: true, 5917 applies_to_cue: true, 5918 initial_values: [ 5919 "weight style small-caps position", 5920 "weight small-caps style position", 5921 "small-caps weight position style", 5922 "small-caps style position weight", 5923 "style position weight small-caps", 5924 "style position small-caps weight", 5925 ], 5926 other_values: [ 5927 "none", 5928 "weight", 5929 "style", 5930 "oblique-only", 5931 "small-caps", 5932 "position", 5933 "weight style", 5934 "style weight", 5935 "weight oblique-only", 5936 "oblique-only weight", 5937 "weight small-caps", 5938 "small-caps weight", 5939 "weight position", 5940 "position weight", 5941 "style small-caps", 5942 "small-caps style", 5943 "oblique-only small-caps", 5944 "small-caps oblique-only", 5945 "style position", 5946 "position style", 5947 "oblique-only position", 5948 "position oblique-only", 5949 "small-caps position", 5950 "position small-caps", 5951 "weight style small-caps", 5952 "small-caps weight style", 5953 "weight oblique-only small-caps", 5954 "small-caps weight oblique-only", 5955 "weight style position", 5956 "position weight style", 5957 "weight oblique-only position", 5958 "position weight oblique-only", 5959 "weight small-caps position", 5960 "position weight small-caps", 5961 ], 5962 invalid_values: [ 5963 "10px", 5964 "weight none", 5965 "style none", 5966 "oblique-only none", 5967 "none style", 5968 "none oblique-only", 5969 "none 10px", 5970 "weight 10px", 5971 "weight weight", 5972 "style style", 5973 "style oblique-only", 5974 "oblique-only oblique-only", 5975 "small-caps none", 5976 "small-caps small-caps", 5977 "position none", 5978 "position position", 5979 ], 5980 }, 5981 "font-synthesis-weight": { 5982 domProp: "fontSynthesisWeight", 5983 inherited: true, 5984 type: CSS_TYPE_LONGHAND, 5985 applies_to_first_letter: true, 5986 applies_to_first_line: true, 5987 applies_to_marker: true, 5988 applies_to_placeholder: true, 5989 applies_to_cue: true, 5990 initial_values: ["auto"], 5991 other_values: ["none"], 5992 invalid_values: ["auto none", "weight", "normal", "0"], 5993 }, 5994 "font-synthesis-style": { 5995 domProp: "fontSynthesisStyle", 5996 inherited: true, 5997 type: CSS_TYPE_LONGHAND, 5998 applies_to_first_letter: true, 5999 applies_to_first_line: true, 6000 applies_to_marker: true, 6001 applies_to_placeholder: true, 6002 applies_to_cue: true, 6003 initial_values: ["auto"], 6004 other_values: ["none", "oblique-only"], 6005 invalid_values: ["auto none", "style", "normal", "0"], 6006 }, 6007 "font-synthesis-small-caps": { 6008 domProp: "fontSynthesisSmallCaps", 6009 inherited: true, 6010 type: CSS_TYPE_LONGHAND, 6011 applies_to_first_letter: true, 6012 applies_to_first_line: true, 6013 applies_to_marker: true, 6014 applies_to_placeholder: true, 6015 applies_to_cue: true, 6016 initial_values: ["auto"], 6017 other_values: ["none"], 6018 invalid_values: ["auto none", "small-caps", "normal", "0"], 6019 }, 6020 "font-synthesis-position": { 6021 domProp: "fontSynthesisPosition", 6022 inherited: true, 6023 type: CSS_TYPE_LONGHAND, 6024 applies_to_first_letter: true, 6025 applies_to_first_line: true, 6026 applies_to_marker: true, 6027 applies_to_placeholder: true, 6028 applies_to_cue: true, 6029 initial_values: ["auto"], 6030 other_values: ["none"], 6031 invalid_values: ["auto none", "position", "normal", "0"], 6032 }, 6033 "font-variant": { 6034 domProp: "fontVariant", 6035 inherited: true, 6036 type: CSS_TYPE_TRUE_SHORTHAND, 6037 subproperties: [ 6038 "font-variant-alternates", 6039 "font-variant-caps", 6040 "font-variant-east-asian", 6041 "font-variant-ligatures", 6042 "font-variant-numeric", 6043 "font-variant-position", 6044 ], 6045 initial_values: ["normal"], 6046 other_values: [ 6047 "small-caps", 6048 "none", 6049 "traditional oldstyle-nums", 6050 "all-small-caps", 6051 "common-ligatures no-discretionary-ligatures", 6052 "proportional-nums oldstyle-nums", 6053 "proportional-nums slashed-zero diagonal-fractions oldstyle-nums ordinal", 6054 "traditional historical-forms styleset(ok-alt-a, ok-alt-b)", 6055 "styleset(potato)", 6056 ], 6057 invalid_values: [ 6058 "small-caps normal", 6059 "small-caps small-caps", 6060 "none common-ligatures", 6061 "common-ligatures none", 6062 "small-caps potato", 6063 "small-caps jis83 all-small-caps", 6064 "super historical-ligatures sub", 6065 "stacked-fractions diagonal-fractions historical-ligatures", 6066 "common-ligatures traditional common-ligatures", 6067 "lining-nums traditional slashed-zero ordinal normal", 6068 "traditional historical-forms styleset(ok-alt-a, ok-alt-b) historical-forms", 6069 "historical-forms styleset(ok-alt-a, ok-alt-b) traditional styleset(potato)", 6070 "annotation(a,b,c)", 6071 ], 6072 }, 6073 "font-variant-alternates": { 6074 domProp: "fontVariantAlternates", 6075 inherited: true, 6076 type: CSS_TYPE_LONGHAND, 6077 applies_to_first_letter: true, 6078 applies_to_first_line: true, 6079 applies_to_marker: true, 6080 applies_to_placeholder: true, 6081 applies_to_cue: true, 6082 initial_values: ["normal"], 6083 other_values: [ 6084 "historical-forms", 6085 "styleset(alt-a, alt-b)", 6086 "character-variant(a, b, c)", 6087 "annotation(circled)", 6088 "swash(squishy)", 6089 "styleset(complex\\ blob, a)", 6090 "annotation(\\62 lah)", 6091 ], 6092 invalid_values: [ 6093 "historical-forms normal", 6094 "historical-forms historical-forms", 6095 "swash", 6096 "swash(3)", 6097 "annotation(a, b)", 6098 "ornaments(a,b)", 6099 "styleset(1234blah)", 6100 "annotation(a), annotation(b)", 6101 "annotation(a) normal", 6102 ], 6103 }, 6104 "font-variant-caps": { 6105 domProp: "fontVariantCaps", 6106 inherited: true, 6107 type: CSS_TYPE_LONGHAND, 6108 applies_to_first_letter: true, 6109 applies_to_first_line: true, 6110 applies_to_marker: true, 6111 applies_to_placeholder: true, 6112 applies_to_cue: true, 6113 initial_values: ["normal"], 6114 other_values: [ 6115 "small-caps", 6116 "all-small-caps", 6117 "petite-caps", 6118 "all-petite-caps", 6119 "titling-caps", 6120 "unicase", 6121 ], 6122 invalid_values: [ 6123 "normal small-caps", 6124 "petite-caps normal", 6125 "unicase unicase", 6126 ], 6127 }, 6128 "font-variant-east-asian": { 6129 domProp: "fontVariantEastAsian", 6130 inherited: true, 6131 type: CSS_TYPE_LONGHAND, 6132 applies_to_first_letter: true, 6133 applies_to_first_line: true, 6134 applies_to_marker: true, 6135 applies_to_placeholder: true, 6136 applies_to_cue: true, 6137 initial_values: ["normal"], 6138 other_values: [ 6139 "jis78", 6140 "jis83", 6141 "jis90", 6142 "jis04", 6143 "simplified", 6144 "traditional", 6145 "full-width", 6146 "proportional-width", 6147 "ruby", 6148 "jis78 full-width", 6149 "jis78 full-width ruby", 6150 "simplified proportional-width", 6151 "ruby simplified", 6152 ], 6153 invalid_values: [ 6154 "jis78 normal", 6155 "jis90 jis04", 6156 "simplified traditional", 6157 "full-width proportional-width", 6158 "ruby simplified ruby", 6159 "jis78 ruby simplified", 6160 ], 6161 }, 6162 "font-variant-ligatures": { 6163 domProp: "fontVariantLigatures", 6164 inherited: true, 6165 type: CSS_TYPE_LONGHAND, 6166 applies_to_first_letter: true, 6167 applies_to_first_line: true, 6168 applies_to_marker: true, 6169 applies_to_placeholder: true, 6170 applies_to_cue: true, 6171 initial_values: ["normal"], 6172 other_values: [ 6173 "none", 6174 "common-ligatures", 6175 "no-common-ligatures", 6176 "discretionary-ligatures", 6177 "no-discretionary-ligatures", 6178 "historical-ligatures", 6179 "no-historical-ligatures", 6180 "contextual", 6181 "no-contextual", 6182 "common-ligatures no-discretionary-ligatures", 6183 "contextual no-discretionary-ligatures", 6184 "historical-ligatures no-common-ligatures", 6185 "no-historical-ligatures discretionary-ligatures", 6186 "common-ligatures no-discretionary-ligatures historical-ligatures no-contextual", 6187 ], 6188 invalid_values: [ 6189 "common-ligatures normal", 6190 "common-ligatures no-common-ligatures", 6191 "common-ligatures common-ligatures", 6192 "no-historical-ligatures historical-ligatures", 6193 "no-discretionary-ligatures discretionary-ligatures", 6194 "no-contextual contextual", 6195 "common-ligatures no-discretionary-ligatures no-common-ligatures", 6196 "common-ligatures none", 6197 "no-discretionary-ligatures none", 6198 "none common-ligatures", 6199 ], 6200 }, 6201 "font-variant-numeric": { 6202 domProp: "fontVariantNumeric", 6203 inherited: true, 6204 type: CSS_TYPE_LONGHAND, 6205 applies_to_first_letter: true, 6206 applies_to_first_line: true, 6207 applies_to_marker: true, 6208 applies_to_placeholder: true, 6209 applies_to_cue: true, 6210 initial_values: ["normal"], 6211 other_values: [ 6212 "lining-nums", 6213 "oldstyle-nums", 6214 "proportional-nums", 6215 "tabular-nums", 6216 "diagonal-fractions", 6217 "stacked-fractions", 6218 "slashed-zero", 6219 "ordinal", 6220 "lining-nums diagonal-fractions", 6221 "tabular-nums stacked-fractions", 6222 "tabular-nums slashed-zero stacked-fractions", 6223 "proportional-nums slashed-zero diagonal-fractions oldstyle-nums ordinal", 6224 ], 6225 invalid_values: [ 6226 "lining-nums normal", 6227 "lining-nums oldstyle-nums", 6228 "lining-nums normal slashed-zero ordinal", 6229 "proportional-nums tabular-nums", 6230 "diagonal-fractions stacked-fractions", 6231 "slashed-zero diagonal-fractions slashed-zero", 6232 "lining-nums slashed-zero diagonal-fractions oldstyle-nums", 6233 "diagonal-fractions diagonal-fractions", 6234 ], 6235 }, 6236 "font-variant-position": { 6237 domProp: "fontVariantPosition", 6238 inherited: true, 6239 type: CSS_TYPE_LONGHAND, 6240 applies_to_first_letter: true, 6241 applies_to_first_line: true, 6242 applies_to_marker: true, 6243 applies_to_placeholder: true, 6244 applies_to_cue: true, 6245 initial_values: ["normal"], 6246 other_values: ["super", "sub"], 6247 invalid_values: ["normal sub", "super sub"], 6248 }, 6249 "font-weight": { 6250 domProp: "fontWeight", 6251 inherited: true, 6252 type: CSS_TYPE_LONGHAND, 6253 applies_to_first_letter: true, 6254 applies_to_first_line: true, 6255 applies_to_marker: true, 6256 applies_to_placeholder: true, 6257 applies_to_cue: true, 6258 initial_values: ["normal", "400"], 6259 other_values: [ 6260 "bold", 6261 "100", 6262 "200", 6263 "300", 6264 "500", 6265 "600", 6266 "700", 6267 "800", 6268 "900", 6269 "bolder", 6270 "lighter", 6271 "10.5", 6272 "calc(10 + 10)", 6273 "calc(10 - 99)", 6274 "100.0", 6275 "107", 6276 "399", 6277 "401", 6278 "699", 6279 "710", 6280 "1000", 6281 ], 6282 invalid_values: ["0", "1001", "calc(10%)"], 6283 }, 6284 height: { 6285 domProp: "height", 6286 inherited: false, 6287 type: CSS_TYPE_LONGHAND, 6288 /* FIXME: test zero, and test calc clamping */ 6289 initial_values: [" auto"], 6290 /* computed value tests for height test more with display:block */ 6291 prerequisites: { display: "block" }, 6292 other_values: [ 6293 "15px", 6294 "3em", 6295 "15%", 6296 "max-content", 6297 "min-content", 6298 "fit-content", 6299 "stretch", 6300 "-moz-max-content", 6301 "-moz-min-content", 6302 "-moz-fit-content", 6303 "-moz-available", 6304 "-webkit-fill-available", 6305 "calc(2px)", 6306 "calc(50%)", 6307 "calc(3*25px)", 6308 "calc(25px*3)", 6309 "calc(3*25px + 50%)", 6310 "fit-content(100px)", 6311 "fit-content(10%)", 6312 "fit-content(calc(3*25px + 50%))", 6313 ], 6314 invalid_values: ["none"], 6315 quirks_values: { 5: "5px" }, 6316 }, 6317 "ime-mode": { 6318 domProp: "imeMode", 6319 inherited: false, 6320 type: CSS_TYPE_LONGHAND, 6321 initial_values: ["auto"], 6322 other_values: ["normal", "disabled", "active", "inactive"], 6323 invalid_values: ["none", "enabled", "1px"], 6324 }, 6325 left: { 6326 domProp: "left", 6327 inherited: false, 6328 type: CSS_TYPE_LONGHAND, 6329 /* FIXME: run tests with multiple prerequisites */ 6330 prerequisites: { position: "relative" }, 6331 /* XXX 0 may or may not be equal to auto */ 6332 initial_values: ["auto"], 6333 other_values: [ 6334 "32px", 6335 "-3em", 6336 "12%", 6337 "calc(2px)", 6338 "calc(-2px)", 6339 "calc(50%)", 6340 "calc(3*25px)", 6341 "calc(25px*3)", 6342 "calc(3*25px + 50%)", 6343 ], 6344 invalid_values: ["stretch"], 6345 quirks_values: { 5: "5px" }, 6346 }, 6347 "letter-spacing": { 6348 domProp: "letterSpacing", 6349 inherited: true, 6350 type: CSS_TYPE_LONGHAND, 6351 applies_to_first_letter: true, 6352 applies_to_first_line: true, 6353 applies_to_placeholder: true, 6354 initial_values: ["normal", "0", "0px", "calc(0px)", "0%"], 6355 other_values: [ 6356 "1em", 6357 "2px", 6358 "-3px", 6359 "50%", 6360 "-120%", 6361 "calc(1em)", 6362 "calc(1em + 3px)", 6363 "calc(15px / 2)", 6364 "calc(15px/2)", 6365 "calc(-3px)", 6366 "calc(-10%/2 - 1em)", 6367 ], 6368 invalid_values: ["stretch"], 6369 quirks_values: { 5: "5px" }, 6370 }, 6371 "line-break": { 6372 domProp: "lineBreak", 6373 inherited: true, 6374 type: CSS_TYPE_LONGHAND, 6375 initial_values: ["auto"], 6376 other_values: ["loose", "normal", "strict", "anywhere"], 6377 invalid_values: [], 6378 }, 6379 "line-height": { 6380 domProp: "lineHeight", 6381 inherited: true, 6382 type: CSS_TYPE_LONGHAND, 6383 applies_to_marker: true, 6384 applies_to_first_letter: true, 6385 applies_to_first_line: true, 6386 applies_to_placeholder: true, 6387 applies_to_cue: true, 6388 /* 6389 * Inheritance tests require consistent font size, since 6390 * getComputedStyle (which uses the CSS2 computed value, or 6391 * CSS2.1 used value) doesn't match what the CSS2.1 computed 6392 * value is. And they even require consistent font metrics for 6393 * computation of 'normal'. 6394 */ 6395 prerequisites: { 6396 "font-size": "19px", 6397 "font-size-adjust": "none", 6398 "font-family": "serif", 6399 "font-weight": "normal", 6400 "font-style": "normal", 6401 height: "18px", 6402 display: "block", 6403 "writing-mode": "initial", 6404 }, 6405 6406 initial_values: ["normal"], 6407 other_values: [ 6408 "1.0", 6409 "1", 6410 "1em", 6411 "47px", 6412 "calc(2px)", 6413 "calc(50%)", 6414 "calc(3*25px)", 6415 "calc(25px*3)", 6416 "calc(3*25px + 50%)", 6417 "calc(1 + 2*3/4)", 6418 ], 6419 invalid_values: ["calc(1 + 2px)", "calc(100% + 0.1)", "stretch"], 6420 }, 6421 "list-style": { 6422 domProp: "listStyle", 6423 inherited: true, 6424 type: CSS_TYPE_TRUE_SHORTHAND, 6425 subproperties: [ 6426 "list-style-type", 6427 "list-style-position", 6428 "list-style-image", 6429 ], 6430 initial_values: [ 6431 "outside", 6432 "disc", 6433 "disc outside", 6434 "outside disc", 6435 "disc none", 6436 "none disc", 6437 "none disc outside", 6438 "none outside disc", 6439 "disc none outside", 6440 "disc outside none", 6441 "outside none disc", 6442 "outside disc none", 6443 ], 6444 other_values: [ 6445 "inside none", 6446 "none inside", 6447 "none none inside", 6448 "square", 6449 "none", 6450 "none none", 6451 "outside none none", 6452 "none outside none", 6453 "none none outside", 6454 "none outside", 6455 "outside none", 6456 "outside outside", 6457 "outside inside", 6458 "\\32 style", 6459 "\\32 style inside", 6460 '"-"', 6461 "'-'", 6462 "inside '-'", 6463 "'-' outside", 6464 "none '-'", 6465 "inside none '-'", 6466 'symbols("*" "\\2020" "\\2021" "\\A7")', 6467 'symbols(cyclic "*" "\\2020" "\\2021" "\\A7")', 6468 'inside symbols("*" "\\2020" "\\2021" "\\A7")', 6469 'symbols("*" "\\2020" "\\2021" "\\A7") outside', 6470 'none symbols("*" "\\2020" "\\2021" "\\A7")', 6471 'inside none symbols("*" "\\2020" "\\2021" "\\A7")', 6472 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 6473 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 6474 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', 6475 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', 6476 'outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 6477 'outside none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 6478 'outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', 6479 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', 6480 'none outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 6481 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside none', 6482 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside', 6483 ], 6484 invalid_values: [ 6485 "disc disc", 6486 "unknown value", 6487 "none none none", 6488 "none disc url(404.png)", 6489 "none url(404.png) disc", 6490 "disc none url(404.png)", 6491 "disc url(404.png) none", 6492 "url(404.png) none disc", 6493 "url(404.png) disc none", 6494 "none disc outside url(404.png)", 6495 ], 6496 }, 6497 "list-style-image": { 6498 domProp: "listStyleImage", 6499 inherited: true, 6500 type: CSS_TYPE_LONGHAND, 6501 initial_values: ["none"], 6502 other_values: [ 6503 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 6504 // Add some tests for interesting url() values here to test serialization, etc. 6505 "url('data:text/plain,\"')", 6506 'url("data:text/plain,\'")', 6507 "url('data:text/plain,\\'')", 6508 'url("data:text/plain,\\"")', 6509 "url('data:text/plain,\\\"')", 6510 'url("data:text/plain,\\\'")', 6511 "url(data:text/plain,\\\\)", 6512 ].concat(validNonUrlImageValues), 6513 invalid_values: ["url('border.png') url('border.png')"].concat( 6514 invalidNonUrlImageValues 6515 ), 6516 unbalanced_values: [].concat(unbalancedGradientAndElementValues), 6517 }, 6518 "list-style-position": { 6519 domProp: "listStylePosition", 6520 inherited: true, 6521 type: CSS_TYPE_LONGHAND, 6522 initial_values: ["outside"], 6523 other_values: ["inside"], 6524 invalid_values: [], 6525 }, 6526 "list-style-type": { 6527 domProp: "listStyleType", 6528 inherited: true, 6529 type: CSS_TYPE_LONGHAND, 6530 initial_values: ["disc"], 6531 other_values: [ 6532 "none", 6533 "circle", 6534 "square", 6535 "disclosure-closed", 6536 "disclosure-open", 6537 "decimal", 6538 "decimal-leading-zero", 6539 "lower-roman", 6540 "upper-roman", 6541 "lower-greek", 6542 "lower-alpha", 6543 "lower-latin", 6544 "upper-alpha", 6545 "upper-latin", 6546 "hebrew", 6547 "armenian", 6548 "georgian", 6549 "cjk-decimal", 6550 "cjk-ideographic", 6551 "hiragana", 6552 "katakana", 6553 "hiragana-iroha", 6554 "katakana-iroha", 6555 "japanese-informal", 6556 "japanese-formal", 6557 "korean-hangul-formal", 6558 "korean-hanja-informal", 6559 "korean-hanja-formal", 6560 "simp-chinese-informal", 6561 "simp-chinese-formal", 6562 "trad-chinese-informal", 6563 "trad-chinese-formal", 6564 "ethiopic-numeric", 6565 "-moz-cjk-heavenly-stem", 6566 "-moz-cjk-earthly-branch", 6567 "-moz-trad-chinese-informal", 6568 "-moz-trad-chinese-formal", 6569 "-moz-simp-chinese-informal", 6570 "-moz-simp-chinese-formal", 6571 "-moz-japanese-informal", 6572 "-moz-japanese-formal", 6573 "-moz-arabic-indic", 6574 "-moz-persian", 6575 "-moz-urdu", 6576 "-moz-devanagari", 6577 "-moz-gurmukhi", 6578 "-moz-gujarati", 6579 "-moz-oriya", 6580 "-moz-kannada", 6581 "-moz-malayalam", 6582 "-moz-bengali", 6583 "-moz-tamil", 6584 "-moz-telugu", 6585 "-moz-thai", 6586 "-moz-lao", 6587 "-moz-myanmar", 6588 "-moz-khmer", 6589 "-moz-hangul", 6590 "-moz-hangul-consonant", 6591 "-moz-ethiopic-halehame", 6592 "-moz-ethiopic-numeric", 6593 "-moz-ethiopic-halehame-am", 6594 "-moz-ethiopic-halehame-ti-er", 6595 "-moz-ethiopic-halehame-ti-et", 6596 "other-style", 6597 "inside", 6598 "outside", 6599 "\\32 style", 6600 '"-"', 6601 "'-'", 6602 'symbols("*" "\\2020" "\\2021" "\\A7")', 6603 "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')", 6604 ], 6605 invalid_values: [], 6606 }, 6607 margin: { 6608 domProp: "margin", 6609 inherited: false, 6610 type: CSS_TYPE_TRUE_SHORTHAND, 6611 subproperties: [ 6612 "margin-top", 6613 "margin-right", 6614 "margin-bottom", 6615 "margin-left", 6616 ], 6617 initial_values: ["0", "0px 0 0em", "0% 0px 0em 0pt"], 6618 other_values: [ 6619 "3px 0", 6620 "2em 4px 2pt", 6621 "1em 2em 3px 4px", 6622 "1em calc(2em + 3px) 4ex 5cm", 6623 ], 6624 invalid_values: ["1px calc(nonsense)", "1px red"], 6625 unbalanced_values: ["1px calc("], 6626 quirks_values: { 5: "5px", "3px 6px 2 5px": "3px 6px 2px 5px" }, 6627 }, 6628 "margin-bottom": { 6629 domProp: "marginBottom", 6630 inherited: false, 6631 type: CSS_TYPE_LONGHAND, 6632 applies_to_first_letter: true, 6633 /* XXX testing auto has prerequisites */ 6634 initial_values: ["0", "0px", "0%", "calc(0pt)", "calc(0% + 0px)"], 6635 other_values: [ 6636 "1px", 6637 "2em", 6638 "5%", 6639 "calc(2px)", 6640 "calc(-2px)", 6641 "calc(50%)", 6642 "calc(3*25px)", 6643 "calc(25px*3)", 6644 "calc(3*25px + 50%)", 6645 ], 6646 invalid_values: [], 6647 quirks_values: { 5: "5px" }, 6648 }, 6649 "margin-left": { 6650 domProp: "marginLeft", 6651 inherited: false, 6652 type: CSS_TYPE_LONGHAND, 6653 applies_to_first_letter: true, 6654 /* XXX testing auto has prerequisites */ 6655 initial_values: ["0", "0px", "0%", "calc(0pt)", "calc(0% + 0px)"], 6656 other_values: [ 6657 "1px", 6658 "2em", 6659 "5%", 6660 ".5px", 6661 "+32px", 6662 "+.789px", 6663 "-.328px", 6664 "+0.56px", 6665 "-0.974px", 6666 "237px", 6667 "-289px", 6668 "-056px", 6669 "1987.45px", 6670 "-84.32px", 6671 "calc(2px)", 6672 "calc(-2px)", 6673 "calc(50%)", 6674 "calc(3*25px)", 6675 "calc(25px*3)", 6676 "calc(3*25px + 50%)", 6677 ], 6678 invalid_values: [ 6679 "stretch", 6680 "..25px", 6681 ".+5px", 6682 ".px", 6683 "-.px", 6684 "++5px", 6685 "-+4px", 6686 "+-3px", 6687 "--7px", 6688 "+-.6px", 6689 "-+.5px", 6690 "++.7px", 6691 "--.4px", 6692 ], 6693 quirks_values: { 5: "5px" }, 6694 }, 6695 "margin-right": { 6696 domProp: "marginRight", 6697 inherited: false, 6698 type: CSS_TYPE_LONGHAND, 6699 applies_to_first_letter: true, 6700 /* XXX testing auto has prerequisites */ 6701 initial_values: ["0", "0px", "0%", "calc(0pt)", "calc(0% + 0px)"], 6702 other_values: [ 6703 "1px", 6704 "2em", 6705 "5%", 6706 "calc(2px)", 6707 "calc(-2px)", 6708 "calc(50%)", 6709 "calc(3*25px)", 6710 "calc(25px*3)", 6711 "calc(3*25px + 50%)", 6712 ], 6713 invalid_values: [], 6714 quirks_values: { 5: "5px" }, 6715 }, 6716 "margin-top": { 6717 domProp: "marginTop", 6718 inherited: false, 6719 type: CSS_TYPE_LONGHAND, 6720 applies_to_first_letter: true, 6721 /* XXX testing auto has prerequisites */ 6722 initial_values: ["0", "0px", "0%", "calc(0pt)", "calc(0% + 0px)"], 6723 other_values: [ 6724 "1px", 6725 "2em", 6726 "5%", 6727 "calc(2px)", 6728 "calc(-2px)", 6729 "calc(50%)", 6730 "calc(3*25px)", 6731 "calc(25px*3)", 6732 "calc(3*25px + 50%)", 6733 ], 6734 invalid_values: [], 6735 quirks_values: { 5: "5px" }, 6736 }, 6737 "max-height": { 6738 domProp: "maxHeight", 6739 inherited: false, 6740 type: CSS_TYPE_LONGHAND, 6741 prerequisites: { display: "block" }, 6742 initial_values: ["none"], 6743 other_values: [ 6744 "30px", 6745 "50%", 6746 "0", 6747 "max-content", 6748 "min-content", 6749 "fit-content", 6750 "stretch", 6751 "-moz-max-content", 6752 "-moz-min-content", 6753 "-moz-fit-content", 6754 "-moz-available", 6755 "-webkit-fill-available", 6756 "calc(2px)", 6757 "calc(-2px)", 6758 "calc(0px)", 6759 "calc(50%)", 6760 "calc(3*25px)", 6761 "calc(25px*3)", 6762 "calc(3*25px + 50%)", 6763 "fit-content(100px)", 6764 "fit-content(10%)", 6765 "fit-content(calc(3*25px + 50%))", 6766 ], 6767 invalid_values: ["auto"], 6768 quirks_values: { 5: "5px" }, 6769 }, 6770 "max-width": { 6771 domProp: "maxWidth", 6772 inherited: false, 6773 type: CSS_TYPE_LONGHAND, 6774 prerequisites: { display: "block" }, 6775 initial_values: ["none"], 6776 other_values: [ 6777 "30px", 6778 "50%", 6779 "0", 6780 "max-content", 6781 "min-content", 6782 "fit-content", 6783 "stretch", 6784 "-moz-max-content", 6785 "-moz-min-content", 6786 "-moz-fit-content", 6787 "-moz-available", 6788 "-webkit-fill-available", 6789 "calc(2px)", 6790 "calc(-2px)", 6791 "calc(0px)", 6792 "calc(50%)", 6793 "calc(3*25px)", 6794 "calc(25px*3)", 6795 "calc(3*25px + 50%)", 6796 "fit-content(100px)", 6797 "fit-content(10%)", 6798 "fit-content(calc(3*25px + 50%))", 6799 ], 6800 invalid_values: ["auto"], 6801 quirks_values: { 5: "5px" }, 6802 }, 6803 "min-height": { 6804 domProp: "minHeight", 6805 inherited: false, 6806 type: CSS_TYPE_LONGHAND, 6807 prerequisites: { display: "block" }, 6808 initial_values: ["auto", "0", "calc(0em)", "calc(-2px)"], 6809 other_values: [ 6810 "30px", 6811 "50%", 6812 "max-content", 6813 "min-content", 6814 "fit-content", 6815 "stretch", 6816 "-moz-max-content", 6817 "-moz-min-content", 6818 "-moz-fit-content", 6819 "-moz-available", 6820 "-webkit-fill-available", 6821 "calc(-1%)", 6822 "calc(2px)", 6823 "calc(50%)", 6824 "calc(3*25px)", 6825 "calc(25px*3)", 6826 "calc(3*25px + 50%)", 6827 "fit-content(100px)", 6828 "fit-content(10%)", 6829 "fit-content(calc(3*25px + 50%))", 6830 ], 6831 invalid_values: ["none"], 6832 quirks_values: { 5: "5px" }, 6833 }, 6834 "min-width": { 6835 domProp: "minWidth", 6836 inherited: false, 6837 type: CSS_TYPE_LONGHAND, 6838 prerequisites: { display: "block" }, 6839 initial_values: ["auto", "0", "calc(0em)", "calc(-2px)"], 6840 other_values: [ 6841 "30px", 6842 "50%", 6843 "max-content", 6844 "min-content", 6845 "fit-content", 6846 "stretch", 6847 "-moz-max-content", 6848 "-moz-min-content", 6849 "-moz-fit-content", 6850 "-moz-available", 6851 "-webkit-fill-available", 6852 "calc(-1%)", 6853 "calc(2px)", 6854 "calc(50%)", 6855 "calc(3*25px)", 6856 "calc(25px*3)", 6857 "calc(3*25px + 50%)", 6858 "fit-content(100px)", 6859 "fit-content(10%)", 6860 "fit-content(calc(3*25px + 50%))", 6861 ], 6862 invalid_values: ["none"], 6863 quirks_values: { 5: "5px" }, 6864 }, 6865 "object-fit": { 6866 domProp: "objectFit", 6867 inherited: false, 6868 type: CSS_TYPE_LONGHAND, 6869 initial_values: ["fill"], 6870 other_values: ["contain", "cover", "none", "scale-down"], 6871 invalid_values: ["auto", "5px", "100%"], 6872 }, 6873 "object-position": { 6874 domProp: "objectPosition", 6875 inherited: false, 6876 type: CSS_TYPE_LONGHAND, 6877 initial_values: ["50% 50%", "50%", "center", "center center"], 6878 other_values: [ 6879 "calc(20px)", 6880 "calc(20px) 10px", 6881 "10px calc(20px)", 6882 "calc(20px) 25%", 6883 "25% calc(20px)", 6884 "calc(20px) calc(20px)", 6885 "calc(20px + 1em) calc(20px / 2)", 6886 "calc(20px + 50%) calc(50% - 10px)", 6887 "calc(-20px) calc(-50%)", 6888 "calc(-20%) calc(-50%)", 6889 "0px 0px", 6890 "right 20px top 60px", 6891 "right 20px bottom 60px", 6892 "left 20px top 60px", 6893 "left 20px bottom 60px", 6894 "right -50px top -50px", 6895 "left -50px bottom -50px", 6896 "right 20px top -50px", 6897 "right -20px top 50px", 6898 "right 3em bottom 10px", 6899 "bottom 3em right 10px", 6900 "top 3em right 10px", 6901 "left 15px", 6902 "10px top", 6903 "left 20%", 6904 "right 20%", 6905 ], 6906 invalid_values: [ 6907 "center 10px center 4px", 6908 "center 10px center", 6909 "top 20%", 6910 "bottom 20%", 6911 "50% left", 6912 "top 50%", 6913 "50% bottom 10%", 6914 "right 10% 50%", 6915 "left right", 6916 "top bottom", 6917 "left 10% right", 6918 "top 20px bottom 20px", 6919 "left left", 6920 "20 20", 6921 "left top 15px", 6922 "left 10px top", 6923 ], 6924 }, 6925 offset: { 6926 domProp: "offset", 6927 inherited: false, 6928 type: CSS_TYPE_TRUE_SHORTHAND, 6929 subproperties: [ 6930 "offset-path", 6931 "offset-distance", 6932 "offset-rotate", 6933 "offset-anchor", 6934 "offset-position", 6935 ], 6936 initial_values: ["none"], 6937 other_values: [ 6938 "none 30deg reverse", 6939 "none 50px reverse 30deg", 6940 "none calc(10px + 20%) auto", 6941 "none reverse", 6942 "none / left center", 6943 "path('M 0 0 H 1') -200% auto", 6944 "path('M 0 0 H 1') -200%", 6945 "path('M 0 0 H 1') 50px", 6946 "path('M 0 0 H 1') auto", 6947 "path('M 0 0 H 1') reverse 30deg 50px", 6948 "path('M 0 0 H 1')", 6949 "path('m 20 0 h 100') -7rad 8px / auto", 6950 "path('m 0 30 v 100') -7rad 8px / left top", 6951 "path('m 0 0 h 100') -7rad 8px", 6952 "path('M 0 0 H 100') 100px 0deg", 6953 "top right / top left", 6954 "top right ray(45deg closest-side)", 6955 "50% 50% ray(0rad farthest-side)", 6956 ], 6957 invalid_values: [ 6958 "stretch", 6959 "100px 0deg path('m 0 0 h 100')", 6960 "30deg", 6961 "auto 30deg 100px", 6962 "auto / none", 6963 "none /", 6964 "none / 100px 20px 30deg", 6965 "path('M 20 30 A 60 70 80') bottom", 6966 "path('M 20 30 A 60 70 80') bottom top", 6967 "path('M 20 30 A 60 70 80') 100px 200px", 6968 "path('M 20 30 A 60 70 80') reverse auto", 6969 "path('M 20 30 A 60 70 80') reverse 10px 30deg", 6970 "path('M 20 30 A 60 70 80') /", 6971 ], 6972 }, 6973 "offset-anchor": { 6974 domProp: "offsetAnchor", 6975 inherited: false, 6976 type: CSS_TYPE_LONGHAND, 6977 initial_values: ["auto"], 6978 other_values: [ 6979 "left bottom", 6980 "center center", 6981 "calc(20% + 10px) center", 6982 "right 30em", 6983 "10px 20%", 6984 "left -10px top -20%", 6985 "right 10% bottom 20em", 6986 ], 6987 invalid_values: ["none", "10deg", "left 10% top"], 6988 }, 6989 "offset-distance": { 6990 domProp: "offsetDistance", 6991 inherited: false, 6992 type: CSS_TYPE_LONGHAND, 6993 initial_values: ["0"], 6994 other_values: ["10px", "10%", "190%", "-280%", "calc(30px + 40%)"], 6995 invalid_values: ["stretch", "none", "45deg"], 6996 }, 6997 "offset-path": { 6998 domProp: "offsetPath", 6999 inherited: false, 7000 type: CSS_TYPE_LONGHAND, 7001 initial_values: ["none"], 7002 other_values: [ 7003 "ray(0deg)", 7004 "ray(45deg closest-side)", 7005 "ray(0rad farthest-side)", 7006 "ray(0.5turn closest-corner contain)", 7007 "ray(200grad farthest-corner)", 7008 "ray(sides 180deg)", 7009 "ray(contain farthest-side 180deg)", 7010 "ray(calc(180deg - 45deg) farthest-side)", 7011 "ray(0deg at center center)", 7012 "ray(at 10% 10% 1rad)", 7013 ] 7014 .concat(pathValues.other_values) 7015 .concat(basicShapeOtherValues) 7016 .concat(basicShapeXywhRectValues) 7017 .concat(basicShapeShapeValues), 7018 invalid_values: [ 7019 "path('')", 7020 "ray(closest-side)", 7021 "ray(0deg, closest-side)", 7022 "ray(contain 0deg closest-side contain)", 7023 ].concat(pathValues.invalid_values), 7024 }, 7025 "offset-position": { 7026 domProp: "offsetPosition", 7027 inherited: false, 7028 type: CSS_TYPE_LONGHAND, 7029 initial_values: ["normal"], 7030 other_values: [ 7031 "auto", 7032 "left bottom", 7033 "center center", 7034 "calc(20% + 10px) center", 7035 "right 30em", 7036 "10px 20%", 7037 "left -10px top -20%", 7038 "right 10% bottom 20em", 7039 ], 7040 invalid_values: ["none", "10deg", "left 10% top"], 7041 }, 7042 "offset-rotate": { 7043 domProp: "offsetRotate", 7044 inherited: false, 7045 type: CSS_TYPE_LONGHAND, 7046 initial_values: ["auto"], 7047 other_values: ["reverse", "0deg", "0rad reverse", "-45deg", "5turn auto"], 7048 invalid_values: ["none", "10px", "reverse 0deg reverse", "reverse auto"], 7049 }, 7050 opacity: { 7051 domProp: "opacity", 7052 inherited: false, 7053 type: CSS_TYPE_LONGHAND, 7054 applies_to_first_letter: true, 7055 applies_to_first_line: true, 7056 applies_to_placeholder: true, 7057 applies_to_cue: true, 7058 initial_values: [ 7059 "1", 7060 "17", 7061 "397.376", 7062 "3e1", 7063 "3e+1", 7064 "3e0", 7065 "3e+0", 7066 "3e-0", 7067 "300%", 7068 ], 7069 other_values: ["0", "0.4", "0.0000", "-3", "3e-1", "-100%", "50%"], 7070 invalid_values: ["0px", "1px"], 7071 }, 7072 "-moz-orient": { 7073 domProp: "MozOrient", 7074 inherited: false, 7075 type: CSS_TYPE_LONGHAND, 7076 initial_values: ["inline"], 7077 other_values: ["horizontal", "vertical", "block"], 7078 invalid_values: ["none"], 7079 }, 7080 outline: { 7081 domProp: "outline", 7082 inherited: false, 7083 type: CSS_TYPE_TRUE_SHORTHAND, 7084 subproperties: ["outline-color", "outline-style", "outline-width"], 7085 initial_values: [ 7086 "none", 7087 "medium", 7088 "currentColor", 7089 "none medium currentcolor", 7090 ], 7091 other_values: [ 7092 "thin", 7093 "solid", 7094 "medium solid", 7095 "green solid", 7096 "10px solid", 7097 "thick solid", 7098 ], 7099 invalid_values: ["5%", "5", "5 solid green"], 7100 }, 7101 "outline-color": { 7102 domProp: "outlineColor", 7103 inherited: false, 7104 type: CSS_TYPE_LONGHAND, 7105 applies_to_cue: true, 7106 prerequisites: { color: "black" }, 7107 initial_values: ["currentColor"], // XXX should be invert 7108 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 7109 invalid_values: [ 7110 "#0", 7111 "#00", 7112 "#00000", 7113 "#0000000", 7114 "#000000000", 7115 "000000", 7116 "cc00ff", 7117 ], 7118 }, 7119 "outline-offset": { 7120 domProp: "outlineOffset", 7121 inherited: false, 7122 type: CSS_TYPE_LONGHAND, 7123 initial_values: [ 7124 "0", 7125 "0px", 7126 "-0", 7127 "calc(0px)", 7128 "calc(3em + 2px - 2px - 3em)", 7129 "calc(-0em)", 7130 ], 7131 other_values: [ 7132 "-3px", 7133 "1em", 7134 "calc(3em)", 7135 "calc(7pt + 3 * 2em)", 7136 "calc(-3px)", 7137 ], 7138 invalid_values: ["stretch", "5%"], 7139 }, 7140 "outline-style": { 7141 domProp: "outlineStyle", 7142 inherited: false, 7143 type: CSS_TYPE_LONGHAND, 7144 applies_to_cue: true, 7145 // XXX Should 'hidden' be the same as initial? 7146 initial_values: ["none"], 7147 other_values: [ 7148 "solid", 7149 "dashed", 7150 "dotted", 7151 "double", 7152 "outset", 7153 "inset", 7154 "groove", 7155 "ridge", 7156 "auto", 7157 ], 7158 invalid_values: [], 7159 }, 7160 "outline-width": { 7161 domProp: "outlineWidth", 7162 inherited: false, 7163 type: CSS_TYPE_LONGHAND, 7164 applies_to_cue: true, 7165 prerequisites: { "outline-style": "solid" }, 7166 initial_values: ["medium", "3px", "calc(4px - 1px)"], 7167 other_values: [ 7168 "thin", 7169 "thick", 7170 "1px", 7171 "2em", 7172 "calc(2px)", 7173 "calc(-2px)", 7174 "calc(0px)", 7175 "calc(0px)", 7176 "calc(5em)", 7177 "calc(3*25px)", 7178 "calc(25px*3)", 7179 "calc(3*25px + 5em)", 7180 ], 7181 invalid_values: ["stretch", "5%", "5"], 7182 }, 7183 overflow: { 7184 domProp: "overflow", 7185 inherited: false, 7186 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 7187 prerequisites: { display: "block", contain: "none" }, 7188 subproperties: ["overflow-x", "overflow-y"], 7189 initial_values: ["visible"], 7190 other_values: [ 7191 "auto", 7192 "scroll", 7193 "hidden", 7194 "clip", 7195 "auto auto", 7196 "auto scroll", 7197 "hidden scroll", 7198 "auto hidden", 7199 "clip clip", 7200 "overlay", 7201 "overlay overlay", 7202 ], 7203 invalid_values: [ 7204 "clip -moz-scrollbars-none", 7205 "-moz-scrollbars-none", 7206 "-moz-scrollbars-horizontal", 7207 "-moz-scrollbars-vertical", 7208 ], 7209 }, 7210 "overflow-x": { 7211 domProp: "overflowX", 7212 inherited: false, 7213 type: CSS_TYPE_LONGHAND, 7214 // No applies_to_placeholder because we have a !important rule in forms.css. 7215 prerequisites: { 7216 display: "block", 7217 "overflow-y": "visible", 7218 contain: "none", 7219 }, 7220 initial_values: ["visible"], 7221 other_values: ["auto", "scroll", "hidden", "clip", "overlay"], 7222 invalid_values: [], 7223 }, 7224 "overflow-y": { 7225 domProp: "overflowY", 7226 inherited: false, 7227 type: CSS_TYPE_LONGHAND, 7228 // No applies_to_placeholder because we have a !important rule in forms.css. 7229 prerequisites: { 7230 display: "block", 7231 "overflow-x": "visible", 7232 contain: "none", 7233 }, 7234 initial_values: ["visible"], 7235 other_values: ["auto", "scroll", "hidden", "clip", "overlay"], 7236 invalid_values: [], 7237 }, 7238 "overflow-inline": { 7239 domProp: "overflowInline", 7240 inherited: false, 7241 type: CSS_TYPE_LONGHAND, 7242 logical: true, 7243 // No applies_to_placeholder because we have a !important rule in forms.css. 7244 prerequisites: { 7245 display: "block", 7246 "overflow-block": "visible", 7247 contain: "none", 7248 }, 7249 initial_values: ["visible"], 7250 other_values: ["auto", "scroll", "hidden", "clip"], 7251 invalid_values: [], 7252 }, 7253 "overflow-block": { 7254 domProp: "overflowBlock", 7255 inherited: false, 7256 type: CSS_TYPE_LONGHAND, 7257 logical: true, 7258 // No applies_to_placeholder because we have a !important rule in forms.css. 7259 prerequisites: { 7260 display: "block", 7261 "overflow-inline": "visible", 7262 contain: "none", 7263 }, 7264 initial_values: ["visible"], 7265 other_values: ["auto", "scroll", "hidden", "clip"], 7266 invalid_values: [], 7267 }, 7268 "overflow-clip-margin": { 7269 domProp: "overflowClipMargin", 7270 inherited: false, 7271 type: CSS_TYPE_LONGHAND, 7272 initial_values: ["0px"], 7273 other_values: ["1px", "2em", "calc(10px + 1vh)"], 7274 invalid_values: ["stretch", "-10px"], 7275 }, 7276 padding: { 7277 domProp: "padding", 7278 inherited: false, 7279 type: CSS_TYPE_TRUE_SHORTHAND, 7280 subproperties: [ 7281 "padding-top", 7282 "padding-right", 7283 "padding-bottom", 7284 "padding-left", 7285 ], 7286 initial_values: [ 7287 "0", 7288 "0px 0 0em", 7289 "0% 0px 0em 0pt", 7290 "calc(0px) calc(0em) calc(-2px) calc(-1%)", 7291 ], 7292 other_values: ["3px 0", "2em 4px 2pt", "1em 2em 3px 4px"], 7293 invalid_values: ["1px calc(nonsense)", "1px red", "-1px"], 7294 unbalanced_values: ["1px calc("], 7295 quirks_values: { 5: "5px", "3px 6px 2 5px": "3px 6px 2px 5px" }, 7296 }, 7297 "padding-block": { 7298 domProp: "paddingBlock", 7299 inherited: false, 7300 type: CSS_TYPE_TRUE_SHORTHAND, 7301 subproperties: ["padding-block-start", "padding-block-end"], 7302 initial_values: ["0", "0px 0em"], 7303 other_values: ["3px 0", "2% 4px", "1em", "calc(1px) calc(-1%)"], 7304 invalid_values: ["1px calc(nonsense)", "1px red", "-1px", "auto", "none"], 7305 unbalanced_values: ["1px calc("], 7306 }, 7307 "padding-inline": { 7308 domProp: "paddingInline", 7309 inherited: false, 7310 type: CSS_TYPE_TRUE_SHORTHAND, 7311 subproperties: ["padding-inline-start", "padding-inline-end"], 7312 initial_values: ["0", "0px 0em"], 7313 other_values: ["3px 0", "2% 4px", "1em", "calc(1px) calc(-1%)"], 7314 invalid_values: ["1px calc(nonsense)", "1px red", "-1px", "auto", "none"], 7315 unbalanced_values: ["1px calc("], 7316 }, 7317 "padding-bottom": { 7318 domProp: "paddingBottom", 7319 inherited: false, 7320 type: CSS_TYPE_LONGHAND, 7321 applies_to_first_letter: true, 7322 // No applies_to_placeholder because we have a !important rule in forms.css. 7323 initial_values: [ 7324 "0", 7325 "0px", 7326 "0%", 7327 "calc(0pt)", 7328 "calc(0% + 0px)", 7329 "calc(-3px)", 7330 "calc(-1%)", 7331 ], 7332 other_values: [ 7333 "1px", 7334 "2em", 7335 "5%", 7336 "calc(2px)", 7337 "calc(50%)", 7338 "calc(3*25px)", 7339 "calc(25px*3)", 7340 "calc(3*25px + 50%)", 7341 ], 7342 invalid_values: ["stretch"], 7343 quirks_values: { 5: "5px" }, 7344 }, 7345 "padding-left": { 7346 domProp: "paddingLeft", 7347 inherited: false, 7348 type: CSS_TYPE_LONGHAND, 7349 applies_to_first_letter: true, 7350 // No applies_to_placeholder because we have a !important rule in forms.css. 7351 initial_values: [ 7352 "0", 7353 "0px", 7354 "0%", 7355 "calc(0pt)", 7356 "calc(0% + 0px)", 7357 "calc(-3px)", 7358 "calc(-1%)", 7359 ], 7360 other_values: [ 7361 "1px", 7362 "2em", 7363 "5%", 7364 "calc(2px)", 7365 "calc(50%)", 7366 "calc(3*25px)", 7367 "calc(25px*3)", 7368 "calc(3*25px + 50%)", 7369 ], 7370 invalid_values: ["stretch"], 7371 quirks_values: { 5: "5px" }, 7372 }, 7373 "padding-right": { 7374 domProp: "paddingRight", 7375 inherited: false, 7376 type: CSS_TYPE_LONGHAND, 7377 applies_to_first_letter: true, 7378 // No applies_to_placeholder because we have a !important rule in forms.css. 7379 initial_values: [ 7380 "0", 7381 "0px", 7382 "0%", 7383 "calc(0pt)", 7384 "calc(0% + 0px)", 7385 "calc(-3px)", 7386 "calc(-1%)", 7387 ], 7388 other_values: [ 7389 "1px", 7390 "2em", 7391 "5%", 7392 "calc(2px)", 7393 "calc(50%)", 7394 "calc(3*25px)", 7395 "calc(25px*3)", 7396 "calc(3*25px + 50%)", 7397 ], 7398 invalid_values: ["stretch"], 7399 quirks_values: { 5: "5px" }, 7400 }, 7401 "padding-top": { 7402 domProp: "paddingTop", 7403 inherited: false, 7404 type: CSS_TYPE_LONGHAND, 7405 applies_to_first_letter: true, 7406 // No applies_to_placeholder because we have a !important rule in forms.css. 7407 initial_values: [ 7408 "0", 7409 "0px", 7410 "0%", 7411 "calc(0pt)", 7412 "calc(0% + 0px)", 7413 "calc(-3px)", 7414 "calc(-1%)", 7415 ], 7416 other_values: [ 7417 "1px", 7418 "2em", 7419 "5%", 7420 "calc(2px)", 7421 "calc(50%)", 7422 "calc(3*25px)", 7423 "calc(25px*3)", 7424 "calc(3*25px + 50%)", 7425 ], 7426 invalid_values: ["stretch"], 7427 quirks_values: { 5: "5px" }, 7428 }, 7429 "page-break-after": { 7430 domProp: "pageBreakAfter", 7431 inherited: false, 7432 type: CSS_TYPE_LEGACY_SHORTHAND, 7433 alias_for: "break-after", 7434 subproperties: ["break-after"], 7435 initial_values: ["auto"], 7436 other_values: ["always", "avoid", "left", "right"], 7437 legacy_mapping: { 7438 always: "page", 7439 }, 7440 invalid_values: ["page", "column"], 7441 }, 7442 "page-break-before": { 7443 domProp: "pageBreakBefore", 7444 inherited: false, 7445 type: CSS_TYPE_LEGACY_SHORTHAND, 7446 alias_for: "break-before", 7447 subproperties: ["break-before"], 7448 initial_values: ["auto"], 7449 other_values: ["always", "avoid", "left", "right"], 7450 legacy_mapping: { 7451 always: "page", 7452 }, 7453 invalid_values: ["page", "column"], 7454 }, 7455 "break-after": { 7456 domProp: "breakAfter", 7457 inherited: false, 7458 type: CSS_TYPE_LONGHAND, 7459 initial_values: ["auto"], 7460 other_values: ["always", "page", "avoid", "left", "right"], 7461 invalid_values: [], 7462 }, 7463 "break-before": { 7464 domProp: "breakBefore", 7465 inherited: false, 7466 type: CSS_TYPE_LONGHAND, 7467 initial_values: ["auto"], 7468 other_values: ["always", "page", "avoid", "left", "right"], 7469 invalid_values: [], 7470 }, 7471 "break-inside": { 7472 domProp: "breakInside", 7473 inherited: false, 7474 type: CSS_TYPE_LONGHAND, 7475 initial_values: ["auto"], 7476 other_values: ["avoid", "avoid-page", "avoid-column"], 7477 invalid_values: ["left", "right", "always"], 7478 }, 7479 "page-break-inside": { 7480 domProp: "pageBreakInside", 7481 inherited: false, 7482 type: CSS_TYPE_LEGACY_SHORTHAND, 7483 alias_for: "break-inside", 7484 subproperties: ["break-inside"], 7485 initial_values: ["auto"], 7486 other_values: ["avoid"], 7487 invalid_values: ["avoid-page", "avoid-column"], 7488 }, 7489 "paint-order": { 7490 domProp: "paintOrder", 7491 inherited: true, 7492 type: CSS_TYPE_LONGHAND, 7493 applies_to_first_letter: true, 7494 applies_to_first_line: true, 7495 initial_values: ["normal"], 7496 other_values: [ 7497 "fill", 7498 "fill stroke", 7499 "fill stroke markers", 7500 "stroke markers fill", 7501 ], 7502 invalid_values: ["fill stroke markers fill", "fill normal"], 7503 }, 7504 "pointer-events": { 7505 domProp: "pointerEvents", 7506 inherited: true, 7507 type: CSS_TYPE_LONGHAND, 7508 // No applies_to_placeholder because we have a !important rule in forms.css. 7509 initial_values: ["auto"], 7510 other_values: [ 7511 "visiblePainted", 7512 "visibleFill", 7513 "visibleStroke", 7514 "visible", 7515 "painted", 7516 "fill", 7517 "stroke", 7518 "all", 7519 "none", 7520 ], 7521 invalid_values: [], 7522 }, 7523 position: { 7524 domProp: "position", 7525 inherited: false, 7526 type: CSS_TYPE_LONGHAND, 7527 initial_values: ["static"], 7528 other_values: ["relative", "absolute", "fixed", "sticky"], 7529 invalid_values: [], 7530 }, 7531 quotes: { 7532 domProp: "quotes", 7533 inherited: true, 7534 type: CSS_TYPE_LONGHAND, 7535 applies_to_marker: true, 7536 initial_values: ["auto"], 7537 other_values: [ 7538 "none", 7539 "'\"' '\"'", 7540 "'' ''", 7541 '"\u201C" "\u201D" "\u2018" "\u2019"', 7542 '"\\201C" "\\201D" "\\2018" "\\2019"', 7543 ], 7544 invalid_values: ["'\"'", '"" "" ""'], 7545 }, 7546 right: { 7547 domProp: "right", 7548 inherited: false, 7549 type: CSS_TYPE_LONGHAND, 7550 /* FIXME: run tests with multiple prerequisites */ 7551 prerequisites: { position: "relative" }, 7552 /* XXX 0 may or may not be equal to auto */ 7553 initial_values: ["auto"], 7554 other_values: [ 7555 "32px", 7556 "-3em", 7557 "12%", 7558 "calc(2px)", 7559 "calc(-2px)", 7560 "calc(50%)", 7561 "calc(3*25px)", 7562 "calc(25px*3)", 7563 "calc(3*25px + 50%)", 7564 ], 7565 invalid_values: ["stretch"], 7566 quirks_values: { 5: "5px" }, 7567 }, 7568 "ruby-align": { 7569 domProp: "rubyAlign", 7570 inherited: true, 7571 type: CSS_TYPE_LONGHAND, 7572 initial_values: ["space-around"], 7573 other_values: ["start", "center", "space-between"], 7574 invalid_values: ["end", "1", "10px", "50%", "start center"], 7575 }, 7576 "ruby-position": { 7577 domProp: "rubyPosition", 7578 inherited: true, 7579 type: CSS_TYPE_LONGHAND, 7580 applies_to_cue: true, 7581 initial_values: ["alternate", "alternate over", "over alternate"], 7582 other_values: ["over", "under", "alternate under", "under alternate"], 7583 invalid_values: [ 7584 "left", 7585 "right", 7586 "auto", 7587 "none", 7588 "not_a_position", 7589 "over left", 7590 "right under", 7591 "over under", 7592 "alternate alternate", 7593 "0", 7594 "100px", 7595 "50%", 7596 ], 7597 }, 7598 "scroll-behavior": { 7599 domProp: "scrollBehavior", 7600 inherited: false, 7601 type: CSS_TYPE_LONGHAND, 7602 initial_values: ["auto"], 7603 other_values: ["smooth"], 7604 invalid_values: ["none", "1px"], 7605 }, 7606 "scroll-snap-stop": { 7607 domProp: "scrollSnapStop", 7608 inherited: false, 7609 type: CSS_TYPE_LONGHAND, 7610 initial_values: ["normal"], 7611 other_values: ["always"], 7612 invalid_values: ["auto", "none", "1px"], 7613 }, 7614 "scroll-snap-type": { 7615 domProp: "scrollSnapType", 7616 inherited: false, 7617 type: CSS_TYPE_LONGHAND, 7618 initial_values: ["none"], 7619 other_values: [ 7620 "both mandatory", 7621 "y mandatory", 7622 "inline proximity", 7623 "both", 7624 "x", 7625 "y", 7626 "block", 7627 "inline", 7628 ], 7629 invalid_values: [ 7630 "auto", 7631 "1px", 7632 "x y", 7633 "block mandatory inline", 7634 "mandatory", 7635 "proximity", 7636 "mandatory inline", 7637 "proximity both", 7638 "mandatory x", 7639 "proximity y", 7640 "mandatory block", 7641 "proximity mandatory", 7642 ], 7643 }, 7644 "scroll-snap-align": { 7645 domProp: "scrollSnapAlign", 7646 inherited: false, 7647 type: CSS_TYPE_LONGHAND, 7648 initial_values: ["none"], 7649 other_values: [ 7650 "start", 7651 "end", 7652 "center", 7653 "start none", 7654 "center end", 7655 "start start", 7656 ], 7657 invalid_values: ["auto", "start invalid", "start end center"], 7658 }, 7659 "scroll-margin": { 7660 domProp: "scrollMargin", 7661 inherited: false, 7662 type: CSS_TYPE_TRUE_SHORTHAND, 7663 subproperties: [ 7664 "scroll-margin-top", 7665 "scroll-margin-right", 7666 "scroll-margin-bottom", 7667 "scroll-margin-left", 7668 ], 7669 initial_values: ["0"], 7670 other_values: [ 7671 "-10px", 7672 "calc(2em + 3ex)", 7673 "1px 2px", 7674 "1px 2px 3px", 7675 "1px 2px 3px 4px", 7676 ], 7677 invalid_values: ["stretch", "auto", "20%", "-30%", "1px 2px 3px 4px 5px"], 7678 }, 7679 "scroll-margin-top": { 7680 domProp: "scrollMarginTop", 7681 inherited: false, 7682 type: CSS_TYPE_LONGHAND, 7683 initial_values: ["0"], 7684 other_values: ["-10px", "calc(2em + 3ex)"], 7685 invalid_values: ["stretch", "auto", "20%", "-30%", "1px 2px"], 7686 }, 7687 "scroll-margin-right": { 7688 domProp: "scrollMarginRight", 7689 inherited: false, 7690 type: CSS_TYPE_LONGHAND, 7691 initial_values: ["0"], 7692 other_values: ["-10px", "calc(2em + 3ex)"], 7693 invalid_values: ["stretch", "auto", "20%", "-30%", "1px 2px"], 7694 }, 7695 "scroll-margin-bottom": { 7696 domProp: "scrollMarginBottom", 7697 inherited: false, 7698 type: CSS_TYPE_LONGHAND, 7699 initial_values: ["0"], 7700 other_values: ["-10px", "calc(2em + 3ex)"], 7701 invalid_values: ["stretch", "auto", "20%", "-30%", "1px 2px"], 7702 }, 7703 "scroll-margin-left": { 7704 domProp: "scrollMarginLeft", 7705 inherited: false, 7706 type: CSS_TYPE_LONGHAND, 7707 initial_values: ["0"], 7708 other_values: ["-10px", "calc(2em + 3ex)"], 7709 invalid_values: ["stretch", "auto", "20%", "-30%", "1px 2px"], 7710 }, 7711 "scroll-margin-inline": { 7712 domProp: "scrollMarginInline", 7713 inherited: false, 7714 type: CSS_TYPE_TRUE_SHORTHAND, 7715 subproperties: ["scroll-margin-inline-start", "scroll-margin-inline-end"], 7716 initial_values: ["0"], 7717 other_values: ["-10px", "calc(2em + 3ex)", "1px 2px"], 7718 invalid_values: ["stretch", "auto", "20%", "-30%", "1px 2px 3px"], 7719 }, 7720 "scroll-margin-inline-start": { 7721 domProp: "scrollMarginInlineStart", 7722 inherited: false, 7723 type: CSS_TYPE_LONGHAND, 7724 logical: true, 7725 initial_values: ["0"], 7726 other_values: ["-10px", "calc(2em + 3ex)"], 7727 invalid_values: ["auto", "20%", "-30%", "1px 2px"], 7728 }, 7729 "scroll-margin-inline-end": { 7730 domProp: "scrollMarginInlineEnd", 7731 inherited: false, 7732 type: CSS_TYPE_LONGHAND, 7733 logical: true, 7734 initial_values: ["0"], 7735 other_values: ["-10px", "calc(2em + 3ex)"], 7736 invalid_values: ["auto", "20%", "-30%", "1px 2px"], 7737 }, 7738 "scroll-margin-block": { 7739 domProp: "scrollMarginBlock", 7740 inherited: false, 7741 type: CSS_TYPE_TRUE_SHORTHAND, 7742 subproperties: ["scroll-margin-block-start", "scroll-margin-block-end"], 7743 initial_values: ["0"], 7744 other_values: ["-10px", "calc(2em + 3ex)", "1px 2px"], 7745 invalid_values: ["auto", "20%", "-30%", "1px 2px 3px"], 7746 }, 7747 "scroll-margin-block-start": { 7748 domProp: "scrollMarginBlockStart", 7749 inherited: false, 7750 type: CSS_TYPE_LONGHAND, 7751 logical: true, 7752 initial_values: ["0"], 7753 other_values: ["-10px", "calc(2em + 3ex)"], 7754 invalid_values: ["auto", "20%", "-30%", "1px 2px"], 7755 }, 7756 "scroll-margin-block-end": { 7757 domProp: "scrollMarginBlockEnd", 7758 inherited: false, 7759 type: CSS_TYPE_LONGHAND, 7760 logical: true, 7761 initial_values: ["0"], 7762 other_values: ["-10px", "calc(2em + 3ex)"], 7763 invalid_values: ["auto", "20%", "-30%", "1px 2px"], 7764 }, 7765 "scroll-padding": { 7766 domProp: "scrollPadding", 7767 inherited: false, 7768 type: CSS_TYPE_TRUE_SHORTHAND, 7769 subproperties: [ 7770 "scroll-padding-top", 7771 "scroll-padding-right", 7772 "scroll-padding-bottom", 7773 "scroll-padding-left", 7774 ], 7775 initial_values: ["auto"], 7776 other_values: [ 7777 "10px", 7778 "0", 7779 "20%", 7780 "calc(2em + 3ex)", 7781 "1px 2px", 7782 "1px 2px 3%", 7783 "1px 2px 3% 4px", 7784 "1px auto", 7785 ], 7786 invalid_values: ["stretch", "20", "-20px"], 7787 }, 7788 "scroll-padding-top": { 7789 domProp: "scrollPaddingTop", 7790 inherited: false, 7791 type: CSS_TYPE_LONGHAND, 7792 initial_values: ["auto"], 7793 other_values: [ 7794 "0", 7795 "10px", 7796 "20%", 7797 "calc(2em + 3ex)", 7798 "calc(50% + 60px)", 7799 "calc(-50px)", 7800 ], 7801 invalid_values: ["stretch", "20", "-20px"], 7802 }, 7803 "scroll-padding-right": { 7804 domProp: "scrollPaddingRight", 7805 inherited: false, 7806 type: CSS_TYPE_LONGHAND, 7807 initial_values: ["auto"], 7808 other_values: [ 7809 "0", 7810 "10px", 7811 "20%", 7812 "calc(2em + 3ex)", 7813 "calc(50% + 60px)", 7814 "calc(-50px)", 7815 ], 7816 invalid_values: ["stretch", "20", "-20px"], 7817 }, 7818 "scroll-padding-bottom": { 7819 domProp: "scrollPaddingBottom", 7820 inherited: false, 7821 type: CSS_TYPE_LONGHAND, 7822 initial_values: ["auto"], 7823 other_values: [ 7824 "0", 7825 "10px", 7826 "20%", 7827 "calc(2em + 3ex)", 7828 "calc(50% + 60px)", 7829 "calc(-50px)", 7830 ], 7831 invalid_values: ["stretch", "20", "-20px"], 7832 }, 7833 "scroll-padding-left": { 7834 domProp: "scrollPaddingLeft", 7835 inherited: false, 7836 type: CSS_TYPE_LONGHAND, 7837 initial_values: ["auto"], 7838 other_values: [ 7839 "0", 7840 "10px", 7841 "20%", 7842 "calc(2em + 3ex)", 7843 "calc(50% + 60px)", 7844 "calc(-50px)", 7845 ], 7846 invalid_values: ["stretch", "20", "-20px"], 7847 }, 7848 "scroll-padding-inline": { 7849 domProp: "scrollPaddingInline", 7850 inherited: false, 7851 type: CSS_TYPE_TRUE_SHORTHAND, 7852 subproperties: ["scroll-padding-inline-start", "scroll-padding-inline-end"], 7853 initial_values: ["auto", "auto auto"], 7854 other_values: [ 7855 "10px", 7856 "0", 7857 "20%", 7858 "calc(2em + 3ex)", 7859 "1px 2px", 7860 "1px auto", 7861 ], 7862 invalid_values: ["stretch", "20", "-20px"], 7863 }, 7864 "scroll-padding-inline-start": { 7865 domProp: "scrollPaddingInlineStart", 7866 inherited: false, 7867 type: CSS_TYPE_LONGHAND, 7868 logical: true, 7869 initial_values: ["auto"], 7870 other_values: [ 7871 "0", 7872 "10px", 7873 "20%", 7874 "calc(2em + 3ex)", 7875 "calc(50% + 60px)", 7876 "calc(-50px)", 7877 ], 7878 invalid_values: ["stretch", "20", "-20px"], 7879 }, 7880 "scroll-padding-inline-end": { 7881 domProp: "scrollPaddingInlineEnd", 7882 inherited: false, 7883 type: CSS_TYPE_LONGHAND, 7884 logical: true, 7885 initial_values: ["auto"], 7886 other_values: [ 7887 "0", 7888 "10px", 7889 "20%", 7890 "calc(2em + 3ex)", 7891 "calc(50% + 60px)", 7892 "calc(-50px)", 7893 ], 7894 invalid_values: ["stretch", "20", "-20px"], 7895 }, 7896 "scroll-padding-block": { 7897 domProp: "scrollPaddingBlock", 7898 inherited: false, 7899 type: CSS_TYPE_TRUE_SHORTHAND, 7900 subproperties: ["scroll-padding-block-start", "scroll-padding-block-end"], 7901 initial_values: ["auto", "auto auto"], 7902 other_values: [ 7903 "10px", 7904 "0", 7905 "20%", 7906 "calc(2em + 3ex)", 7907 "1px 2px", 7908 "1px auto", 7909 ], 7910 invalid_values: ["stretch", "20", "-20px"], 7911 }, 7912 "scroll-padding-block-start": { 7913 domProp: "scrollPaddingBlockStart", 7914 inherited: false, 7915 type: CSS_TYPE_LONGHAND, 7916 logical: true, 7917 initial_values: ["auto"], 7918 other_values: [ 7919 "0", 7920 "10px", 7921 "20%", 7922 "calc(2em + 3ex)", 7923 "calc(50% + 60px)", 7924 "calc(-50px)", 7925 ], 7926 invalid_values: ["stretch", "20", "-20px"], 7927 }, 7928 "scroll-padding-block-end": { 7929 domProp: "scrollPaddingBlockEnd", 7930 inherited: false, 7931 type: CSS_TYPE_LONGHAND, 7932 logical: true, 7933 initial_values: ["auto"], 7934 other_values: [ 7935 "0", 7936 "10px", 7937 "20%", 7938 "calc(2em + 3ex)", 7939 "calc(50% + 60px)", 7940 "calc(-50px)", 7941 ], 7942 invalid_values: ["stretch", "20", "-20px"], 7943 }, 7944 "table-layout": { 7945 domProp: "tableLayout", 7946 inherited: false, 7947 type: CSS_TYPE_LONGHAND, 7948 initial_values: ["auto"], 7949 other_values: ["fixed"], 7950 invalid_values: [], 7951 }, 7952 "text-align": { 7953 domProp: "textAlign", 7954 inherited: true, 7955 type: CSS_TYPE_LONGHAND, 7956 applies_to_placeholder: true, 7957 // don't know whether left and right are same as start 7958 initial_values: ["start"], 7959 other_values: [ 7960 "center", 7961 "justify", 7962 "end", 7963 "match-parent", 7964 // At least -webkit-center is needed for compat, see bug 1899042. 7965 "-moz-center", 7966 "-webkit-center", 7967 "-moz-left", 7968 "-webkit-left", 7969 "-moz-right", 7970 "-webkit-right", 7971 ], 7972 invalid_values: [ 7973 "true", 7974 "true true", 7975 "char", 7976 "-moz-center-or-inherit", 7977 "true left", 7978 "unsafe left", 7979 ], 7980 }, 7981 "text-align-last": { 7982 domProp: "textAlignLast", 7983 inherited: true, 7984 type: CSS_TYPE_LONGHAND, 7985 initial_values: ["auto"], 7986 other_values: ["center", "justify", "start", "end", "left", "right"], 7987 invalid_values: [], 7988 }, 7989 "text-combine-upright": { 7990 domProp: "textCombineUpright", 7991 inherited: true, 7992 type: CSS_TYPE_LONGHAND, 7993 applies_to_cue: true, 7994 applies_to_marker: true, 7995 initial_values: ["none"], 7996 other_values: ["all"], 7997 invalid_values: [ 7998 "auto", 7999 "all 2", 8000 "none all", 8001 "digits -3", 8002 "digits 0", 8003 "digits 12", 8004 "none 3", 8005 "digits 3.1415", 8006 "digits3", 8007 "digits 1", 8008 "digits 3 all", 8009 "digits foo", 8010 "digits all", 8011 "digits 3.0", 8012 ], 8013 }, 8014 "text-decoration": { 8015 domProp: "textDecoration", 8016 inherited: false, 8017 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 8018 applies_to_first_letter: true, 8019 applies_to_first_line: true, 8020 applies_to_placeholder: true, 8021 applies_to_cue: true, 8022 subproperties: [ 8023 "text-decoration-color", 8024 "text-decoration-line", 8025 "text-decoration-style", 8026 "text-decoration-thickness", 8027 ], 8028 initial_values: ["none"], 8029 other_values: [ 8030 "underline", 8031 "overline", 8032 "line-through", 8033 "blink", 8034 "blink line-through underline", 8035 "underline overline line-through blink", 8036 "underline red solid", 8037 "underline #ff0000", 8038 "solid underline", 8039 "red underline", 8040 "#ff0000 underline", 8041 "dotted underline", 8042 "solid underline 50px", 8043 "underline 50px blue", 8044 "50px dotted line-through purple", 8045 "overline 2em", 8046 "underline from-font", 8047 "red from-font overline", 8048 "5% underline blue", 8049 "dotted line-through 25%", 8050 ], 8051 invalid_values: [ 8052 "none none", 8053 "underline none", 8054 "none underline", 8055 "blink none", 8056 "none blink", 8057 "line-through blink line-through", 8058 "underline overline line-through blink none", 8059 "underline overline line-throuh blink blink", 8060 "rgb(0, rubbish, 0) underline", 8061 "from font blue underline", 8062 ], 8063 }, 8064 "text-decoration-color": { 8065 domProp: "textDecorationColor", 8066 inherited: false, 8067 type: CSS_TYPE_LONGHAND, 8068 applies_to_first_letter: true, 8069 applies_to_first_line: true, 8070 applies_to_placeholder: true, 8071 applies_to_cue: true, 8072 prerequisites: { color: "black" }, 8073 initial_values: ["currentColor"], 8074 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 8075 invalid_values: [ 8076 "#0", 8077 "#00", 8078 "#00000", 8079 "#0000000", 8080 "#000000000", 8081 "000000", 8082 "ff00ff", 8083 ], 8084 }, 8085 "text-decoration-line": { 8086 domProp: "textDecorationLine", 8087 inherited: false, 8088 type: CSS_TYPE_LONGHAND, 8089 applies_to_first_letter: true, 8090 applies_to_first_line: true, 8091 applies_to_placeholder: true, 8092 applies_to_cue: true, 8093 initial_values: ["none"], 8094 other_values: [ 8095 "underline", 8096 "overline", 8097 "line-through", 8098 "blink", 8099 "blink line-through underline", 8100 "underline overline line-through blink", 8101 ], 8102 invalid_values: [ 8103 "none none", 8104 "underline none", 8105 "none underline", 8106 "line-through blink line-through", 8107 "underline overline line-through blink none", 8108 "underline overline line-throuh blink blink", 8109 ], 8110 }, 8111 "text-decoration-style": { 8112 domProp: "textDecorationStyle", 8113 inherited: false, 8114 type: CSS_TYPE_LONGHAND, 8115 applies_to_first_letter: true, 8116 applies_to_first_line: true, 8117 applies_to_placeholder: true, 8118 applies_to_cue: true, 8119 initial_values: ["solid"], 8120 other_values: ["double", "dotted", "dashed", "wavy", "-moz-none"], 8121 invalid_values: [ 8122 "none", 8123 "groove", 8124 "ridge", 8125 "inset", 8126 "outset", 8127 "solid dashed", 8128 "wave", 8129 ], 8130 }, 8131 "text-decoration-thickness": { 8132 domProp: "textDecorationThickness", 8133 inherited: false, 8134 type: CSS_TYPE_LONGHAND, 8135 applies_to_first_letter: true, 8136 applies_to_first_line: true, 8137 applies_to_placeholder: true, 8138 applies_to_cue: true, 8139 initial_values: ["auto"], 8140 other_values: [ 8141 "from-font", 8142 "0", 8143 "-14px", 8144 "25px", 8145 "100em", 8146 "-45em", 8147 "43%", 8148 "-10%", 8149 ], 8150 invalid_values: ["13", "-25", "rubbish", ",./!@#$", "from font", "stretch"], 8151 }, 8152 "text-decoration-skip-ink": { 8153 domProp: "textDecorationSkipInk", 8154 inherited: true, 8155 type: CSS_TYPE_LONGHAND, 8156 applies_to_first_letter: true, 8157 applies_to_first_line: true, 8158 applies_to_placeholder: true, 8159 initial_values: ["auto"], 8160 other_values: ["none", "all"], 8161 invalid_values: [ 8162 "13", 8163 "15%", 8164 "-1", 8165 "0", 8166 "otto", 8167 "trash", 8168 "non", 8169 "nada", 8170 "!@#$%^", 8171 "none auto", 8172 "auto none", 8173 ], 8174 }, 8175 "text-underline-offset": { 8176 domProp: "textUnderlineOffset", 8177 inherited: true, 8178 type: CSS_TYPE_LONGHAND, 8179 applies_to_first_letter: true, 8180 applies_to_first_line: true, 8181 applies_to_placeholder: true, 8182 initial_values: ["auto"], 8183 other_values: ["0", "-14px", "25px", "100em", "-45em", "43%", "-10%"], 8184 invalid_values: [ 8185 "13", 8186 "-25", 8187 "rubbish", 8188 ",./!@#$", 8189 "from-font", 8190 "from font", 8191 "stretch", 8192 ], 8193 }, 8194 "text-underline-position": { 8195 domProp: "textUnderlinePosition", 8196 inherited: true, 8197 type: CSS_TYPE_LONGHAND, 8198 applies_to_first_letter: true, 8199 applies_to_first_line: true, 8200 applies_to_placeholder: true, 8201 initial_values: ["auto"], 8202 other_values: [ 8203 "under", 8204 "left", 8205 "right", 8206 "left under", 8207 "under left", 8208 "right under", 8209 "under right", 8210 "from-font", 8211 "from-font left", 8212 "from-font right", 8213 "left from-font", 8214 "right from-font", 8215 ], 8216 invalid_values: [ 8217 "none", 8218 "auto from-font", 8219 "auto under", 8220 "under from-font", 8221 "left right", 8222 "right auto", 8223 "0", 8224 "1px", 8225 "10%", 8226 "from font", 8227 ], 8228 }, 8229 "text-emphasis": { 8230 domProp: "textEmphasis", 8231 inherited: true, 8232 type: CSS_TYPE_TRUE_SHORTHAND, 8233 prerequisites: { color: "black" }, 8234 subproperties: ["text-emphasis-style", "text-emphasis-color"], 8235 initial_values: [ 8236 "none currentColor", 8237 "currentColor none", 8238 "none", 8239 "currentColor", 8240 "none black", 8241 ], 8242 other_values: [ 8243 "filled dot black", 8244 "#f00 circle open", 8245 "sesame filled rgba(0,0,255,0.5)", 8246 "red", 8247 "green none", 8248 "currentColor filled", 8249 "currentColor open", 8250 ], 8251 invalid_values: [ 8252 "filled black dot", 8253 "filled filled red", 8254 "open open circle #000", 8255 "circle dot #f00", 8256 "rubbish", 8257 ], 8258 }, 8259 "text-emphasis-color": { 8260 domProp: "textEmphasisColor", 8261 inherited: true, 8262 type: CSS_TYPE_LONGHAND, 8263 applies_to_marker: true, 8264 prerequisites: { color: "black" }, 8265 initial_values: ["currentColor", "black", "rgb(0,0,0)"], 8266 other_values: ["red", "rgba(255,255,255,0.5)", "transparent"], 8267 invalid_values: [ 8268 "#0", 8269 "#00", 8270 "#00000", 8271 "#0000000", 8272 "#000000000", 8273 "000000", 8274 "ff00ff", 8275 "rgb(255,xxx,255)", 8276 ], 8277 }, 8278 "text-emphasis-position": { 8279 domProp: "textEmphasisPosition", 8280 inherited: true, 8281 type: CSS_TYPE_LONGHAND, 8282 applies_to_marker: true, 8283 initial_values: ["auto"], 8284 other_values: [ 8285 "over right", 8286 "right over", 8287 "over", 8288 "over left", 8289 "left over", 8290 "under left", 8291 "left under", 8292 "under right", 8293 "right under", 8294 "under", 8295 ], 8296 invalid_values: [ 8297 "auto auto", 8298 "auto over", 8299 "auto right", 8300 "left auto", 8301 "left right", 8302 "over under right", 8303 "over over", 8304 "left left", 8305 "over right left", 8306 "rubbish left", 8307 "over rubbish", 8308 ], 8309 }, 8310 "text-emphasis-style": { 8311 domProp: "textEmphasisStyle", 8312 inherited: true, 8313 type: CSS_TYPE_LONGHAND, 8314 applies_to_marker: true, 8315 initial_values: ["none"], 8316 other_values: [ 8317 "filled", 8318 "open", 8319 "dot", 8320 "circle", 8321 "double-circle", 8322 "triangle", 8323 "sesame", 8324 "'#'", 8325 "filled dot", 8326 "filled circle", 8327 "filled double-circle", 8328 "filled triangle", 8329 "filled sesame", 8330 "dot filled", 8331 "circle filled", 8332 "double-circle filled", 8333 "triangle filled", 8334 "sesame filled", 8335 "dot open", 8336 "circle open", 8337 "double-circle open", 8338 "triangle open", 8339 "sesame open", 8340 ], 8341 invalid_values: [ 8342 "rubbish", 8343 "dot rubbish", 8344 "rubbish dot", 8345 "open rubbish", 8346 "rubbish open", 8347 "open filled", 8348 "dot circle", 8349 "open '#'", 8350 "'#' filled", 8351 "dot '#'", 8352 "'#' circle", 8353 "1", 8354 "1 open", 8355 "open 1", 8356 ], 8357 }, 8358 "text-indent": { 8359 domProp: "textIndent", 8360 inherited: true, 8361 type: CSS_TYPE_LONGHAND, 8362 initial_values: ["0", "calc(3em - 5em + 2px + 2em - 2px)"], 8363 other_values: [ 8364 "2em", 8365 "5%", 8366 "-10px", 8367 "calc(2px)", 8368 "calc(-2px)", 8369 "calc(50%)", 8370 "calc(3*25px)", 8371 "calc(25px*3)", 8372 "calc(3*25px + 50%)", 8373 "2em hanging", 8374 "5% each-line", 8375 "-10px hanging each-line", 8376 "hanging calc(2px)", 8377 "each-line calc(-2px)", 8378 "each-line calc(50%) hanging", 8379 "hanging calc(3*25px) each-line", 8380 "each-line hanging calc(25px*3)", 8381 ], 8382 invalid_values: [ 8383 "stretch", 8384 "hanging", 8385 "each-line", 8386 "-10px hanging hanging", 8387 "each-line calc(2px) each-line", 8388 ], 8389 quirks_values: { 5: "5px" }, 8390 }, 8391 "text-overflow": { 8392 domProp: "textOverflow", 8393 inherited: false, 8394 type: CSS_TYPE_LONGHAND, 8395 applies_to_placeholder: true, 8396 initial_values: ["clip"], 8397 other_values: [ 8398 "ellipsis", 8399 '""', 8400 "''", 8401 '"hello"', 8402 "clip clip", 8403 "ellipsis ellipsis", 8404 "clip ellipsis", 8405 'clip ""', 8406 '"hello" ""', 8407 '"" ellipsis', 8408 ], 8409 invalid_values: [ 8410 "none", 8411 "auto", 8412 '"hello" inherit', 8413 'inherit "hello"', 8414 "clip initial", 8415 "initial clip", 8416 "initial inherit", 8417 "inherit initial", 8418 "inherit none", 8419 '"hello" unset', 8420 'unset "hello"', 8421 "clip unset", 8422 "unset clip", 8423 "unset inherit", 8424 "unset none", 8425 "initial unset", 8426 ], 8427 }, 8428 "text-shadow": { 8429 domProp: "textShadow", 8430 inherited: true, 8431 type: CSS_TYPE_LONGHAND, 8432 applies_to_first_letter: true, 8433 applies_to_first_line: true, 8434 applies_to_marker: true, 8435 applies_to_placeholder: true, 8436 applies_to_cue: true, 8437 prerequisites: { color: "blue" }, 8438 initial_values: ["none"], 8439 other_values: [ 8440 "2px 2px", 8441 "2px 2px 1px", 8442 "2px 2px green", 8443 "2px 2px 1px green", 8444 "green 2px 2px", 8445 "green 2px 2px 1px", 8446 "green 2px 2px, blue 1px 3px 4px", 8447 "currentColor 3px 3px", 8448 "blue 2px 2px, currentColor 1px 2px", 8449 /* calc() values */ 8450 "2px 2px calc(-5px)" /* clamped */, 8451 "calc(3em - 2px) 2px green", 8452 "green calc(3em - 2px) 2px", 8453 "2px calc(2px + 0.2em)", 8454 "blue 2px calc(2px + 0.2em)", 8455 "2px calc(2px + 0.2em) blue", 8456 "calc(-2px) calc(-2px)", 8457 "-2px -2px", 8458 "calc(2px) calc(2px)", 8459 "calc(2px) calc(2px) calc(2px)", 8460 ], 8461 invalid_values: [ 8462 "3% 3%", 8463 "2px 2px -5px", 8464 "2px 2px 2px 2px", 8465 "2px 2px, none", 8466 "none, 2px 2px", 8467 "inherit, 2px 2px", 8468 "2px 2px, inherit", 8469 "2 2px", 8470 "2px 2", 8471 "2px 2px 2", 8472 "2px 2px 2px 2", 8473 "calc(2px) calc(2px) calc(2px) calc(2px)", 8474 "3px 3px calc(3px + rubbish)", 8475 "unset, 2px 2px", 8476 "2px 2px, unset", 8477 ], 8478 }, 8479 "text-transform": { 8480 domProp: "textTransform", 8481 inherited: true, 8482 type: CSS_TYPE_LONGHAND, 8483 applies_to_first_letter: true, 8484 applies_to_first_line: true, 8485 applies_to_placeholder: true, 8486 applies_to_marker: true, 8487 initial_values: ["none"], 8488 other_values: [ 8489 "capitalize", 8490 "uppercase", 8491 "lowercase", 8492 "full-width", 8493 "full-size-kana", 8494 "uppercase full-width", 8495 "full-size-kana capitalize", 8496 "full-width lowercase full-size-kana", 8497 ], 8498 invalid_values: [ 8499 "none none", 8500 "none uppercase", 8501 "full-width none", 8502 "uppercase lowercase", 8503 "full-width capitalize full-width", 8504 "uppercase full-width lowercase", 8505 ], 8506 }, 8507 "text-wrap": { 8508 domProp: "textWrap", 8509 inherited: true, 8510 type: CSS_TYPE_TRUE_SHORTHAND, 8511 subproperties: ["text-wrap-mode", "text-wrap-style"], 8512 applies_to_placeholder: true, 8513 applies_to_cue: true, 8514 applies_to_marker: true, 8515 initial_values: ["wrap"], 8516 other_values: [ 8517 "nowrap", 8518 "stable", 8519 "balance", 8520 "wrap stable", 8521 "nowrap balance", 8522 ], 8523 invalid_values: [], 8524 }, 8525 "text-wrap-mode": { 8526 domProp: "textWrapMode", 8527 inherited: true, 8528 type: CSS_TYPE_LONGHAND, 8529 applies_to_cue: true, 8530 applies_to_placeholder: true, 8531 applies_to_marker: true, 8532 initial_values: ["wrap"], 8533 other_values: ["nowrap"], 8534 invalid_values: ["none", "normal", "on", "off", "wrap nowrap"], 8535 }, 8536 top: { 8537 domProp: "top", 8538 inherited: false, 8539 type: CSS_TYPE_LONGHAND, 8540 /* FIXME: run tests with multiple prerequisites */ 8541 prerequisites: { position: "relative" }, 8542 /* XXX 0 may or may not be equal to auto */ 8543 initial_values: ["auto"], 8544 other_values: [ 8545 "32px", 8546 "-3em", 8547 "12%", 8548 "calc(2px)", 8549 "calc(-2px)", 8550 "calc(50%)", 8551 "calc(3*25px)", 8552 "calc(25px*3)", 8553 "calc(3*25px + 50%)", 8554 ], 8555 invalid_values: ["stretch"], 8556 quirks_values: { 5: "5px" }, 8557 }, 8558 transition: { 8559 domProp: "transition", 8560 inherited: false, 8561 type: CSS_TYPE_TRUE_SHORTHAND, 8562 applies_to_marker: true, 8563 subproperties: [ 8564 "transition-property", 8565 "transition-duration", 8566 "transition-timing-function", 8567 "transition-delay", 8568 "transition-behavior", 8569 ], 8570 initial_values: ["all 0s ease 0s", "all", "0s", "0s 0s", "ease", "normal"], 8571 other_values: [ 8572 "all 0s cubic-bezier(0.25, 0.1, 0.25, 1.0) 0s", 8573 "width 1s linear 2s", 8574 "width 1s 2s linear", 8575 "width linear 1s 2s", 8576 "linear width 1s 2s", 8577 "linear 1s width 2s", 8578 "linear 1s 2s width", 8579 "1s width linear 2s", 8580 "1s width 2s linear", 8581 "1s 2s width linear", 8582 "1s linear width 2s", 8583 "1s linear 2s width", 8584 "1s 2s linear width", 8585 "width linear 1s", 8586 "width 1s linear", 8587 "linear width 1s", 8588 "linear 1s width", 8589 "1s width linear", 8590 "1s linear width", 8591 "1s 2s width", 8592 "1s width 2s", 8593 "width 1s 2s", 8594 "1s 2s linear", 8595 "1s linear 2s", 8596 "linear 1s 2s", 8597 "width 1s", 8598 "1s width", 8599 "linear 1s", 8600 "1s linear", 8601 "1s 2s", 8602 "2s 1s", 8603 "width", 8604 "linear", 8605 "1s", 8606 "height", 8607 "2s", 8608 "ease-in-out", 8609 "2s ease-in", 8610 "opacity linear", 8611 "ease-out 2s", 8612 "2s color, 1s width, 500ms height linear, 1s opacity 4s cubic-bezier(0.0, 0.1, 1.0, 1.0)", 8613 "1s \\32width linear 2s", 8614 "1s -width linear 2s", 8615 "1s -\\32width linear 2s", 8616 "1s \\32 0width linear 2s", 8617 "1s -\\32 0width linear 2s", 8618 "1s \\2width linear 2s", 8619 "1s -\\2width linear 2s", 8620 "2s, 1s width", 8621 "1s width, 2s", 8622 "2s all, 1s width", 8623 "1s width, 2s all", 8624 "2s all, 1s width", 8625 "2s width, 1s all", 8626 "3s --my-color", 8627 "none", 8628 "none 2s linear 2s", 8629 "allow-discrete", 8630 "width allow-discrete", 8631 "1s allow-discrete", 8632 "linear allow-discrete", 8633 ], 8634 invalid_values: [ 8635 "1s width, 2s none", 8636 "2s none, 1s width", 8637 "2s inherit", 8638 "inherit 2s", 8639 "2s width, 1s inherit", 8640 "2s inherit, 1s width", 8641 "2s initial", 8642 "1s width,,2s color", 8643 "1s width, ,2s color", 8644 "bounce 1s cubic-bezier(0, rubbish) 2s", 8645 "bounce 1s steps(rubbish) 2s", 8646 "2s unset", 8647 ], 8648 }, 8649 "transition-behavior": { 8650 domProp: "transitionBehavior", 8651 inherited: false, 8652 type: CSS_TYPE_LONGHAND, 8653 applies_to_marker: true, 8654 initial_values: ["normal"], 8655 other_values: ["allow-discrete"], 8656 invalid_values: ["none", "auto", "discrete"], 8657 }, 8658 "transition-delay": { 8659 domProp: "transitionDelay", 8660 inherited: false, 8661 type: CSS_TYPE_LONGHAND, 8662 applies_to_marker: true, 8663 initial_values: ["0s", "0ms"], 8664 other_values: ["1s", "250ms", "-100ms", "-1s", "1s, 250ms, 2.3s"], 8665 invalid_values: ["0", "0px"], 8666 }, 8667 "transition-duration": { 8668 domProp: "transitionDuration", 8669 inherited: false, 8670 type: CSS_TYPE_LONGHAND, 8671 applies_to_marker: true, 8672 initial_values: ["0s", "0ms"], 8673 other_values: ["1s", "250ms", "1s, 250ms, 2.3s"], 8674 invalid_values: ["0", "0px", "-1ms", "-2s"], 8675 }, 8676 "transition-property": { 8677 domProp: "transitionProperty", 8678 inherited: false, 8679 type: CSS_TYPE_LONGHAND, 8680 applies_to_marker: true, 8681 initial_values: ["all"], 8682 other_values: [ 8683 "none", 8684 "left", 8685 "top", 8686 "color", 8687 "width, height, opacity", 8688 "foobar", 8689 "auto", 8690 "\\32width", 8691 "-width", 8692 "-\\32width", 8693 "\\32 0width", 8694 "-\\32 0width", 8695 "\\2width", 8696 "-\\2width", 8697 "all, all", 8698 "all, color", 8699 "color, all", 8700 "--my-color", 8701 ], 8702 invalid_values: [ 8703 "none, none", 8704 "color, none", 8705 "none, color", 8706 "inherit, color", 8707 "color, inherit", 8708 "initial, color", 8709 "color, initial", 8710 "none, color", 8711 "color, none", 8712 "unset, color", 8713 "color, unset", 8714 ], 8715 }, 8716 "transition-timing-function": { 8717 domProp: "transitionTimingFunction", 8718 inherited: false, 8719 type: CSS_TYPE_LONGHAND, 8720 applies_to_marker: true, 8721 initial_values: ["ease"], 8722 other_values: [ 8723 "cubic-bezier(0.25, 0.1, 0.25, 1.0)", 8724 "linear", 8725 "ease-in", 8726 "ease-out", 8727 "ease-in-out", 8728 "linear, ease-in, cubic-bezier(0.1, 0.2, 0.8, 0.9)", 8729 "cubic-bezier(0.5, 0.5, 0.5, 0.5)", 8730 "cubic-bezier(0.25, 1.5, 0.75, -0.5)", 8731 "step-start", 8732 "step-end", 8733 "steps(1)", 8734 "steps(2, start)", 8735 "steps(386)", 8736 "steps(3, end)", 8737 "steps(1, jump-start)", 8738 "steps(1, jump-end)", 8739 "steps(2, jump-none)", 8740 "steps(1, jump-both)", 8741 ], 8742 invalid_values: [ 8743 "none", 8744 "auto", 8745 "cubic-bezier(0.25, 0.1, 0.25)", 8746 "cubic-bezier(0.25, 0.1, 0.25, 0.25, 1.0)", 8747 "cubic-bezier(-0.5, 0.5, 0.5, 0.5)", 8748 "cubic-bezier(1.5, 0.5, 0.5, 0.5)", 8749 "cubic-bezier(0.5, 0.5, -0.5, 0.5)", 8750 "cubic-bezier(0.5, 0.5, 1.5, 0.5)", 8751 "steps(2, step-end)", 8752 "steps(0)", 8753 "steps(-2)", 8754 "steps(0, step-end, 1)", 8755 "steps(0, jump-start)", 8756 "steps(0, jump-end)", 8757 "steps(1, jump-none)", 8758 "steps(0, jump-both)", 8759 ], 8760 }, 8761 "unicode-bidi": { 8762 domProp: "unicodeBidi", 8763 inherited: false, 8764 type: CSS_TYPE_LONGHAND, 8765 applies_to_marker: true, 8766 initial_values: ["normal"], 8767 other_values: [ 8768 "embed", 8769 "bidi-override", 8770 "isolate", 8771 "plaintext", 8772 "isolate-override", 8773 ], 8774 invalid_values: [ 8775 "auto", 8776 "none", 8777 "-moz-isolate", 8778 "-moz-plaintext", 8779 "-moz-isolate-override", 8780 ], 8781 }, 8782 "vertical-align": { 8783 domProp: "verticalAlign", 8784 inherited: false, 8785 type: CSS_TYPE_LONGHAND, 8786 applies_to_first_letter: true, 8787 applies_to_first_line: true, 8788 applies_to_placeholder: true, 8789 initial_values: ["baseline"], 8790 other_values: [ 8791 "sub", 8792 "super", 8793 "top", 8794 "text-top", 8795 "middle", 8796 "bottom", 8797 "text-bottom", 8798 "-moz-middle-with-baseline", 8799 "15%", 8800 "3px", 8801 "0.2em", 8802 "-5px", 8803 "-3%", 8804 "calc(2px)", 8805 "calc(-2px)", 8806 "calc(50%)", 8807 "calc(3*25px)", 8808 "calc(25px*3)", 8809 "calc(3*25px + 50%)", 8810 ], 8811 invalid_values: [], 8812 quirks_values: { 5: "5px" }, 8813 }, 8814 "baseline-source": { 8815 domProp: "baselineSource", 8816 inherited: false, 8817 type: CSS_TYPE_LONGHAND, 8818 applies_to_first_letter: true, 8819 applies_to_first_line: true, 8820 applies_to_placeholder: true, 8821 initial_values: ["auto"], 8822 other_values: ["first", "last"], 8823 invalid_values: [], 8824 }, 8825 visibility: { 8826 domProp: "visibility", 8827 inherited: true, 8828 type: CSS_TYPE_LONGHAND, 8829 applies_to_cue: true, 8830 initial_values: ["visible"], 8831 other_values: ["hidden", "collapse"], 8832 invalid_values: [], 8833 }, 8834 "white-space": { 8835 domProp: "whiteSpace", 8836 inherited: true, 8837 type: CSS_TYPE_TRUE_SHORTHAND, 8838 subproperties: ["white-space-collapse", "text-wrap-mode"], 8839 applies_to_placeholder: true, 8840 applies_to_cue: true, 8841 applies_to_marker: true, 8842 initial_values: ["normal"], 8843 other_values: ["pre", "nowrap", "pre-wrap", "pre-line", "break-spaces"], 8844 invalid_values: [], 8845 }, 8846 "white-space-collapse": { 8847 domProp: "whiteSpaceCollapse", 8848 inherited: true, 8849 type: CSS_TYPE_LONGHAND, 8850 applies_to_placeholder: true, 8851 applies_to_cue: true, 8852 applies_to_marker: true, 8853 initial_values: ["collapse"], 8854 other_values: [ 8855 "preserve", 8856 "preserve-breaks", 8857 "preserve-spaces", 8858 "break-spaces", 8859 "-moz-pre-space", 8860 ], 8861 invalid_values: ["normal", "auto"], 8862 }, 8863 width: { 8864 domProp: "width", 8865 inherited: false, 8866 type: CSS_TYPE_LONGHAND, 8867 prerequisites: { 8868 // computed value tests for width test more with display:block 8869 display: "block", 8870 // add some margin to avoid the initial "auto" value getting 8871 // resolved to the same length as the parent element. 8872 "margin-left": "5px", 8873 }, 8874 initial_values: [" auto"], 8875 /* XXX these have prerequisites */ 8876 other_values: [ 8877 "15px", 8878 "3em", 8879 "15%", 8880 "max-content", 8881 "min-content", 8882 "fit-content", 8883 "stretch", 8884 "-moz-max-content", 8885 "-moz-min-content", 8886 "-moz-fit-content", 8887 "-moz-available", 8888 "-webkit-fill-available", 8889 "3e1px", 8890 "3e+1px", 8891 "3e0px", 8892 "3e+0px", 8893 "3e-0px", 8894 "3e-1px", 8895 "3.2e1px", 8896 "3.2e+1px", 8897 "3.2e0px", 8898 "3.2e+0px", 8899 "3.2e-0px", 8900 "3.2e-1px", 8901 "3e1%", 8902 "3e+1%", 8903 "3e0%", 8904 "3e+0%", 8905 "3e-0%", 8906 "3e-1%", 8907 "3.2e1%", 8908 "3.2e+1%", 8909 "3.2e0%", 8910 "3.2e+0%", 8911 "3.2e-0%", 8912 "3.2e-1%", 8913 /* valid calc() values */ 8914 "calc(-2px)", 8915 "calc(2px)", 8916 "calc(50%)", 8917 "calc(50% + 2px)", 8918 "calc( 50% + 2px)", 8919 "calc(50% + 2px )", 8920 "calc( 50% + 2px )", 8921 "calc(50% - -2px)", 8922 "calc(2px - -50%)", 8923 "calc(3*25px)", 8924 "calc(3 *25px)", 8925 "calc(3 * 25px)", 8926 "calc(3* 25px)", 8927 "calc(25px*3)", 8928 "calc(25px *3)", 8929 "calc(25px* 3)", 8930 "calc(25px * 3)", 8931 "calc(3*25px + 50%)", 8932 "calc(50% - 3em + 2px)", 8933 "calc(50% - (3em + 2px))", 8934 "calc((50% - 3em) + 2px)", 8935 "calc(2em)", 8936 "calc(50%)", 8937 "calc(50px/2)", 8938 "calc(50px/(2 - 1))", 8939 "calc(min(5px))", 8940 "calc(min(5px,2em))", 8941 "calc(max(5px))", 8942 "calc(max(5px,2em))", 8943 "min(5px)", 8944 "min(5px,2em)", 8945 "max(5px)", 8946 "max(5px,2em)", 8947 "fit-content(100px)", 8948 "fit-content(10%)", 8949 "fit-content(calc(3*25px + 50%))", 8950 ], 8951 invalid_values: [ 8952 "none", 8953 "-2px", 8954 "content" /* (valid for 'flex-basis' but not 'width') */, 8955 /* invalid calc() values */ 8956 "calc(50%+ 2px)", 8957 "calc(50% +2px)", 8958 "calc(50%+2px)", 8959 "-moz-min()", 8960 "calc(min())", 8961 "-moz-max()", 8962 "calc(max())", 8963 "-moz-min(5px)", 8964 "-moz-max(5px)", 8965 "-moz-min(5px,2em)", 8966 "-moz-max(5px,2em)", 8967 /* If we ever support division by values, which is 8968 * complicated for the reasons described in 8969 * http://lists.w3.org/Archives/Public/www-style/2010Jan/0007.html 8970 * , we should support all 4 of these as described in 8971 * http://lists.w3.org/Archives/Public/www-style/2009Dec/0296.html 8972 */ 8973 "calc((3em / 100%) * 3em)", 8974 "calc(3em / 100% * 3em)", 8975 "calc(3em * (3em / 100%))", 8976 "calc(3em * 3em / 100%)", 8977 ], 8978 quirks_values: { 5: "5px" }, 8979 }, 8980 "will-change": { 8981 domProp: "willChange", 8982 inherited: false, 8983 type: CSS_TYPE_LONGHAND, 8984 initial_values: ["auto"], 8985 other_values: [ 8986 "scroll-position", 8987 "contents", 8988 "transform", 8989 "opacity", 8990 "scroll-position, transform", 8991 "transform, opacity", 8992 "contents, transform", 8993 "property-that-doesnt-exist-yet", 8994 ], 8995 invalid_values: [ 8996 "none", 8997 "all", 8998 "default", 8999 "auto, scroll-position", 9000 "scroll-position, auto", 9001 "transform scroll-position", 9002 ",", 9003 "trailing,", 9004 "will-change", 9005 "transform, will-change", 9006 ], 9007 }, 9008 "word-break": { 9009 domProp: "wordBreak", 9010 inherited: true, 9011 type: CSS_TYPE_LONGHAND, 9012 initial_values: ["normal"], 9013 other_values: ["break-all", "keep-all"], 9014 invalid_values: [], 9015 }, 9016 "word-spacing": { 9017 domProp: "wordSpacing", 9018 inherited: true, 9019 type: CSS_TYPE_LONGHAND, 9020 applies_to_first_letter: true, 9021 applies_to_first_line: true, 9022 applies_to_placeholder: true, 9023 initial_values: ["normal", "0", "0px", "-0em", "calc(-0px)", "calc(0em)"], 9024 other_values: [ 9025 "1em", 9026 "2px", 9027 "-3px", 9028 "0%", 9029 "50%", 9030 "-120%", 9031 "calc(1em)", 9032 "calc(1em + 3px)", 9033 "calc(15px / 2)", 9034 "calc(15px/2)", 9035 "calc(-2em)", 9036 "calc(0% + 0px)", 9037 "calc(-10%/2 - 1em)", 9038 ], 9039 invalid_values: ["stretch"], 9040 quirks_values: { 5: "5px" }, 9041 }, 9042 "overflow-wrap": { 9043 domProp: "overflowWrap", 9044 inherited: true, 9045 type: CSS_TYPE_LONGHAND, 9046 initial_values: ["normal"], 9047 other_values: ["break-word"], 9048 invalid_values: [], 9049 }, 9050 hyphens: { 9051 domProp: "hyphens", 9052 inherited: true, 9053 type: CSS_TYPE_LONGHAND, 9054 applies_to_marker: true, 9055 initial_values: ["manual"], 9056 other_values: ["none", "auto"], 9057 invalid_values: [], 9058 }, 9059 "z-index": { 9060 domProp: "zIndex", 9061 inherited: false, 9062 type: CSS_TYPE_LONGHAND, 9063 /* XXX requires position */ 9064 initial_values: ["auto"], 9065 other_values: ["0", "3", "-7000", "12000"], 9066 invalid_values: ["3.0", "17.5", "3e1"], 9067 }, 9068 "clip-path": { 9069 domProp: "clipPath", 9070 inherited: false, 9071 type: CSS_TYPE_LONGHAND, 9072 initial_values: ["none"], 9073 other_values: [ 9074 "path(nonzero, 'M 10 10 h 100 v 100 h-100 v-100 z')", 9075 "path(evenodd, 'M 10 10 h 100 v 100 h-100 v-100 z')", 9076 "path('M10,30A20,20 0,0,1 50,30A20,20 0,0,1 90,30Q90,60 50,90Q10,60 10,30z')", 9077 "url(#mypath)", 9078 "url('404.svg#mypath')", 9079 "url(#my-clip-path)", 9080 "margin-box", 9081 ] 9082 .concat(basicShapeSVGBoxValues) 9083 .concat(basicShapeOtherValues) 9084 .concat(basicShapeOtherValuesWithFillRule) 9085 .concat(basicShapeXywhRectValues) 9086 .concat(basicShapeShapeValues) 9087 .concat(basicShapeShapeValuesWithFillRule), 9088 invalid_values: [ 9089 "path(nonzero)", 9090 "path(abs, 'M 10 10 L 10 10 z')", 9091 "path(evenodd, '')", 9092 "path('')", 9093 ].concat(basicShapeInvalidValues), 9094 unbalanced_values: basicShapeUnbalancedValues, 9095 }, 9096 "clip-rule": { 9097 domProp: "clipRule", 9098 inherited: true, 9099 type: CSS_TYPE_LONGHAND, 9100 initial_values: ["nonzero"], 9101 other_values: ["evenodd"], 9102 invalid_values: [], 9103 }, 9104 "color-interpolation": { 9105 domProp: "colorInterpolation", 9106 inherited: true, 9107 type: CSS_TYPE_LONGHAND, 9108 initial_values: ["sRGB"], 9109 other_values: ["auto", "linearRGB"], 9110 invalid_values: [], 9111 }, 9112 "color-interpolation-filters": { 9113 domProp: "colorInterpolationFilters", 9114 inherited: true, 9115 type: CSS_TYPE_LONGHAND, 9116 initial_values: ["linearRGB"], 9117 other_values: ["sRGB", "auto"], 9118 invalid_values: [], 9119 }, 9120 "dominant-baseline": { 9121 domProp: "dominantBaseline", 9122 inherited: true, 9123 type: CSS_TYPE_LONGHAND, 9124 initial_values: ["auto"], 9125 other_values: [ 9126 "ideographic", 9127 "alphabetic", 9128 "hanging", 9129 "mathematical", 9130 "central", 9131 "middle", 9132 "text-after-edge", 9133 "text-before-edge", 9134 ], 9135 invalid_values: [], 9136 }, 9137 fill: { 9138 domProp: "fill", 9139 inherited: true, 9140 type: CSS_TYPE_LONGHAND, 9141 applies_to_first_letter: true, 9142 applies_to_first_line: true, 9143 prerequisites: { color: "blue" }, 9144 initial_values: ["black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)"], 9145 other_values: [ 9146 "green", 9147 "#fc3", 9148 "url('#myserver')", 9149 "url(foo.svg#myserver)", 9150 'url("#myserver") green', 9151 "none", 9152 "currentColor", 9153 "context-fill", 9154 "context-stroke", 9155 ], 9156 invalid_values: ["000000", "ff00ff", "url('#myserver') rgb(0, rubbish, 0)"], 9157 }, 9158 "fill-opacity": { 9159 domProp: "fillOpacity", 9160 inherited: true, 9161 type: CSS_TYPE_LONGHAND, 9162 applies_to_first_letter: true, 9163 applies_to_first_line: true, 9164 initial_values: ["1", "2.8", "1.000", "300%"], 9165 other_values: [ 9166 "0", 9167 "0.3", 9168 "-7.3", 9169 "-100%", 9170 "50%", 9171 "context-fill-opacity", 9172 "context-stroke-opacity", 9173 ], 9174 invalid_values: [], 9175 }, 9176 "fill-rule": { 9177 domProp: "fillRule", 9178 inherited: true, 9179 type: CSS_TYPE_LONGHAND, 9180 applies_to_first_letter: true, 9181 applies_to_first_line: true, 9182 initial_values: ["nonzero"], 9183 other_values: ["evenodd"], 9184 invalid_values: [], 9185 }, 9186 filter: { 9187 domProp: "filter", 9188 inherited: false, 9189 type: CSS_TYPE_LONGHAND, 9190 initial_values: ["none"], 9191 other_values: [ 9192 // SVG reference filters 9193 "url(#my-filter)", 9194 "url(#my-filter-1) url(#my-filter-2)", 9195 9196 // Filter functions 9197 "opacity(50%) saturate(1.0)", 9198 "invert(50%) sepia(0.1) brightness(90%)", 9199 9200 // Mixed SVG reference filters and filter functions 9201 "grayscale(1) url(#my-filter-1)", 9202 "url(#my-filter-1) brightness(50%) contrast(0.9)", 9203 9204 // Bad URLs 9205 "url('badscheme:badurl')", 9206 "blur(3px) url('badscheme:badurl') grayscale(50%)", 9207 9208 "blur()", 9209 "blur(0)", 9210 "blur(0px)", 9211 "blur(0.5px)", 9212 "blur(3px)", 9213 "blur(100px)", 9214 "blur(0.1em)", 9215 "blur(calc(-1px))", // Parses and becomes blur(0px). 9216 "blur(calc(0px))", 9217 "blur(calc(5px))", 9218 "blur(calc(2 * 5px))", 9219 9220 "brightness()", 9221 "brightness(0)", 9222 "brightness(50%)", 9223 "brightness(1)", 9224 "brightness(1.0)", 9225 "brightness(2)", 9226 "brightness(350%)", 9227 "brightness(4.567)", 9228 9229 "contrast()", 9230 "contrast(0)", 9231 "contrast(50%)", 9232 "contrast(1)", 9233 "contrast(1.0)", 9234 "contrast(2)", 9235 "contrast(350%)", 9236 "contrast(4.567)", 9237 9238 "drop-shadow(2px 2px)", 9239 "drop-shadow(2px 2px 1px)", 9240 "drop-shadow(2px 2px green)", 9241 "drop-shadow(2px 2px 1px green)", 9242 "drop-shadow(green 2px 2px)", 9243 "drop-shadow(green 2px 2px 1px)", 9244 "drop-shadow(currentColor 3px 3px)", 9245 "drop-shadow(2px 2px calc(-5px))" /* clamped */, 9246 "drop-shadow(calc(3em - 2px) 2px green)", 9247 "drop-shadow(green calc(3em - 2px) 2px)", 9248 "drop-shadow(2px calc(2px + 0.2em))", 9249 "drop-shadow(blue 2px calc(2px + 0.2em))", 9250 "drop-shadow(2px calc(2px + 0.2em) blue)", 9251 "drop-shadow(calc(-2px) calc(-2px))", 9252 "drop-shadow(-2px -2px)", 9253 "drop-shadow(calc(2px) calc(2px))", 9254 "drop-shadow(calc(2px) calc(2px) calc(2px))", 9255 9256 "grayscale()", 9257 "grayscale(0)", 9258 "grayscale(50%)", 9259 "grayscale(1)", 9260 "grayscale(1.0)", 9261 "grayscale(2)", 9262 "grayscale(350%)", 9263 "grayscale(4.567)", 9264 9265 "hue-rotate()", 9266 "hue-rotate(0)", 9267 "hue-rotate(0deg)", 9268 "hue-rotate(90deg)", 9269 "hue-rotate(540deg)", 9270 "hue-rotate(-90deg)", 9271 "hue-rotate(10grad)", 9272 "hue-rotate(1.6rad)", 9273 "hue-rotate(-1.6rad)", 9274 "hue-rotate(0.5turn)", 9275 "hue-rotate(-2turn)", 9276 9277 "invert()", 9278 "invert(0)", 9279 "invert(50%)", 9280 "invert(1)", 9281 "invert(1.0)", 9282 "invert(2)", 9283 "invert(350%)", 9284 "invert(4.567)", 9285 9286 "opacity()", 9287 "opacity(0)", 9288 "opacity(50%)", 9289 "opacity(1)", 9290 "opacity(1.0)", 9291 "opacity(2)", 9292 "opacity(350%)", 9293 "opacity(4.567)", 9294 9295 "saturate()", 9296 "saturate(0)", 9297 "saturate(50%)", 9298 "saturate(1)", 9299 "saturate(1.0)", 9300 "saturate(2)", 9301 "saturate(350%)", 9302 "saturate(4.567)", 9303 9304 "sepia()", 9305 "sepia(0)", 9306 "sepia(50%)", 9307 "sepia(1)", 9308 "sepia(1.0)", 9309 "sepia(2)", 9310 "sepia(350%)", 9311 "sepia(4.567)", 9312 ], 9313 invalid_values: [ 9314 // none 9315 "none none", 9316 "url(#my-filter) none", 9317 "none url(#my-filter)", 9318 "blur(2px) none url(#my-filter)", 9319 9320 // Nested filters 9321 "grayscale(invert(1.0))", 9322 9323 // Comma delimited filters 9324 "url(#my-filter),", 9325 "invert(50%), url(#my-filter), brightness(90%)", 9326 9327 // Test the following situations for each filter function: 9328 // - Invalid number of arguments 9329 // - Comma delimited arguments 9330 // - Wrong argument type 9331 // - Argument value out of range 9332 "blur(3px 5px)", 9333 "blur(3px,)", 9334 "blur(3px, 5px)", 9335 "blur(#my-filter)", 9336 "blur(0.5)", 9337 "blur(50%)", 9338 "blur(calc(0))", // Unitless zero in calc is not a valid length. 9339 "blur(calc(0.1))", 9340 "blur(calc(10%))", 9341 "blur(calc(20px - 5%))", 9342 "blur(-3px)", 9343 9344 "brightness(0.5 0.5)", 9345 "brightness(0.5,)", 9346 "brightness(0.5, 0.5)", 9347 "brightness(#my-filter)", 9348 "brightness(10px)", 9349 "brightness(-1)", 9350 9351 "contrast(0.5 0.5)", 9352 "contrast(0.5,)", 9353 "contrast(0.5, 0.5)", 9354 "contrast(#my-filter)", 9355 "contrast(10px)", 9356 "contrast(-1)", 9357 9358 "drop-shadow()", 9359 "drop-shadow(3% 3%)", 9360 "drop-shadow(2px 2px -5px)", 9361 "drop-shadow(2px 2px 2px 2px)", 9362 "drop-shadow(2px 2px, none)", 9363 "drop-shadow(none, 2px 2px)", 9364 "drop-shadow(inherit, 2px 2px)", 9365 "drop-shadow(2px 2px, inherit)", 9366 "drop-shadow(2 2px)", 9367 "drop-shadow(2px 2)", 9368 "drop-shadow(2px 2px 2)", 9369 "drop-shadow(2px 2px 2px 2)", 9370 "drop-shadow(calc(2px) calc(2px) calc(2px) calc(2px))", 9371 "drop-shadow(green 2px 2px, blue 1px 3px 4px)", 9372 "drop-shadow(blue 2px 2px, currentColor 1px 2px)", 9373 "drop-shadow(unset, 2px 2px)", 9374 "drop-shadow(2px 2px, unset)", 9375 9376 "grayscale(0.5 0.5)", 9377 "grayscale(0.5,)", 9378 "grayscale(0.5, 0.5)", 9379 "grayscale(#my-filter)", 9380 "grayscale(10px)", 9381 "grayscale(-1)", 9382 9383 "hue-rotate(0.5 0.5)", 9384 "hue-rotate(0.5,)", 9385 "hue-rotate(0.5, 0.5)", 9386 "hue-rotate(#my-filter)", 9387 "hue-rotate(10px)", 9388 "hue-rotate(-1)", 9389 "hue-rotate(45deg,)", 9390 9391 "invert(0.5 0.5)", 9392 "invert(0.5,)", 9393 "invert(0.5, 0.5)", 9394 "invert(#my-filter)", 9395 "invert(10px)", 9396 "invert(-1)", 9397 9398 "opacity(0.5 0.5)", 9399 "opacity(0.5,)", 9400 "opacity(0.5, 0.5)", 9401 "opacity(#my-filter)", 9402 "opacity(10px)", 9403 "opacity(-1)", 9404 9405 "saturate(0.5 0.5)", 9406 "saturate(0.5,)", 9407 "saturate(0.5, 0.5)", 9408 "saturate(#my-filter)", 9409 "saturate(10px)", 9410 "saturate(-1)", 9411 9412 "sepia(0.5 0.5)", 9413 "sepia(0.5,)", 9414 "sepia(0.5, 0.5)", 9415 "sepia(#my-filter)", 9416 "sepia(10px)", 9417 "sepia(-1)", 9418 ], 9419 }, 9420 "flood-color": { 9421 domProp: "floodColor", 9422 inherited: false, 9423 type: CSS_TYPE_LONGHAND, 9424 prerequisites: { color: "blue" }, 9425 initial_values: ["black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)"], 9426 other_values: ["green", "#fc3", "currentColor"], 9427 invalid_values: [ 9428 "url('#myserver')", 9429 "url(foo.svg#myserver)", 9430 'url("#myserver") green', 9431 "000000", 9432 "ff00ff", 9433 ], 9434 }, 9435 "flood-opacity": { 9436 domProp: "floodOpacity", 9437 inherited: false, 9438 type: CSS_TYPE_LONGHAND, 9439 initial_values: ["1", "2.8", "1.000", "300%"], 9440 other_values: ["0", "0.3", "-7.3", "-100%", "50%"], 9441 invalid_values: [], 9442 }, 9443 "image-orientation": { 9444 domProp: "imageOrientation", 9445 inherited: true, 9446 type: CSS_TYPE_LONGHAND, 9447 initial_values: ["from-image"], 9448 other_values: ["none"], 9449 invalid_values: ["0", "0deg"], 9450 }, 9451 "image-rendering": { 9452 domProp: "imageRendering", 9453 inherited: true, 9454 type: CSS_TYPE_LONGHAND, 9455 initial_values: ["auto"], 9456 other_values: [ 9457 "optimizeSpeed", 9458 "optimizeQuality", 9459 "-moz-crisp-edges", 9460 "crisp-edges", 9461 "smooth", 9462 "pixelated", 9463 ], 9464 invalid_values: [], 9465 }, 9466 isolation: { 9467 domProp: "isolation", 9468 inherited: false, 9469 type: CSS_TYPE_LONGHAND, 9470 initial_values: ["auto"], 9471 other_values: ["isolate"], 9472 invalid_values: [], 9473 }, 9474 "lighting-color": { 9475 domProp: "lightingColor", 9476 inherited: false, 9477 type: CSS_TYPE_LONGHAND, 9478 prerequisites: { color: "blue" }, 9479 initial_values: [ 9480 "white", 9481 "#fff", 9482 "#ffffff", 9483 "rgb(255,255,255)", 9484 "rgba(255,255,255,1.0)", 9485 "rgba(255,255,255,42.0)", 9486 ], 9487 other_values: ["green", "#fc3", "currentColor"], 9488 invalid_values: [ 9489 "url('#myserver')", 9490 "url(foo.svg#myserver)", 9491 'url("#myserver") green', 9492 "000000", 9493 "ff00ff", 9494 ], 9495 }, 9496 marker: { 9497 domProp: "marker", 9498 inherited: true, 9499 type: CSS_TYPE_TRUE_SHORTHAND, 9500 subproperties: ["marker-start", "marker-mid", "marker-end"], 9501 initial_values: ["none"], 9502 other_values: ["url(#mysym)"], 9503 invalid_values: [ 9504 "none none", 9505 "url(#mysym) url(#mysym)", 9506 "none url(#mysym)", 9507 "url(#mysym) none", 9508 ], 9509 }, 9510 "marker-end": { 9511 domProp: "markerEnd", 9512 inherited: true, 9513 type: CSS_TYPE_LONGHAND, 9514 initial_values: ["none"], 9515 other_values: ["url(#mysym)"], 9516 invalid_values: [], 9517 }, 9518 "marker-mid": { 9519 domProp: "markerMid", 9520 inherited: true, 9521 type: CSS_TYPE_LONGHAND, 9522 initial_values: ["none"], 9523 other_values: ["url(#mysym)"], 9524 invalid_values: [], 9525 }, 9526 "marker-start": { 9527 domProp: "markerStart", 9528 inherited: true, 9529 type: CSS_TYPE_LONGHAND, 9530 initial_values: ["none"], 9531 other_values: ["url(#mysym)"], 9532 invalid_values: [], 9533 }, 9534 "mix-blend-mode": { 9535 domProp: "mixBlendMode", 9536 inherited: false, 9537 type: CSS_TYPE_LONGHAND, 9538 initial_values: ["normal"], 9539 other_values: [ 9540 "multiply", 9541 "screen", 9542 "overlay", 9543 "darken", 9544 "lighten", 9545 "color-dodge", 9546 "color-burn", 9547 "hard-light", 9548 "soft-light", 9549 "difference", 9550 "exclusion", 9551 "hue", 9552 "saturation", 9553 "color", 9554 "luminosity", 9555 "plus-lighter", 9556 ], 9557 invalid_values: [], 9558 }, 9559 "shape-image-threshold": { 9560 domProp: "shapeImageThreshold", 9561 inherited: false, 9562 type: CSS_TYPE_LONGHAND, 9563 applies_to_first_letter: true, 9564 initial_values: ["0", "0.0000", "-3", "0%", "-100%"], 9565 other_values: [ 9566 "0.4", 9567 "1", 9568 "17", 9569 "397.376", 9570 "3e1", 9571 "3e+1", 9572 "3e-1", 9573 "3e0", 9574 "3e+0", 9575 "3e-0", 9576 "50%", 9577 "300%", 9578 ], 9579 invalid_values: ["0px", "1px", "default", "auto"], 9580 }, 9581 "shape-margin": { 9582 domProp: "shapeMargin", 9583 inherited: false, 9584 type: CSS_TYPE_LONGHAND, 9585 applies_to_first_letter: true, 9586 initial_values: ["0"], 9587 other_values: ["2px", "2%", "1em", "calc(1px + 1em)", "calc(1%)"], 9588 invalid_values: ["-1px", "auto", "none", "stretch", "1px 1px", "-1%"], 9589 }, 9590 "shape-outside": { 9591 domProp: "shapeOutside", 9592 inherited: false, 9593 type: CSS_TYPE_LONGHAND, 9594 applies_to_first_letter: true, 9595 initial_values: ["none"], 9596 other_values: ["url(#my-shape-outside)", "margin-box"].concat( 9597 basicShapeOtherValues, 9598 basicShapeOtherValuesWithFillRule, 9599 validNonUrlImageValues 9600 ), 9601 invalid_values: [].concat( 9602 basicShapeSVGBoxValues, 9603 basicShapeInvalidValues, 9604 invalidNonUrlImageValues 9605 ), 9606 unbalanced_values: [].concat( 9607 basicShapeUnbalancedValues, 9608 unbalancedGradientAndElementValues 9609 ), 9610 }, 9611 "shape-rendering": { 9612 domProp: "shapeRendering", 9613 inherited: true, 9614 type: CSS_TYPE_LONGHAND, 9615 initial_values: ["auto"], 9616 other_values: ["optimizeSpeed", "crispEdges", "geometricPrecision"], 9617 invalid_values: [], 9618 }, 9619 "stop-color": { 9620 domProp: "stopColor", 9621 inherited: false, 9622 type: CSS_TYPE_LONGHAND, 9623 prerequisites: { color: "blue" }, 9624 initial_values: ["black", "#000", "#000000", "rgb(0,0,0)", "rgba(0,0,0,1)"], 9625 other_values: ["green", "#fc3", "currentColor"], 9626 invalid_values: [ 9627 "url('#myserver')", 9628 "url(foo.svg#myserver)", 9629 'url("#myserver") green', 9630 "000000", 9631 "ff00ff", 9632 ], 9633 }, 9634 "stop-opacity": { 9635 domProp: "stopOpacity", 9636 inherited: false, 9637 type: CSS_TYPE_LONGHAND, 9638 initial_values: ["1", "2.8", "1.000", "300%"], 9639 other_values: ["0", "0.3", "-7.3", "-100%", "50%"], 9640 invalid_values: [], 9641 }, 9642 stroke: { 9643 domProp: "stroke", 9644 inherited: true, 9645 type: CSS_TYPE_LONGHAND, 9646 applies_to_first_letter: true, 9647 applies_to_first_line: true, 9648 initial_values: ["none"], 9649 other_values: [ 9650 "black", 9651 "#000", 9652 "#000000", 9653 "rgb(0,0,0)", 9654 "rgba(0,0,0,1)", 9655 "green", 9656 "#fc3", 9657 "url('#myserver')", 9658 "url(foo.svg#myserver)", 9659 'url("#myserver") green', 9660 "currentColor", 9661 "context-fill", 9662 "context-stroke", 9663 ], 9664 invalid_values: ["000000", "ff00ff"], 9665 }, 9666 "stroke-dasharray": { 9667 domProp: "strokeDasharray", 9668 inherited: true, 9669 type: CSS_TYPE_LONGHAND, 9670 applies_to_first_letter: true, 9671 applies_to_first_line: true, 9672 initial_values: ["none"], 9673 other_values: [ 9674 "5px,3px,2px", 9675 "5px 3px 2px", 9676 " 5px ,3px\t, 2px ", 9677 "1px", 9678 "5%", 9679 "3em", 9680 "0.0002", 9681 "context-value", 9682 ], 9683 invalid_values: ["stretch", "-5px,3px,2px", "5px,3px,-2px"], 9684 }, 9685 "stroke-dashoffset": { 9686 domProp: "strokeDashoffset", 9687 inherited: true, 9688 applies_to_first_letter: true, 9689 applies_to_first_line: true, 9690 type: CSS_TYPE_LONGHAND, 9691 initial_values: ["0", "-0px", "0em"], 9692 other_values: ["3px", "3%", "1em", "0.0002", "context-value"], 9693 invalid_values: ["stretch"], 9694 }, 9695 "stroke-linecap": { 9696 domProp: "strokeLinecap", 9697 inherited: true, 9698 type: CSS_TYPE_LONGHAND, 9699 applies_to_first_letter: true, 9700 applies_to_first_line: true, 9701 initial_values: ["butt"], 9702 other_values: ["round", "square"], 9703 invalid_values: [], 9704 }, 9705 "stroke-linejoin": { 9706 domProp: "strokeLinejoin", 9707 inherited: true, 9708 type: CSS_TYPE_LONGHAND, 9709 applies_to_first_letter: true, 9710 applies_to_first_line: true, 9711 initial_values: ["miter"], 9712 other_values: ["round", "bevel"], 9713 invalid_values: [], 9714 }, 9715 "stroke-miterlimit": { 9716 domProp: "strokeMiterlimit", 9717 inherited: true, 9718 type: CSS_TYPE_LONGHAND, 9719 applies_to_first_letter: true, 9720 applies_to_first_line: true, 9721 initial_values: ["4"], 9722 other_values: ["0", "0.9", "1", "7", "5000", "1.1"], 9723 invalid_values: ["-1", "3px", "-0.3"], 9724 }, 9725 "stroke-opacity": { 9726 domProp: "strokeOpacity", 9727 inherited: true, 9728 type: CSS_TYPE_LONGHAND, 9729 applies_to_first_letter: true, 9730 applies_to_first_line: true, 9731 initial_values: ["1", "2.8", "1.000", "300%"], 9732 other_values: [ 9733 "0", 9734 "0.3", 9735 "-7.3", 9736 "-100%", 9737 "50%", 9738 "context-fill-opacity", 9739 "context-stroke-opacity", 9740 ], 9741 invalid_values: [], 9742 }, 9743 "stroke-width": { 9744 domProp: "strokeWidth", 9745 inherited: true, 9746 type: CSS_TYPE_LONGHAND, 9747 applies_to_first_letter: true, 9748 applies_to_first_line: true, 9749 initial_values: ["1px"], 9750 other_values: [ 9751 "0", 9752 "0px", 9753 "-0em", 9754 "17px", 9755 "0.2em", 9756 "0.0002", 9757 "context-value", 9758 ], 9759 invalid_values: ["stretch", "-0.1px", "-3px"], 9760 }, 9761 x: { 9762 domProp: "x", 9763 inherited: false, 9764 type: CSS_TYPE_LONGHAND, 9765 initial_values: ["0px"], 9766 other_values: ["-1em", "17px", "0.2em", "23.4%"], 9767 invalid_values: ["stretch", "auto", "context-value", "0.0002"], 9768 }, 9769 y: { 9770 domProp: "y", 9771 inherited: false, 9772 type: CSS_TYPE_LONGHAND, 9773 initial_values: ["0px"], 9774 other_values: ["-1em", "17px", "0.2em", "23.4%"], 9775 invalid_values: ["stretch", "auto", "context-value", "0.0002"], 9776 }, 9777 cx: { 9778 domProp: "cx", 9779 inherited: false, 9780 type: CSS_TYPE_LONGHAND, 9781 initial_values: ["0px"], 9782 other_values: ["-1em", "17px", "0.2em", "23.4%"], 9783 invalid_values: ["stretch", "auto", "context-value", "0.0002"], 9784 }, 9785 cy: { 9786 domProp: "cy", 9787 inherited: false, 9788 type: CSS_TYPE_LONGHAND, 9789 initial_values: ["0px"], 9790 other_values: ["-1em", "17px", "0.2em", "23.4%"], 9791 invalid_values: ["stretch", "auto", "context-value", "0.0002"], 9792 }, 9793 r: { 9794 domProp: "r", 9795 inherited: false, 9796 type: CSS_TYPE_LONGHAND, 9797 initial_values: ["0px"], 9798 other_values: ["17px", "0.2em", "23.4%"], 9799 invalid_values: ["stretch", "auto", "-1", "-1.5px", "0.0002"], 9800 }, 9801 rx: { 9802 domProp: "rx", 9803 inherited: false, 9804 type: CSS_TYPE_LONGHAND, 9805 initial_values: ["auto"], 9806 other_values: ["17px", "0.2em", "23.4%"], 9807 invalid_values: ["stretch", "hello", "-12px", "0.0002"], 9808 }, 9809 ry: { 9810 domProp: "ry", 9811 inherited: false, 9812 type: CSS_TYPE_LONGHAND, 9813 initial_values: ["auto"], 9814 other_values: ["17px", "0.2em", "23.4%"], 9815 invalid_values: ["stretch", "hello", "-1.3px", "0.0002"], 9816 }, 9817 "text-anchor": { 9818 domProp: "textAnchor", 9819 inherited: true, 9820 type: CSS_TYPE_LONGHAND, 9821 initial_values: ["start"], 9822 other_values: ["middle", "end"], 9823 invalid_values: [], 9824 }, 9825 "text-rendering": { 9826 domProp: "textRendering", 9827 inherited: true, 9828 type: CSS_TYPE_LONGHAND, 9829 applies_to_first_letter: true, 9830 applies_to_first_line: true, 9831 initial_values: ["auto"], 9832 other_values: ["optimizeSpeed", "optimizeLegibility", "geometricPrecision"], 9833 invalid_values: [], 9834 }, 9835 "vector-effect": { 9836 domProp: "vectorEffect", 9837 inherited: false, 9838 type: CSS_TYPE_LONGHAND, 9839 applies_to_first_letter: true, 9840 applies_to_first_line: true, 9841 initial_values: ["none"], 9842 other_values: ["non-scaling-stroke"], 9843 invalid_values: ["none non-scaling-stroke"], 9844 }, 9845 "accent-color": { 9846 domProp: "accentColor", 9847 inherited: true, 9848 type: CSS_TYPE_LONGHAND, 9849 prerequisites: { color: "black" }, 9850 initial_values: ["auto"], 9851 other_values: [ 9852 "currentcolor", 9853 "black", 9854 "green", 9855 "transparent", 9856 "rgba(128,128,128,.5)", 9857 "#123", 9858 ], 9859 invalid_values: ["#0", "#00", "#00000", "cc00ff"], 9860 }, 9861 "align-content": { 9862 domProp: "alignContent", 9863 inherited: false, 9864 type: CSS_TYPE_LONGHAND, 9865 initial_values: ["normal"], 9866 other_values: [ 9867 "start", 9868 "end", 9869 "flex-start", 9870 "flex-end", 9871 "center", 9872 "space-between", 9873 "space-around", 9874 "space-evenly", 9875 "first baseline", 9876 "last baseline", 9877 "baseline", 9878 "stretch", 9879 "safe start", 9880 "unsafe end", 9881 "safe end", 9882 ], 9883 invalid_values: [ 9884 "none", 9885 "5", 9886 "self-end", 9887 "safe", 9888 "normal unsafe", 9889 "unsafe safe", 9890 "safe baseline", 9891 "baseline unsafe", 9892 "baseline end", 9893 "end normal", 9894 "safe end unsafe start", 9895 "safe end unsafe", 9896 "normal safe start", 9897 "unsafe end start", 9898 "end start safe", 9899 "space-between unsafe", 9900 "stretch safe", 9901 "auto", 9902 "first", 9903 "last", 9904 "left", 9905 "right", 9906 ], 9907 }, 9908 "align-items": { 9909 domProp: "alignItems", 9910 inherited: false, 9911 type: CSS_TYPE_LONGHAND, 9912 initial_values: ["normal"], 9913 other_values: [ 9914 "end", 9915 "flex-start", 9916 "flex-end", 9917 "self-start", 9918 "self-end", 9919 "center", 9920 "stretch", 9921 "first baseline", 9922 "last baseline", 9923 "baseline", 9924 "start", 9925 "unsafe center", 9926 "safe center", 9927 ], 9928 invalid_values: [ 9929 "space-between", 9930 "abc", 9931 "5%", 9932 "legacy", 9933 "legacy end", 9934 "end legacy", 9935 "unsafe", 9936 "unsafe baseline", 9937 "normal unsafe", 9938 "safe left unsafe", 9939 "safe stretch", 9940 "end end", 9941 "auto", 9942 "left", 9943 "right", 9944 ], 9945 }, 9946 "align-self": { 9947 domProp: "alignSelf", 9948 inherited: false, 9949 type: CSS_TYPE_LONGHAND, 9950 initial_values: ["auto"], 9951 other_values: [ 9952 "normal", 9953 "start", 9954 "flex-start", 9955 "flex-end", 9956 "center", 9957 "stretch", 9958 "first baseline", 9959 "last baseline", 9960 "baseline", 9961 "unsafe center", 9962 "self-start", 9963 "safe self-end", 9964 ], 9965 invalid_values: [ 9966 "space-between", 9967 "abc", 9968 "30px", 9969 "stretch safe", 9970 "safe", 9971 "left", 9972 "right", 9973 ], 9974 }, 9975 "justify-content": { 9976 domProp: "justifyContent", 9977 inherited: false, 9978 type: CSS_TYPE_LONGHAND, 9979 initial_values: ["normal"], 9980 other_values: [ 9981 "start", 9982 "end", 9983 "flex-start", 9984 "flex-end", 9985 "center", 9986 "left", 9987 "right", 9988 "space-between", 9989 "space-around", 9990 "space-evenly", 9991 "stretch", 9992 "safe start", 9993 "unsafe end", 9994 "safe end", 9995 ], 9996 invalid_values: [ 9997 "30px", 9998 "5%", 9999 "self-end", 10000 "safe", 10001 "normal unsafe", 10002 "unsafe safe", 10003 "safe baseline", 10004 "baseline unsafe", 10005 "baseline end", 10006 "normal end", 10007 "safe end unsafe start", 10008 "safe end unsafe", 10009 "normal safe start", 10010 "unsafe end start", 10011 "end start safe", 10012 "space-around unsafe", 10013 "safe stretch", 10014 "auto", 10015 "first", 10016 "last", 10017 ], 10018 }, 10019 "justify-items": { 10020 domProp: "justifyItems", 10021 inherited: false, 10022 type: CSS_TYPE_LONGHAND, 10023 initial_values: ["legacy", "normal"], 10024 other_values: [ 10025 "end", 10026 "flex-start", 10027 "flex-end", 10028 "self-start", 10029 "self-end", 10030 "center", 10031 "left", 10032 "right", 10033 "stretch", 10034 "start", 10035 "legacy left", 10036 "right legacy", 10037 "legacy center", 10038 "unsafe right", 10039 "unsafe left", 10040 "safe right", 10041 "safe center", 10042 ], 10043 invalid_values: [ 10044 "auto", 10045 "space-between", 10046 "abc", 10047 "30px", 10048 "legacy start", 10049 "end legacy", 10050 "legacy baseline", 10051 "legacy legacy", 10052 "unsafe", 10053 "safe legacy left", 10054 "legacy left safe", 10055 "legacy safe left", 10056 "safe left legacy", 10057 "legacy left legacy", 10058 "baseline unsafe", 10059 "safe unsafe", 10060 "safe left unsafe", 10061 "safe stretch", 10062 "last", 10063 ], 10064 }, 10065 "justify-self": { 10066 domProp: "justifySelf", 10067 inherited: false, 10068 type: CSS_TYPE_LONGHAND, 10069 initial_values: ["auto"], 10070 other_values: [ 10071 "normal", 10072 "start", 10073 "end", 10074 "flex-start", 10075 "flex-end", 10076 "self-start", 10077 "self-end", 10078 "center", 10079 "left", 10080 "right", 10081 "stretch", 10082 "unsafe left", 10083 "baseline", 10084 "last baseline", 10085 "first baseline", 10086 "unsafe right", 10087 "safe right", 10088 "safe center", 10089 ], 10090 invalid_values: [ 10091 "space-between", 10092 "abc", 10093 "30px", 10094 "none", 10095 "first", 10096 "last", 10097 "legacy left", 10098 "right legacy", 10099 "baseline first", 10100 "baseline last", 10101 ], 10102 }, 10103 "place-content": { 10104 domProp: "placeContent", 10105 inherited: false, 10106 type: CSS_TYPE_TRUE_SHORTHAND, 10107 subproperties: ["align-content", "justify-content"], 10108 initial_values: ["normal"], 10109 other_values: [ 10110 "normal start", 10111 "baseline end", 10112 "end end", 10113 "space-between flex-end", 10114 "last baseline start", 10115 "space-evenly", 10116 "flex-start", 10117 "end", 10118 "unsafe start", 10119 "safe center", 10120 "baseline", 10121 "last baseline", 10122 ], 10123 invalid_values: [ 10124 "none", 10125 "center safe", 10126 "right / end", 10127 "left", 10128 "right", 10129 "left left", 10130 "right right", 10131 ], 10132 }, 10133 "place-items": { 10134 domProp: "placeItems", 10135 inherited: false, 10136 type: CSS_TYPE_TRUE_SHORTHAND, 10137 subproperties: ["align-items", "justify-items"], 10138 initial_values: ["normal"], 10139 other_values: [ 10140 "normal center", 10141 "baseline end", 10142 "end legacy", 10143 "end", 10144 "flex-end left", 10145 "last baseline start", 10146 "stretch", 10147 "safe center", 10148 "end legacy left", 10149 ], 10150 invalid_values: [ 10151 "space-between", 10152 "start space-evenly", 10153 "none", 10154 "end/end", 10155 "center safe", 10156 "auto start", 10157 "left", 10158 "right", 10159 "left left", 10160 "right right", 10161 ], 10162 }, 10163 "place-self": { 10164 domProp: "placeSelf", 10165 inherited: false, 10166 type: CSS_TYPE_TRUE_SHORTHAND, 10167 subproperties: ["align-self", "justify-self"], 10168 initial_values: ["auto"], 10169 other_values: [ 10170 "normal start", 10171 "first baseline end", 10172 "end auto", 10173 "end", 10174 "normal", 10175 "baseline start", 10176 "baseline", 10177 "start baseline", 10178 "self-end left", 10179 "last baseline start", 10180 "stretch", 10181 ], 10182 invalid_values: [ 10183 "space-between", 10184 "start space-evenly", 10185 "none", 10186 "end safe", 10187 "auto legacy left", 10188 "legacy left", 10189 "auto/auto", 10190 "left", 10191 "right", 10192 "left left", 10193 "right right", 10194 ], 10195 }, 10196 flex: { 10197 domProp: "flex", 10198 inherited: false, 10199 type: CSS_TYPE_TRUE_SHORTHAND, 10200 subproperties: ["flex-grow", "flex-shrink", "flex-basis"], 10201 initial_values: ["0 1 auto", "auto 0 1", "0 auto", "auto 0"], 10202 other_values: [ 10203 "none", 10204 "1", 10205 "0", 10206 "0 1", 10207 "0.5", 10208 "1.2 3.4", 10209 "0 0 0", 10210 "0 0 0px", 10211 "0px 0 0", 10212 "5px 0 0", 10213 "2 auto", 10214 "auto 4", 10215 "auto 5.6 7.8", 10216 "max-content", 10217 "1 max-content", 10218 "1 2 max-content", 10219 "max-content 1", 10220 "max-content 1 2", 10221 "-0", 10222 ], 10223 invalid_values: [ 10224 "1 2px 3", 10225 "1 auto 3", 10226 "1px 2 3px", 10227 "1px 2 3 4px", 10228 "-1", 10229 "1 -1", 10230 "0 1 calc(0px + rubbish)", 10231 ], 10232 }, 10233 "flex-basis": { 10234 domProp: "flexBasis", 10235 inherited: false, 10236 type: CSS_TYPE_LONGHAND, 10237 initial_values: [" auto"], 10238 // NOTE: Besides "content", this is cribbed directly from the "width" 10239 // chunk, since this property takes the exact same values as width 10240 // (plus 'content' & with different semantics on 'auto'). 10241 // XXXdholbert (Maybe these should get separated out into 10242 // a reusable array defined at the top of this file?) 10243 other_values: [ 10244 "content", 10245 "15px", 10246 "3em", 10247 "15%", 10248 "max-content", 10249 "min-content", 10250 "fit-content", 10251 "stretch", 10252 "-moz-max-content", 10253 "-moz-min-content", 10254 "-moz-fit-content", 10255 "-moz-available", 10256 "-webkit-fill-available", 10257 // valid calc() values 10258 "calc(-2px)", 10259 "calc(2px)", 10260 "calc(50%)", 10261 "calc(50% + 2px)", 10262 "calc( 50% + 2px)", 10263 "calc(50% + 2px )", 10264 "calc( 50% + 2px )", 10265 "calc(50% - -2px)", 10266 "calc(2px - -50%)", 10267 "calc(3*25px)", 10268 "calc(3 *25px)", 10269 "calc(3 * 25px)", 10270 "calc(3* 25px)", 10271 "calc(25px*3)", 10272 "calc(25px *3)", 10273 "calc(25px* 3)", 10274 "calc(25px * 3)", 10275 "calc(3*25px + 50%)", 10276 "calc(50% - 3em + 2px)", 10277 "calc(50% - (3em + 2px))", 10278 "calc((50% - 3em) + 2px)", 10279 "calc(2em)", 10280 "calc(50%)", 10281 "calc(50px/2)", 10282 "calc(50px/(2 - 1))", 10283 "calc(min(5px))", 10284 "calc(min(5px,2em))", 10285 "calc(max(5px))", 10286 "calc(max(5px,2em))", 10287 "min(5px)", 10288 "min(5px,2em)", 10289 "max(5px)", 10290 "max(5px,2em)", 10291 ], 10292 invalid_values: [ 10293 "none", 10294 "-2px", 10295 // invalid calc() values 10296 "calc(50%+ 2px)", 10297 "calc(50% +2px)", 10298 "calc(50%+2px)", 10299 "-moz-min()", 10300 "calc(min())", 10301 "-moz-max()", 10302 "calc(max())", 10303 "-moz-min(5px)", 10304 "-moz-max(5px)", 10305 "-moz-min(5px,2em)", 10306 "-moz-max(5px,2em)", 10307 // If we ever support division by values, which is 10308 // complicated for the reasons described in 10309 // http://lists.w3.org/Archives/Public/www-style/2010Jan/0007.html 10310 // , we should support all 4 of these as described in 10311 // http://lists.w3.org/Archives/Public/www-style/2009Dec/0296.html 10312 "calc((3em / 100%) * 3em)", 10313 "calc(3em / 100% * 3em)", 10314 "calc(3em * (3em / 100%))", 10315 "calc(3em * 3em / 100%)", 10316 "anchor-size()", 10317 "anchor-size(--a width)", 10318 "anchor-size(--a width, 10px)", 10319 ], 10320 }, 10321 "flex-direction": { 10322 domProp: "flexDirection", 10323 inherited: false, 10324 type: CSS_TYPE_LONGHAND, 10325 initial_values: ["row"], 10326 other_values: ["row-reverse", "column", "column-reverse"], 10327 invalid_values: ["10px", "30%", "justify", "column wrap"], 10328 }, 10329 "flex-flow": { 10330 domProp: "flexFlow", 10331 inherited: false, 10332 type: CSS_TYPE_TRUE_SHORTHAND, 10333 subproperties: ["flex-direction", "flex-wrap"], 10334 initial_values: ["row nowrap", "nowrap row", "row", "nowrap"], 10335 other_values: [ 10336 // only specifying one property: 10337 "column", 10338 "wrap", 10339 "wrap-reverse", 10340 // specifying both properties, 'flex-direction' first: 10341 "row wrap", 10342 "row wrap-reverse", 10343 "column wrap", 10344 "column wrap-reverse", 10345 // specifying both properties, 'flex-wrap' first: 10346 "wrap row", 10347 "wrap column", 10348 "wrap-reverse row", 10349 "wrap-reverse column", 10350 ], 10351 invalid_values: [ 10352 // specifying flex-direction twice (invalid): 10353 "row column", 10354 "row column nowrap", 10355 "row nowrap column", 10356 "nowrap row column", 10357 // specifying flex-wrap twice (invalid): 10358 "nowrap wrap-reverse", 10359 "nowrap wrap-reverse row", 10360 "nowrap row wrap-reverse", 10361 "row nowrap wrap-reverse", 10362 // Invalid data-type / invalid keyword type: 10363 "1px", 10364 "5%", 10365 "justify", 10366 "none", 10367 ], 10368 }, 10369 "flex-grow": { 10370 domProp: "flexGrow", 10371 inherited: false, 10372 type: CSS_TYPE_LONGHAND, 10373 initial_values: ["0"], 10374 other_values: ["3", "1", "1.0", "2.5", "123"], 10375 invalid_values: ["0px", "-5", "1%", "3em", "stretch", "auto"], 10376 }, 10377 "flex-shrink": { 10378 domProp: "flexShrink", 10379 inherited: false, 10380 type: CSS_TYPE_LONGHAND, 10381 initial_values: ["1"], 10382 other_values: ["3", "0", "0.0", "2.5", "123"], 10383 invalid_values: ["0px", "-5", "1%", "3em", "stretch", "auto"], 10384 }, 10385 "flex-wrap": { 10386 domProp: "flexWrap", 10387 inherited: false, 10388 type: CSS_TYPE_LONGHAND, 10389 initial_values: ["nowrap"], 10390 other_values: ["wrap", "wrap-reverse"], 10391 invalid_values: ["10px", "30%", "justify", "column wrap", "auto"], 10392 }, 10393 order: { 10394 domProp: "order", 10395 inherited: false, 10396 type: CSS_TYPE_LONGHAND, 10397 initial_values: ["0"], 10398 other_values: ["1", "99999", "-1", "-50"], 10399 invalid_values: ["0px", "1.0", "1.", "1%", "0.2", "3em", "stretch"], 10400 }, 10401 10402 // Aliases 10403 "word-wrap": { 10404 domProp: "wordWrap", 10405 inherited: true, 10406 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10407 alias_for: "overflow-wrap", 10408 subproperties: ["overflow-wrap"], 10409 }, 10410 "-moz-tab-size": { 10411 domProp: "MozTabSize", 10412 inherited: true, 10413 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10414 alias_for: "tab-size", 10415 subproperties: ["tab-size"], 10416 }, 10417 "-moz-border-image": { 10418 domProp: "MozBorderImage", 10419 inherited: false, 10420 type: CSS_TYPE_TRUE_SHORTHAND, 10421 alias_for: "border-image", 10422 subproperties: [ 10423 "border-image-source", 10424 "border-image-slice", 10425 "border-image-width", 10426 "border-image-outset", 10427 "border-image-repeat", 10428 ], 10429 }, 10430 "-moz-font-feature-settings": { 10431 domProp: "MozFontFeatureSettings", 10432 inherited: true, 10433 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10434 applies_to_first_letter: true, 10435 applies_to_first_line: true, 10436 applies_to_marker: true, 10437 applies_to_placeholder: true, 10438 applies_to_cue: true, 10439 alias_for: "font-feature-settings", 10440 subproperties: ["font-feature-settings"], 10441 }, 10442 "-moz-font-language-override": { 10443 domProp: "MozFontLanguageOverride", 10444 inherited: true, 10445 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10446 applies_to_first_letter: true, 10447 applies_to_first_line: true, 10448 applies_to_marker: true, 10449 applies_to_placeholder: true, 10450 applies_to_cue: true, 10451 alias_for: "font-language-override", 10452 subproperties: ["font-language-override"], 10453 }, 10454 "-moz-hyphens": { 10455 domProp: "MozHyphens", 10456 inherited: true, 10457 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10458 applies_to_marker: true, 10459 alias_for: "hyphens", 10460 subproperties: ["hyphens"], 10461 }, 10462 // vertical text properties 10463 "writing-mode": { 10464 domProp: "writingMode", 10465 inherited: true, 10466 type: CSS_TYPE_LONGHAND, 10467 initial_values: ["horizontal-tb", "lr", "lr-tb", "rl", "rl-tb"], 10468 other_values: [ 10469 "vertical-lr", 10470 "vertical-rl", 10471 "sideways-rl", 10472 "sideways-lr", 10473 "tb", 10474 "tb-rl", 10475 ], 10476 invalid_values: ["10px", "30%", "justify", "auto", "1em"], 10477 }, 10478 "text-orientation": { 10479 domProp: "textOrientation", 10480 inherited: true, 10481 type: CSS_TYPE_LONGHAND, 10482 applies_to_marker: true, 10483 initial_values: ["mixed"], 10484 other_values: [ 10485 "upright", 10486 "sideways", 10487 "sideways-right", 10488 ] /* sideways-right alias for backward compatibility */, 10489 invalid_values: [ 10490 "none", 10491 "3em", 10492 "sideways-left", 10493 ] /* sideways-left removed from CSS Writing Modes */, 10494 }, 10495 "block-size": { 10496 domProp: "blockSize", 10497 inherited: false, 10498 type: CSS_TYPE_LONGHAND, 10499 logical: true, 10500 axis: true, 10501 /* XXX testing auto has prerequisites */ 10502 initial_values: ["auto"], 10503 prerequisites: { display: "block" }, 10504 other_values: [ 10505 "15px", 10506 "3em", 10507 "15%", 10508 "max-content", 10509 "min-content", 10510 "fit-content", 10511 "stretch", 10512 "-moz-max-content", 10513 "-moz-min-content", 10514 "-moz-fit-content", 10515 "-moz-available", 10516 "-webkit-fill-available", 10517 "calc(2px)", 10518 "calc(50%)", 10519 "calc(3*25px)", 10520 "calc(25px*3)", 10521 "calc(3*25px + 50%)", 10522 "fit-content(100px)", 10523 "fit-content(10%)", 10524 "fit-content(calc(3*25px + 50%))", 10525 ], 10526 invalid_values: ["none"], 10527 }, 10528 "border-block": { 10529 domProp: "borderBlock", 10530 inherited: false, 10531 type: CSS_TYPE_TRUE_SHORTHAND, 10532 subproperties: [ 10533 "border-block-start-color", 10534 "border-block-start-style", 10535 "border-block-start-width", 10536 "border-block-end-color", 10537 "border-block-end-style", 10538 "border-block-end-width", 10539 ], 10540 initial_values: [ 10541 "none", 10542 "medium", 10543 "currentColor", 10544 "thin", 10545 "none medium currentcolor", 10546 ], 10547 other_values: [ 10548 "solid", 10549 "green", 10550 "medium solid", 10551 "green solid", 10552 "10px solid", 10553 "thick solid", 10554 "5px green none", 10555 ], 10556 invalid_values: ["5%", "5", "5 solid green"], 10557 }, 10558 "border-block-end": { 10559 domProp: "borderBlockEnd", 10560 inherited: false, 10561 type: CSS_TYPE_TRUE_SHORTHAND, 10562 subproperties: [ 10563 "border-block-end-color", 10564 "border-block-end-style", 10565 "border-block-end-width", 10566 ], 10567 initial_values: [ 10568 "none", 10569 "medium", 10570 "currentColor", 10571 "thin", 10572 "none medium currentcolor", 10573 ], 10574 other_values: [ 10575 "solid", 10576 "green", 10577 "medium solid", 10578 "green solid", 10579 "10px solid", 10580 "thick solid", 10581 "5px green none", 10582 ], 10583 invalid_values: ["5%", "5", "5 solid green"], 10584 }, 10585 "border-block-color": { 10586 domProp: "borderBlockColor", 10587 inherited: false, 10588 type: CSS_TYPE_TRUE_SHORTHAND, 10589 subproperties: ["border-block-start-color", "border-block-end-color"], 10590 initial_values: ["currentColor"], 10591 other_values: ["green", "rgba(255,128,0,0.5) blue", "blue transparent"], 10592 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000", "000000"], 10593 }, 10594 "border-block-end-color": { 10595 domProp: "borderBlockEndColor", 10596 inherited: false, 10597 type: CSS_TYPE_LONGHAND, 10598 applies_to_first_letter: true, 10599 logical: true, 10600 initial_values: ["currentColor"], 10601 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 10602 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000", "000000"], 10603 }, 10604 "border-block-style": { 10605 domProp: "borderBlockStyle", 10606 inherited: false, 10607 type: CSS_TYPE_TRUE_SHORTHAND, 10608 subproperties: ["border-block-start-style", "border-block-end-style"], 10609 initial_values: ["none"], 10610 other_values: [ 10611 "solid", 10612 "dashed solid", 10613 "solid dotted", 10614 "double double", 10615 "inset outset", 10616 "inset double", 10617 "none groove", 10618 "ridge none", 10619 ], 10620 invalid_values: [], 10621 }, 10622 "border-block-end-style": { 10623 domProp: "borderBlockEndStyle", 10624 inherited: false, 10625 type: CSS_TYPE_LONGHAND, 10626 applies_to_first_letter: true, 10627 logical: true, 10628 /* XXX hidden is sometimes the same as initial */ 10629 initial_values: ["none"], 10630 other_values: [ 10631 "solid", 10632 "dashed", 10633 "dotted", 10634 "double", 10635 "outset", 10636 "inset", 10637 "groove", 10638 "ridge", 10639 ], 10640 invalid_values: [], 10641 }, 10642 "border-block-width": { 10643 domProp: "borderBlockWidth", 10644 inherited: false, 10645 type: CSS_TYPE_TRUE_SHORTHAND, 10646 subproperties: ["border-block-start-width", "border-block-end-width"], 10647 prerequisites: { "border-style": "solid" }, 10648 initial_values: ["medium", "3px", "medium medium"], 10649 other_values: [ 10650 "thin", 10651 "thick", 10652 "1px", 10653 "2em", 10654 "calc(2px)", 10655 "calc(2px) thin", 10656 "calc(-2px)", 10657 "calc(-2px) thick", 10658 "calc(0em)", 10659 "medium calc(0em)", 10660 "calc(0px)", 10661 "1px calc(0px)", 10662 "calc(5em)", 10663 "1em calc(5em)", 10664 ], 10665 invalid_values: ["5%", "5", "5 thin", "thin 5%", "blue", "solid"], 10666 }, 10667 "border-block-end-width": { 10668 domProp: "borderBlockEndWidth", 10669 inherited: false, 10670 type: CSS_TYPE_LONGHAND, 10671 applies_to_first_letter: true, 10672 logical: true, 10673 prerequisites: { "border-block-end-style": "solid" }, 10674 initial_values: ["medium", "3px", "calc(4px - 1px)"], 10675 other_values: [ 10676 "thin", 10677 "thick", 10678 "1px", 10679 "2em", 10680 "calc(2px)", 10681 "calc(-2px)", 10682 "calc(0em)", 10683 "calc(0px)", 10684 "calc(5em)", 10685 "calc(3*25px)", 10686 "calc(25px*3)", 10687 "calc(3*25px + 5em)", 10688 ], 10689 invalid_values: ["5%", "5"], 10690 }, 10691 "border-block-start": { 10692 domProp: "borderBlockStart", 10693 inherited: false, 10694 type: CSS_TYPE_TRUE_SHORTHAND, 10695 subproperties: [ 10696 "border-block-start-color", 10697 "border-block-start-style", 10698 "border-block-start-width", 10699 ], 10700 initial_values: [ 10701 "none", 10702 "medium", 10703 "currentColor", 10704 "thin", 10705 "none medium currentcolor", 10706 ], 10707 other_values: [ 10708 "solid", 10709 "green", 10710 "medium solid", 10711 "green solid", 10712 "10px solid", 10713 "thick solid", 10714 "5px green none", 10715 ], 10716 invalid_values: ["5%", "5", "5 solid green"], 10717 }, 10718 "border-block-start-color": { 10719 domProp: "borderBlockStartColor", 10720 inherited: false, 10721 type: CSS_TYPE_LONGHAND, 10722 applies_to_first_letter: true, 10723 logical: true, 10724 initial_values: ["currentColor"], 10725 other_values: ["green", "rgba(255,128,0,0.5)", "transparent"], 10726 invalid_values: ["#0", "#00", "#00000", "#0000000", "#000000000", "000000"], 10727 }, 10728 "border-block-start-style": { 10729 domProp: "borderBlockStartStyle", 10730 inherited: false, 10731 type: CSS_TYPE_LONGHAND, 10732 applies_to_first_letter: true, 10733 logical: true, 10734 /* XXX hidden is sometimes the same as initial */ 10735 initial_values: ["none"], 10736 other_values: [ 10737 "solid", 10738 "dashed", 10739 "dotted", 10740 "double", 10741 "outset", 10742 "inset", 10743 "groove", 10744 "ridge", 10745 ], 10746 invalid_values: [], 10747 }, 10748 "border-block-start-width": { 10749 domProp: "borderBlockStartWidth", 10750 inherited: false, 10751 type: CSS_TYPE_LONGHAND, 10752 applies_to_first_letter: true, 10753 logical: true, 10754 prerequisites: { "border-block-start-style": "solid" }, 10755 initial_values: ["medium", "3px", "calc(4px - 1px)"], 10756 other_values: [ 10757 "thin", 10758 "thick", 10759 "1px", 10760 "2em", 10761 "calc(2px)", 10762 "calc(-2px)", 10763 "calc(0em)", 10764 "calc(0px)", 10765 "calc(5em)", 10766 "calc(3*25px)", 10767 "calc(25px*3)", 10768 "calc(3*25px + 5em)", 10769 ], 10770 invalid_values: ["5%", "5"], 10771 }, 10772 "-moz-border-end": { 10773 domProp: "MozBorderEnd", 10774 inherited: false, 10775 type: CSS_TYPE_TRUE_SHORTHAND, 10776 alias_for: "border-inline-end", 10777 subproperties: [ 10778 "-moz-border-end-color", 10779 "-moz-border-end-style", 10780 "-moz-border-end-width", 10781 ], 10782 }, 10783 "-moz-border-end-color": { 10784 domProp: "MozBorderEndColor", 10785 inherited: false, 10786 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10787 applies_to_first_letter: true, 10788 alias_for: "border-inline-end-color", 10789 subproperties: ["border-inline-end-color"], 10790 }, 10791 "-moz-border-end-style": { 10792 domProp: "MozBorderEndStyle", 10793 inherited: false, 10794 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10795 applies_to_first_letter: true, 10796 alias_for: "border-inline-end-style", 10797 subproperties: ["border-inline-end-style"], 10798 }, 10799 "-moz-border-end-width": { 10800 domProp: "MozBorderEndWidth", 10801 inherited: false, 10802 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10803 applies_to_first_letter: true, 10804 alias_for: "border-inline-end-width", 10805 subproperties: ["border-inline-end-width"], 10806 }, 10807 "-moz-border-start": { 10808 domProp: "MozBorderStart", 10809 inherited: false, 10810 type: CSS_TYPE_TRUE_SHORTHAND, 10811 alias_for: "border-inline-start", 10812 subproperties: [ 10813 "-moz-border-start-color", 10814 "-moz-border-start-style", 10815 "-moz-border-start-width", 10816 ], 10817 }, 10818 "-moz-border-start-color": { 10819 domProp: "MozBorderStartColor", 10820 inherited: false, 10821 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10822 applies_to_first_letter: true, 10823 alias_for: "border-inline-start-color", 10824 subproperties: ["border-inline-start-color"], 10825 }, 10826 "-moz-border-start-style": { 10827 domProp: "MozBorderStartStyle", 10828 inherited: false, 10829 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10830 applies_to_first_letter: true, 10831 alias_for: "border-inline-start-style", 10832 subproperties: ["border-inline-start-style"], 10833 }, 10834 "-moz-border-start-width": { 10835 domProp: "MozBorderStartWidth", 10836 inherited: false, 10837 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10838 applies_to_first_letter: true, 10839 alias_for: "border-inline-start-width", 10840 subproperties: ["border-inline-start-width"], 10841 }, 10842 "inline-size": { 10843 domProp: "inlineSize", 10844 inherited: false, 10845 type: CSS_TYPE_LONGHAND, 10846 logical: true, 10847 axis: true, 10848 /* XXX testing auto has prerequisites */ 10849 initial_values: ["auto"], 10850 prerequisites: { 10851 display: "block", 10852 // add some margin to avoid the initial "auto" value getting 10853 // resolved to the same length as the parent element. 10854 "margin-left": "5px", 10855 }, 10856 other_values: [ 10857 "15px", 10858 "3em", 10859 "15%", 10860 "max-content", 10861 "min-content", 10862 "fit-content", 10863 "stretch", 10864 "-moz-max-content", 10865 "-moz-min-content", 10866 "-moz-fit-content", 10867 "-moz-available", 10868 "-webkit-fill-available", 10869 "calc(2px)", 10870 "calc(50%)", 10871 "calc(3*25px)", 10872 "calc(25px*3)", 10873 "calc(3*25px + 50%)", 10874 "fit-content(100px)", 10875 "fit-content(10%)", 10876 "fit-content(calc(3*25px + 50%))", 10877 ], 10878 invalid_values: ["none"], 10879 }, 10880 "margin-block": { 10881 domProp: "marginBlock", 10882 inherited: false, 10883 type: CSS_TYPE_TRUE_SHORTHAND, 10884 subproperties: ["margin-block-start", "margin-block-end"], 10885 initial_values: ["0", "0px 0em"], 10886 other_values: [ 10887 "1px", 10888 "3em 1%", 10889 "5%", 10890 "calc(2px) 1%", 10891 "calc(-2px) 1%", 10892 "calc(50%) 1%", 10893 "calc(3*25px) calc(2px)", 10894 "calc(25px*3) 1em", 10895 "calc(3*25px + 50%) calc(3*25px - 50%)", 10896 ], 10897 invalid_values: [ 10898 "5", 10899 "..25px", 10900 ".+5px", 10901 ".px", 10902 "-.px", 10903 "++5px", 10904 "-+4px", 10905 "+-3px", 10906 "--7px", 10907 "+-.6px", 10908 "-+.5px", 10909 "++.7px", 10910 "--.4px", 10911 ], 10912 }, 10913 "margin-block-end": { 10914 domProp: "marginBlockEnd", 10915 inherited: false, 10916 type: CSS_TYPE_LONGHAND, 10917 applies_to_first_letter: true, 10918 logical: true, 10919 /* XXX testing auto has prerequisites */ 10920 initial_values: ["0", "0px", "0%", "calc(0pt)", "calc(0% + 0px)"], 10921 other_values: [ 10922 "1px", 10923 "2em", 10924 "5%", 10925 "calc(2px)", 10926 "calc(-2px)", 10927 "calc(50%)", 10928 "calc(3*25px)", 10929 "calc(25px*3)", 10930 "calc(3*25px + 50%)", 10931 ], 10932 invalid_values: [ 10933 "..25px", 10934 ".+5px", 10935 ".px", 10936 "-.px", 10937 "++5px", 10938 "-+4px", 10939 "+-3px", 10940 "--7px", 10941 "+-.6px", 10942 "-+.5px", 10943 "++.7px", 10944 "--.4px", 10945 ], 10946 }, 10947 "margin-block-start": { 10948 domProp: "marginBlockStart", 10949 inherited: false, 10950 type: CSS_TYPE_LONGHAND, 10951 applies_to_first_letter: true, 10952 logical: true, 10953 /* XXX testing auto has prerequisites */ 10954 initial_values: ["0", "0px", "0%", "calc(0pt)", "calc(0% + 0px)"], 10955 other_values: [ 10956 "1px", 10957 "2em", 10958 "5%", 10959 "calc(2px)", 10960 "calc(-2px)", 10961 "calc(50%)", 10962 "calc(3*25px)", 10963 "calc(25px*3)", 10964 "calc(3*25px + 50%)", 10965 ], 10966 invalid_values: [ 10967 "..25px", 10968 ".+5px", 10969 ".px", 10970 "-.px", 10971 "++5px", 10972 "-+4px", 10973 "+-3px", 10974 "--7px", 10975 "+-.6px", 10976 "-+.5px", 10977 "++.7px", 10978 "--.4px", 10979 ], 10980 }, 10981 "-moz-margin-end": { 10982 domProp: "MozMarginEnd", 10983 inherited: false, 10984 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10985 applies_to_first_letter: true, 10986 alias_for: "margin-inline-end", 10987 subproperties: ["margin-inline-end"], 10988 }, 10989 "-moz-margin-start": { 10990 domProp: "MozMarginStart", 10991 inherited: false, 10992 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 10993 applies_to_first_letter: true, 10994 alias_for: "margin-inline-start", 10995 subproperties: ["margin-inline-start"], 10996 }, 10997 "max-block-size": { 10998 domProp: "maxBlockSize", 10999 inherited: false, 11000 type: CSS_TYPE_LONGHAND, 11001 logical: true, 11002 axis: true, 11003 prerequisites: { display: "block" }, 11004 initial_values: ["none"], 11005 other_values: [ 11006 "30px", 11007 "50%", 11008 "max-content", 11009 "min-content", 11010 "fit-content", 11011 "stretch", 11012 "-moz-max-content", 11013 "-moz-min-content", 11014 "-moz-fit-content", 11015 "-moz-available", 11016 "-webkit-fill-available", 11017 "calc(2px)", 11018 "calc(50%)", 11019 "calc(3*25px)", 11020 "calc(25px*3)", 11021 "calc(3*25px + 50%)", 11022 "fit-content(100px)", 11023 "fit-content(10%)", 11024 "fit-content(calc(3*25px + 50%))", 11025 ], 11026 invalid_values: ["auto", "5"], 11027 }, 11028 "max-inline-size": { 11029 domProp: "maxInlineSize", 11030 inherited: false, 11031 type: CSS_TYPE_LONGHAND, 11032 logical: true, 11033 axis: true, 11034 prerequisites: { display: "block" }, 11035 initial_values: ["none"], 11036 other_values: [ 11037 "30px", 11038 "50%", 11039 "max-content", 11040 "min-content", 11041 "fit-content", 11042 "stretch", 11043 "-moz-max-content", 11044 "-moz-min-content", 11045 "-moz-fit-content", 11046 "-moz-available", 11047 "-webkit-fill-available", 11048 "calc(2px)", 11049 "calc(50%)", 11050 "calc(3*25px)", 11051 "calc(25px*3)", 11052 "calc(3*25px + 50%)", 11053 "fit-content(100px)", 11054 "fit-content(10%)", 11055 "fit-content(calc(3*25px + 50%))", 11056 ], 11057 invalid_values: ["auto", "5"], 11058 }, 11059 "min-block-size": { 11060 domProp: "minBlockSize", 11061 inherited: false, 11062 type: CSS_TYPE_LONGHAND, 11063 logical: true, 11064 axis: true, 11065 prerequisites: { display: "block" }, 11066 initial_values: ["auto", "0", "calc(0em)", "calc(-2px)"], 11067 other_values: [ 11068 "30px", 11069 "50%", 11070 "max-content", 11071 "min-content", 11072 "fit-content", 11073 "stretch", 11074 "-moz-max-content", 11075 "-moz-min-content", 11076 "-moz-fit-content", 11077 "-moz-available", 11078 "-webkit-fill-available", 11079 "calc(-1%)", 11080 "calc(2px)", 11081 "calc(50%)", 11082 "calc(3*25px)", 11083 "calc(25px*3)", 11084 "calc(3*25px + 50%)", 11085 "fit-content(100px)", 11086 "fit-content(10%)", 11087 "fit-content(calc(3*25px + 50%))", 11088 ], 11089 invalid_values: ["none", "5"], 11090 }, 11091 "min-inline-size": { 11092 domProp: "minInlineSize", 11093 inherited: false, 11094 type: CSS_TYPE_LONGHAND, 11095 logical: true, 11096 axis: true, 11097 prerequisites: { display: "block" }, 11098 initial_values: ["auto", "0", "calc(0em)", "calc(-2px)"], 11099 other_values: [ 11100 "30px", 11101 "50%", 11102 "max-content", 11103 "min-content", 11104 "fit-content", 11105 "stretch", 11106 "-moz-max-content", 11107 "-moz-min-content", 11108 "-moz-fit-content", 11109 "-moz-available", 11110 "-webkit-fill-available", 11111 "calc(-1%)", 11112 "calc(2px)", 11113 "calc(50%)", 11114 "calc(3*25px)", 11115 "calc(25px*3)", 11116 "calc(3*25px + 50%)", 11117 "fit-content(100px)", 11118 "fit-content(10%)", 11119 "fit-content(calc(3*25px + 50%))", 11120 ], 11121 invalid_values: ["none", "5"], 11122 }, 11123 inset: { 11124 domProp: "inset", 11125 inherited: false, 11126 type: CSS_TYPE_TRUE_SHORTHAND, 11127 subproperties: ["top", "right", "bottom", "left"], 11128 /* FIXME: run tests with multiple prerequisites */ 11129 prerequisites: { position: "relative" }, 11130 initial_values: ["auto"], 11131 other_values: [ 11132 "3px 0", 11133 "2em 4px 2pt", 11134 "1em 2em 3px 4px", 11135 "1em calc(2em + 3px) 4ex 5cm", 11136 ], 11137 invalid_values: ["1px calc(nonsense)", "1px red", "3"], 11138 unbalanced_values: ["1px calc("], 11139 }, 11140 "inset-block": { 11141 domProp: "insetBlock", 11142 inherited: false, 11143 type: CSS_TYPE_TRUE_SHORTHAND, 11144 subproperties: ["inset-block-start", "inset-block-end"], 11145 /* FIXME: run tests with multiple prerequisites */ 11146 prerequisites: { position: "relative" }, 11147 initial_values: ["auto", "auto auto"], 11148 other_values: [ 11149 "32px", 11150 "-3em", 11151 "12%", 11152 "32px auto", 11153 "auto -3em", 11154 "12% auto", 11155 "calc(2px)", 11156 "calc(2px) auto", 11157 "calc(-2px)", 11158 "auto calc(-2px)", 11159 "calc(50%)", 11160 "auto calc(50%)", 11161 "calc(3*25px)", 11162 "calc(3*25px) auto", 11163 "calc(25px*3)", 11164 "auto calc(25px*3)", 11165 "calc(3*25px + 50%)", 11166 "auto calc(3*25px + 50%)", 11167 ], 11168 invalid_values: ["none"], 11169 }, 11170 "inset-block-end": { 11171 domProp: "insetBlockEnd", 11172 inherited: false, 11173 type: CSS_TYPE_LONGHAND, 11174 logical: true, 11175 /* FIXME: run tests with multiple prerequisites */ 11176 prerequisites: { position: "relative" }, 11177 /* XXX 0 may or may not be equal to auto */ 11178 initial_values: ["auto"], 11179 other_values: [ 11180 "32px", 11181 "-3em", 11182 "12%", 11183 "calc(2px)", 11184 "calc(-2px)", 11185 "calc(50%)", 11186 "calc(3*25px)", 11187 "calc(25px*3)", 11188 "calc(3*25px + 50%)", 11189 ], 11190 invalid_values: [], 11191 }, 11192 "inset-block-start": { 11193 domProp: "insetBlockStart", 11194 inherited: false, 11195 type: CSS_TYPE_LONGHAND, 11196 logical: true, 11197 /* FIXME: run tests with multiple prerequisites */ 11198 prerequisites: { position: "relative" }, 11199 /* XXX 0 may or may not be equal to auto */ 11200 initial_values: ["auto"], 11201 other_values: [ 11202 "32px", 11203 "-3em", 11204 "12%", 11205 "calc(2px)", 11206 "calc(-2px)", 11207 "calc(50%)", 11208 "calc(3*25px)", 11209 "calc(25px*3)", 11210 "calc(3*25px + 50%)", 11211 ], 11212 invalid_values: [], 11213 }, 11214 "inset-inline": { 11215 domProp: "insetInline", 11216 inherited: false, 11217 type: CSS_TYPE_TRUE_SHORTHAND, 11218 subproperties: ["inset-inline-start", "inset-inline-end"], 11219 /* FIXME: run tests with multiple prerequisites */ 11220 prerequisites: { position: "relative" }, 11221 initial_values: ["auto", "auto auto"], 11222 other_values: [ 11223 "32px", 11224 "-3em", 11225 "12%", 11226 "32px auto", 11227 "auto -3em", 11228 "12% auto", 11229 "calc(2px)", 11230 "calc(2px) auto", 11231 "calc(-2px)", 11232 "auto calc(-2px)", 11233 "calc(50%)", 11234 "auto calc(50%)", 11235 "calc(3*25px)", 11236 "calc(3*25px) auto", 11237 "calc(25px*3)", 11238 "auto calc(25px*3)", 11239 "calc(3*25px + 50%)", 11240 "auto calc(3*25px + 50%)", 11241 ], 11242 invalid_values: ["none"], 11243 }, 11244 "inset-inline-end": { 11245 domProp: "insetInlineEnd", 11246 inherited: false, 11247 type: CSS_TYPE_LONGHAND, 11248 logical: true, 11249 /* FIXME: run tests with multiple prerequisites */ 11250 prerequisites: { position: "relative" }, 11251 /* XXX 0 may or may not be equal to auto */ 11252 initial_values: ["auto"], 11253 other_values: [ 11254 "32px", 11255 "-3em", 11256 "12%", 11257 "calc(2px)", 11258 "calc(-2px)", 11259 "calc(50%)", 11260 "calc(3*25px)", 11261 "calc(25px*3)", 11262 "calc(3*25px + 50%)", 11263 ], 11264 invalid_values: [], 11265 }, 11266 "inset-inline-start": { 11267 domProp: "insetInlineStart", 11268 inherited: false, 11269 type: CSS_TYPE_LONGHAND, 11270 logical: true, 11271 /* FIXME: run tests with multiple prerequisites */ 11272 prerequisites: { position: "relative" }, 11273 /* XXX 0 may or may not be equal to auto */ 11274 initial_values: ["auto"], 11275 other_values: [ 11276 "32px", 11277 "-3em", 11278 "12%", 11279 "calc(2px)", 11280 "calc(-2px)", 11281 "calc(50%)", 11282 "calc(3*25px)", 11283 "calc(25px*3)", 11284 "calc(3*25px + 50%)", 11285 ], 11286 invalid_values: [], 11287 }, 11288 "padding-block-end": { 11289 domProp: "paddingBlockEnd", 11290 inherited: false, 11291 type: CSS_TYPE_LONGHAND, 11292 applies_to_first_letter: true, 11293 // No applies_to_placeholder because we have a !important rule in forms.css. 11294 logical: true, 11295 initial_values: [ 11296 "0", 11297 "0px", 11298 "0%", 11299 "calc(0pt)", 11300 "calc(0% + 0px)", 11301 "calc(-3px)", 11302 "calc(-1%)", 11303 ], 11304 other_values: [ 11305 "1px", 11306 "2em", 11307 "5%", 11308 "calc(2px)", 11309 "calc(50%)", 11310 "calc(3*25px)", 11311 "calc(25px*3)", 11312 "calc(3*25px + 50%)", 11313 ], 11314 invalid_values: [], 11315 }, 11316 "padding-block-start": { 11317 domProp: "paddingBlockStart", 11318 inherited: false, 11319 type: CSS_TYPE_LONGHAND, 11320 applies_to_first_letter: true, 11321 // No applies_to_placeholder because we have a !important rule in forms.css. 11322 logical: true, 11323 initial_values: [ 11324 "0", 11325 "0px", 11326 "0%", 11327 "calc(0pt)", 11328 "calc(0% + 0px)", 11329 "calc(-3px)", 11330 "calc(-1%)", 11331 ], 11332 other_values: [ 11333 "1px", 11334 "2em", 11335 "5%", 11336 "calc(2px)", 11337 "calc(50%)", 11338 "calc(3*25px)", 11339 "calc(25px*3)", 11340 "calc(3*25px + 50%)", 11341 ], 11342 invalid_values: [], 11343 }, 11344 "-moz-padding-end": { 11345 domProp: "MozPaddingEnd", 11346 inherited: false, 11347 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11348 applies_to_first_letter: true, 11349 alias_for: "padding-inline-end", 11350 subproperties: ["padding-inline-end"], 11351 }, 11352 "-moz-padding-start": { 11353 domProp: "MozPaddingStart", 11354 inherited: false, 11355 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11356 applies_to_first_letter: true, 11357 alias_for: "padding-inline-start", 11358 subproperties: ["padding-inline-start"], 11359 }, 11360 "-webkit-animation": { 11361 domProp: "webkitAnimation", 11362 inherited: false, 11363 type: CSS_TYPE_TRUE_SHORTHAND, 11364 applies_to_marker: true, 11365 alias_for: "animation", 11366 subproperties: [ 11367 "animation-name", 11368 "animation-duration", 11369 "animation-timing-function", 11370 "animation-delay", 11371 "animation-direction", 11372 "animation-fill-mode", 11373 "animation-iteration-count", 11374 "animation-play-state", 11375 ], 11376 }, 11377 "-webkit-animation-delay": { 11378 domProp: "webkitAnimationDelay", 11379 inherited: false, 11380 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11381 applies_to_marker: true, 11382 alias_for: "animation-delay", 11383 subproperties: ["animation-delay"], 11384 }, 11385 "-webkit-animation-direction": { 11386 domProp: "webkitAnimationDirection", 11387 inherited: false, 11388 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11389 applies_to_marker: true, 11390 alias_for: "animation-direction", 11391 subproperties: ["animation-direction"], 11392 }, 11393 "-webkit-animation-duration": { 11394 domProp: "webkitAnimationDuration", 11395 inherited: false, 11396 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11397 applies_to_marker: true, 11398 alias_for: "animation-duration", 11399 subproperties: ["animation-duration"], 11400 }, 11401 "-webkit-animation-fill-mode": { 11402 domProp: "webkitAnimationFillMode", 11403 inherited: false, 11404 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11405 applies_to_marker: true, 11406 alias_for: "animation-fill-mode", 11407 subproperties: ["animation-fill-mode"], 11408 }, 11409 "-webkit-animation-iteration-count": { 11410 domProp: "webkitAnimationIterationCount", 11411 inherited: false, 11412 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11413 applies_to_marker: true, 11414 alias_for: "animation-iteration-count", 11415 subproperties: ["animation-iteration-count"], 11416 }, 11417 "-webkit-animation-name": { 11418 domProp: "webkitAnimationName", 11419 inherited: false, 11420 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11421 applies_to_marker: true, 11422 alias_for: "animation-name", 11423 subproperties: ["animation-name"], 11424 }, 11425 "-webkit-animation-play-state": { 11426 domProp: "webkitAnimationPlayState", 11427 inherited: false, 11428 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11429 applies_to_marker: true, 11430 alias_for: "animation-play-state", 11431 subproperties: ["animation-play-state"], 11432 }, 11433 "-webkit-animation-timing-function": { 11434 domProp: "webkitAnimationTimingFunction", 11435 inherited: false, 11436 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11437 applies_to_marker: true, 11438 alias_for: "animation-timing-function", 11439 subproperties: ["animation-timing-function"], 11440 }, 11441 "-webkit-clip-path": { 11442 domProp: "webkitClipPath", 11443 inherited: false, 11444 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11445 alias_for: "clip-path", 11446 subproperties: ["clip-path"], 11447 }, 11448 "-webkit-filter": { 11449 domProp: "webkitFilter", 11450 inherited: false, 11451 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11452 alias_for: "filter", 11453 subproperties: ["filter"], 11454 }, 11455 "-webkit-text-security": { 11456 domProp: "webkitTextSecurity", 11457 inherited: true, 11458 type: CSS_TYPE_LONGHAND, 11459 applies_to_first_letter: true, 11460 applies_to_first_line: true, 11461 applies_to_placeholder: true, 11462 initial_values: ["none"], 11463 other_values: ["circle", "disc", "square"], 11464 invalid_values: ["0", "auto", "true", "'*'"], 11465 }, 11466 "-webkit-text-fill-color": { 11467 domProp: "webkitTextFillColor", 11468 inherited: true, 11469 type: CSS_TYPE_LONGHAND, 11470 applies_to_first_letter: true, 11471 applies_to_first_line: true, 11472 applies_to_placeholder: true, 11473 prerequisites: { color: "black" }, 11474 initial_values: ["currentColor", "black", "#000", "#000000", "rgb(0,0,0)"], 11475 other_values: ["red", "rgba(255,255,255,0.5)", "transparent"], 11476 invalid_values: [ 11477 "#0", 11478 "#00", 11479 "#00000", 11480 "#0000000", 11481 "#000000000", 11482 "000000", 11483 "ff00ff", 11484 "rgb(255,xxx,255)", 11485 ], 11486 }, 11487 "-webkit-text-stroke": { 11488 domProp: "webkitTextStroke", 11489 inherited: true, 11490 type: CSS_TYPE_TRUE_SHORTHAND, 11491 prerequisites: { color: "black" }, 11492 subproperties: ["-webkit-text-stroke-width", "-webkit-text-stroke-color"], 11493 initial_values: [ 11494 "0 currentColor", 11495 "currentColor 0px", 11496 "0", 11497 "currentColor", 11498 "0px black", 11499 ], 11500 other_values: [ 11501 "thin black", 11502 "#f00 medium", 11503 "thick rgba(0,0,255,0.5)", 11504 "calc(4px - 8px) green", 11505 "2px", 11506 "green 0", 11507 "currentColor 4em", 11508 "currentColor calc(5px - 1px)", 11509 ], 11510 invalid_values: ["-3px black", "calc(50%+ 2px) #000", "30% #f00"], 11511 }, 11512 "-webkit-text-stroke-color": { 11513 domProp: "webkitTextStrokeColor", 11514 inherited: true, 11515 type: CSS_TYPE_LONGHAND, 11516 applies_to_first_letter: true, 11517 applies_to_first_line: true, 11518 applies_to_placeholder: true, 11519 prerequisites: { color: "black" }, 11520 initial_values: ["currentColor", "black", "#000", "#000000", "rgb(0,0,0)"], 11521 other_values: ["red", "rgba(255,255,255,0.5)", "transparent"], 11522 invalid_values: [ 11523 "#0", 11524 "#00", 11525 "#00000", 11526 "#0000000", 11527 "#000000000", 11528 "000000", 11529 "ff00ff", 11530 "rgb(255,xxx,255)", 11531 ], 11532 }, 11533 "-webkit-text-stroke-width": { 11534 domProp: "webkitTextStrokeWidth", 11535 inherited: true, 11536 type: CSS_TYPE_LONGHAND, 11537 applies_to_first_letter: true, 11538 applies_to_first_line: true, 11539 applies_to_placeholder: true, 11540 initial_values: ["0", "0px", "0em", "0ex", "calc(0pt)", "calc(4px - 8px)"], 11541 other_values: [ 11542 "thin", 11543 "medium", 11544 "thick", 11545 "17px", 11546 "0.2em", 11547 "calc(3*25px + 5em)", 11548 "calc(5px - 1px)", 11549 ], 11550 invalid_values: [ 11551 "5%", 11552 "1px calc(nonsense)", 11553 "1px red", 11554 "-0.1px", 11555 "-3px", 11556 "30%", 11557 ], 11558 }, 11559 "-webkit-text-size-adjust": { 11560 domProp: "webkitTextSizeAdjust", 11561 inherited: true, 11562 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11563 alias_for: "-moz-text-size-adjust", 11564 subproperties: ["-moz-text-size-adjust"], 11565 }, 11566 "-webkit-transform": { 11567 domProp: "webkitTransform", 11568 inherited: false, 11569 type: CSS_TYPE_LEGACY_SHORTHAND, 11570 alias_for: "transform", 11571 subproperties: ["transform"], 11572 initial_values: ["none"], 11573 other_values: ["perspective(1000)", "perspective(25)"], 11574 invalid_values: [], 11575 }, 11576 "-webkit-transform-origin": { 11577 domProp: "webkitTransformOrigin", 11578 inherited: false, 11579 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11580 alias_for: "transform-origin", 11581 subproperties: ["transform-origin"], 11582 }, 11583 "-webkit-transform-style": { 11584 domProp: "webkitTransformStyle", 11585 inherited: false, 11586 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11587 alias_for: "transform-style", 11588 subproperties: ["transform-style"], 11589 }, 11590 "-webkit-backface-visibility": { 11591 domProp: "webkitBackfaceVisibility", 11592 inherited: false, 11593 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11594 alias_for: "backface-visibility", 11595 subproperties: ["backface-visibility"], 11596 }, 11597 "-webkit-perspective": { 11598 domProp: "webkitPerspective", 11599 inherited: false, 11600 type: CSS_TYPE_LEGACY_SHORTHAND, 11601 alias_for: "perspective", 11602 subproperties: ["perspective"], 11603 initial_values: ["none"], 11604 other_values: ["1000", "25"], 11605 invalid_values: ["calc(1000)", "calc(25)"], 11606 }, 11607 "-webkit-perspective-origin": { 11608 domProp: "webkitPerspectiveOrigin", 11609 inherited: false, 11610 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11611 alias_for: "perspective-origin", 11612 subproperties: ["perspective-origin"], 11613 }, 11614 "-webkit-transition": { 11615 domProp: "webkitTransition", 11616 inherited: false, 11617 type: CSS_TYPE_TRUE_SHORTHAND, 11618 applies_to_marker: true, 11619 alias_for: "transition", 11620 subproperties: [ 11621 "transition-property", 11622 "transition-duration", 11623 "transition-timing-function", 11624 "transition-delay", 11625 "transition-behavior", 11626 ], 11627 }, 11628 "-webkit-transition-delay": { 11629 domProp: "webkitTransitionDelay", 11630 inherited: false, 11631 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11632 applies_to_marker: true, 11633 alias_for: "transition-delay", 11634 subproperties: ["transition-delay"], 11635 }, 11636 "-webkit-transition-duration": { 11637 domProp: "webkitTransitionDuration", 11638 inherited: false, 11639 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11640 applies_to_marker: true, 11641 alias_for: "transition-duration", 11642 subproperties: ["transition-duration"], 11643 }, 11644 "-webkit-transition-property": { 11645 domProp: "webkitTransitionProperty", 11646 inherited: false, 11647 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11648 applies_to_marker: true, 11649 alias_for: "transition-property", 11650 subproperties: ["transition-property"], 11651 }, 11652 "-webkit-transition-timing-function": { 11653 domProp: "webkitTransitionTimingFunction", 11654 inherited: false, 11655 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11656 applies_to_marker: true, 11657 alias_for: "transition-timing-function", 11658 subproperties: ["transition-timing-function"], 11659 }, 11660 "-webkit-border-radius": { 11661 domProp: "webkitBorderRadius", 11662 inherited: false, 11663 type: CSS_TYPE_TRUE_SHORTHAND, 11664 alias_for: "border-radius", 11665 subproperties: [ 11666 "border-bottom-left-radius", 11667 "border-bottom-right-radius", 11668 "border-top-left-radius", 11669 "border-top-right-radius", 11670 ], 11671 }, 11672 "-webkit-border-top-left-radius": { 11673 domProp: "webkitBorderTopLeftRadius", 11674 inherited: false, 11675 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11676 applies_to_first_letter: true, 11677 alias_for: "border-top-left-radius", 11678 subproperties: ["border-top-left-radius"], 11679 }, 11680 "-webkit-border-top-right-radius": { 11681 domProp: "webkitBorderTopRightRadius", 11682 inherited: false, 11683 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11684 applies_to_first_letter: true, 11685 alias_for: "border-top-right-radius", 11686 subproperties: ["border-top-right-radius"], 11687 }, 11688 "-webkit-border-bottom-left-radius": { 11689 domProp: "webkitBorderBottomLeftRadius", 11690 inherited: false, 11691 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11692 applies_to_first_letter: true, 11693 alias_for: "border-bottom-left-radius", 11694 subproperties: ["border-bottom-left-radius"], 11695 }, 11696 "-webkit-border-bottom-right-radius": { 11697 domProp: "webkitBorderBottomRightRadius", 11698 inherited: false, 11699 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11700 applies_to_first_letter: true, 11701 alias_for: "border-bottom-right-radius", 11702 subproperties: ["border-bottom-right-radius"], 11703 }, 11704 "-webkit-background-clip": { 11705 domProp: "webkitBackgroundClip", 11706 inherited: false, 11707 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11708 applies_to_first_letter: true, 11709 applies_to_first_line: true, 11710 applies_to_placeholder: true, 11711 applies_to_cue: true, 11712 alias_for: "background-clip", 11713 subproperties: ["background-clip"], 11714 }, 11715 "-webkit-background-origin": { 11716 domProp: "webkitBackgroundOrigin", 11717 inherited: false, 11718 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11719 applies_to_first_letter: true, 11720 applies_to_first_line: true, 11721 applies_to_placeholder: true, 11722 applies_to_cue: true, 11723 alias_for: "background-origin", 11724 subproperties: ["background-origin"], 11725 }, 11726 "-webkit-background-size": { 11727 domProp: "webkitBackgroundSize", 11728 inherited: false, 11729 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11730 applies_to_first_letter: true, 11731 applies_to_first_line: true, 11732 applies_to_placeholder: true, 11733 applies_to_cue: true, 11734 alias_for: "background-size", 11735 subproperties: ["background-size"], 11736 }, 11737 "-webkit-border-image": { 11738 domProp: "webkitBorderImage", 11739 inherited: false, 11740 type: CSS_TYPE_TRUE_SHORTHAND, 11741 alias_for: "border-image", 11742 subproperties: [ 11743 "border-image-source", 11744 "border-image-slice", 11745 "border-image-width", 11746 "border-image-outset", 11747 "border-image-repeat", 11748 ], 11749 }, 11750 "-webkit-box-shadow": { 11751 domProp: "webkitBoxShadow", 11752 inherited: false, 11753 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11754 applies_to_first_letter: true, 11755 alias_for: "box-shadow", 11756 subproperties: ["box-shadow"], 11757 }, 11758 "-webkit-box-sizing": { 11759 domProp: "webkitBoxSizing", 11760 inherited: false, 11761 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11762 alias_for: "box-sizing", 11763 subproperties: ["box-sizing"], 11764 }, 11765 "-webkit-box-flex": { 11766 domProp: "webkitBoxFlex", 11767 inherited: false, 11768 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11769 alias_for: "-moz-box-flex", 11770 subproperties: ["-moz-box-flex"], 11771 }, 11772 "-webkit-box-ordinal-group": { 11773 domProp: "webkitBoxOrdinalGroup", 11774 inherited: false, 11775 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11776 alias_for: "-moz-box-ordinal-group", 11777 subproperties: ["-moz-box-ordinal-group"], 11778 }, 11779 "-webkit-box-orient": { 11780 domProp: "webkitBoxOrient", 11781 inherited: false, 11782 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11783 alias_for: "-moz-box-orient", 11784 subproperties: ["-moz-box-orient"], 11785 }, 11786 "-webkit-box-direction": { 11787 domProp: "webkitBoxDirection", 11788 inherited: false, 11789 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11790 alias_for: "-moz-box-direction", 11791 subproperties: ["-moz-box-direction"], 11792 }, 11793 "-webkit-box-align": { 11794 domProp: "webkitBoxAlign", 11795 inherited: false, 11796 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11797 alias_for: "-moz-box-align", 11798 subproperties: ["-moz-box-align"], 11799 }, 11800 "-webkit-box-pack": { 11801 domProp: "webkitBoxPack", 11802 inherited: false, 11803 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11804 alias_for: "-moz-box-pack", 11805 subproperties: ["-moz-box-pack"], 11806 }, 11807 "-webkit-flex-direction": { 11808 domProp: "webkitFlexDirection", 11809 inherited: false, 11810 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11811 alias_for: "flex-direction", 11812 subproperties: ["flex-direction"], 11813 }, 11814 "-webkit-flex-wrap": { 11815 domProp: "webkitFlexWrap", 11816 inherited: false, 11817 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11818 alias_for: "flex-wrap", 11819 subproperties: ["flex-wrap"], 11820 }, 11821 "-webkit-flex-flow": { 11822 domProp: "webkitFlexFlow", 11823 inherited: false, 11824 type: CSS_TYPE_TRUE_SHORTHAND, 11825 alias_for: "flex-flow", 11826 subproperties: ["flex-direction", "flex-wrap"], 11827 }, 11828 "-webkit-font-feature-settings": { 11829 domProp: "webkitFontFeatureSettings", 11830 inherited: true, 11831 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11832 applies_to_first_letter: true, 11833 applies_to_first_line: true, 11834 applies_to_marker: true, 11835 applies_to_placeholder: true, 11836 applies_to_cue: true, 11837 alias_for: "font-feature-settings", 11838 subproperties: ["font-feature-settings"], 11839 }, 11840 "-webkit-line-clamp": { 11841 domProp: "webkitLineClamp", 11842 inherited: false, 11843 type: CSS_TYPE_LONGHAND, 11844 initial_values: ["none"], 11845 other_values: ["1", "2"], 11846 invalid_values: ["auto", "0", "-1"], 11847 }, 11848 "-webkit-order": { 11849 domProp: "webkitOrder", 11850 inherited: false, 11851 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11852 alias_for: "order", 11853 subproperties: ["order"], 11854 }, 11855 "-webkit-flex": { 11856 domProp: "webkitFlex", 11857 inherited: false, 11858 type: CSS_TYPE_TRUE_SHORTHAND, 11859 alias_for: "flex", 11860 subproperties: ["flex-grow", "flex-shrink", "flex-basis"], 11861 }, 11862 "-webkit-flex-grow": { 11863 domProp: "webkitFlexGrow", 11864 inherited: false, 11865 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11866 alias_for: "flex-grow", 11867 subproperties: ["flex-grow"], 11868 }, 11869 "-webkit-flex-shrink": { 11870 domProp: "webkitFlexShrink", 11871 inherited: false, 11872 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11873 alias_for: "flex-shrink", 11874 subproperties: ["flex-shrink"], 11875 }, 11876 "-webkit-flex-basis": { 11877 domProp: "webkitFlexBasis", 11878 inherited: false, 11879 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11880 alias_for: "flex-basis", 11881 subproperties: ["flex-basis"], 11882 }, 11883 "-webkit-justify-content": { 11884 domProp: "webkitJustifyContent", 11885 inherited: false, 11886 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11887 alias_for: "justify-content", 11888 subproperties: ["justify-content"], 11889 }, 11890 "-webkit-align-items": { 11891 domProp: "webkitAlignItems", 11892 inherited: false, 11893 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11894 alias_for: "align-items", 11895 subproperties: ["align-items"], 11896 }, 11897 "-webkit-align-self": { 11898 domProp: "webkitAlignSelf", 11899 inherited: false, 11900 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11901 alias_for: "align-self", 11902 subproperties: ["align-self"], 11903 }, 11904 "-webkit-align-content": { 11905 domProp: "webkitAlignContent", 11906 inherited: false, 11907 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11908 alias_for: "align-content", 11909 subproperties: ["align-content"], 11910 }, 11911 "-webkit-user-select": { 11912 domProp: "webkitUserSelect", 11913 inherited: false, 11914 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11915 alias_for: "user-select", 11916 subproperties: ["user-select"], 11917 }, 11918 "-webkit-mask": { 11919 domProp: "webkitMask", 11920 inherited: false, 11921 type: CSS_TYPE_TRUE_SHORTHAND, 11922 alias_for: "mask", 11923 subproperties: [ 11924 "mask-clip", 11925 "mask-image", 11926 "mask-mode", 11927 "mask-origin", 11928 "mask-position", 11929 "mask-repeat", 11930 "mask-size", 11931 "mask-composite", 11932 ], 11933 }, 11934 "-webkit-mask-clip": { 11935 domProp: "webkitMaskClip", 11936 inherited: false, 11937 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11938 alias_for: "mask-clip", 11939 subproperties: ["mask-clip"], 11940 }, 11941 11942 "-webkit-mask-composite": { 11943 domProp: "webkitMaskComposite", 11944 inherited: false, 11945 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11946 alias_for: "mask-composite", 11947 subproperties: ["mask-composite"], 11948 }, 11949 11950 "-webkit-mask-image": { 11951 domProp: "webkitMaskImage", 11952 inherited: false, 11953 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11954 alias_for: "mask-image", 11955 subproperties: ["mask-image"], 11956 }, 11957 "-webkit-mask-origin": { 11958 domProp: "webkitMaskOrigin", 11959 inherited: false, 11960 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11961 alias_for: "mask-origin", 11962 subproperties: ["mask-origin"], 11963 }, 11964 "-webkit-mask-position": { 11965 domProp: "webkitMaskPosition", 11966 inherited: false, 11967 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11968 alias_for: "mask-position", 11969 subproperties: ["mask-position"], 11970 }, 11971 "-webkit-mask-position-x": { 11972 domProp: "webkitMaskPositionX", 11973 inherited: false, 11974 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11975 alias_for: "mask-position-x", 11976 subproperties: ["mask-position-x"], 11977 }, 11978 "-webkit-mask-position-y": { 11979 domProp: "webkitMaskPositionY", 11980 inherited: false, 11981 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11982 alias_for: "mask-position-y", 11983 subproperties: ["mask-position-y"], 11984 }, 11985 "-webkit-mask-repeat": { 11986 domProp: "webkitMaskRepeat", 11987 inherited: false, 11988 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11989 alias_for: "mask-repeat", 11990 subproperties: ["mask-repeat"], 11991 }, 11992 "-webkit-mask-size": { 11993 domProp: "webkitMaskSize", 11994 inherited: false, 11995 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 11996 alias_for: "mask-size", 11997 subproperties: ["mask-size"], 11998 }, 11999 }; // end of gCSSProperties 12000 12001 // Get the computed value for a property. For shorthands, return the 12002 // computed values of all the subproperties, delimited by " ; ". 12003 function get_computed_value(cs, property) { 12004 var info = gCSSProperties[property]; 12005 if ( 12006 info.type == CSS_TYPE_TRUE_SHORTHAND || 12007 info.type == CSS_TYPE_LEGACY_SHORTHAND || 12008 (info.type == CSS_TYPE_SHORTHAND_AND_LONGHAND && 12009 (property == "text-decoration" || property == "mask")) 12010 ) { 12011 var results = []; 12012 for (var idx in info.subproperties) { 12013 var subprop = info.subproperties[idx]; 12014 results.push(get_computed_value(cs, subprop)); 12015 } 12016 return results.join(" ; "); 12017 } 12018 return cs.getPropertyValue(property); 12019 } 12020 12021 { 12022 const mozHiddenUnscrollableEnabled = IsCSSPropertyPrefEnabled( 12023 "layout.css.overflow-moz-hidden-unscrollable.enabled" 12024 ); 12025 for (let p of ["overflow", "overflow-x", "overflow-y"]) { 12026 let prop = gCSSProperties[p]; 12027 let mozHiddenUnscrollableValues = mozHiddenUnscrollableEnabled 12028 ? prop.other_values 12029 : prop.invalid_values; 12030 mozHiddenUnscrollableValues.push("-moz-hidden-unscrollable"); 12031 if (p == "overflow") { 12032 mozHiddenUnscrollableValues.push( 12033 "-moz-hidden-unscrollable -moz-hidden-unscrollable" 12034 ); 12035 } 12036 } 12037 } 12038 12039 gCSSProperties.rotate = { 12040 domProp: "rotate", 12041 inherited: false, 12042 type: CSS_TYPE_LONGHAND, 12043 initial_values: ["none"], 12044 other_values: [ 12045 "45deg", 12046 "45grad", 12047 "72rad", 12048 "0.25turn", 12049 ".57rad", 12050 "0 0 0 0rad", 12051 "0 0 1 45deg", 12052 "0 0 1 0rad", 12053 "0rad 0 0 1", 12054 "10rad 10 20 30", 12055 "x 10rad", 12056 "y 10rad", 12057 "z 10rad", 12058 "10rad x", 12059 "10rad y", 12060 "10rad z", 12061 /* valid calc() values */ 12062 "calc(1) 0 0 calc(45deg + 5rad)", 12063 "0 1 0 calc(400grad + 1rad)", 12064 "calc(0.5turn + 10deg)", 12065 ], 12066 invalid_values: [ 12067 "0", 12068 "7", 12069 "0, 0, 1, 45deg", 12070 "0 0 45deg", 12071 "0 0 20rad", 12072 "0 0 0 0", 12073 "x x 10rad", 12074 "x y 10rad", 12075 "0 0 1 10rad z", 12076 "0 0 1 z 10rad", 12077 "z 0 0 1 10rad", 12078 "0 0 z 1 10rad", 12079 /* invalid calc() values */ 12080 "0.5 1 0 calc(45deg + 10)", 12081 "calc(0.5turn + 10%)", 12082 ], 12083 }; 12084 12085 gCSSProperties.translate = { 12086 domProp: "translate", 12087 inherited: false, 12088 type: CSS_TYPE_LONGHAND, 12089 prerequisites: { width: "10px", height: "10px", display: "block" }, 12090 initial_values: ["none"], 12091 other_values: [ 12092 "-4px", 12093 "3px", 12094 "4em", 12095 "50%", 12096 "4px 5px 6px", 12097 "4px 5px", 12098 "50% 5px 6px", 12099 "50% 10% 6em", 12100 /* valid calc() values */ 12101 "calc(5px + 10%)", 12102 "calc(0.25 * 5px + 10% / 3)", 12103 "calc(5px - 10% * 3)", 12104 "calc(5px - 3 * 10%) 50px", 12105 "-50px calc(5px - 10% * 3)", 12106 "10px calc(min(5px,10%))", 12107 ], 12108 invalid_values: [ 12109 "1", 12110 "-moz-min(5px,10%)", 12111 "4px, 5px, 6px", 12112 "3px 4px 1px 7px", 12113 "4px 5px 10%", 12114 /* invalid calc() values */ 12115 "calc(max(5px,10%) 10%)", 12116 "calc(nonsense)", 12117 ], 12118 }; 12119 gCSSProperties.scale = { 12120 domProp: "scale", 12121 inherited: false, 12122 type: CSS_TYPE_LONGHAND, 12123 initial_values: ["none"], 12124 other_values: [ 12125 "10", 12126 "10%", 12127 "10 20", 12128 "10% 20%", 12129 "10 20 30", 12130 "10% 20% 30%", 12131 "10 20% 30", 12132 "-10", 12133 "-10%", 12134 "-10 20", 12135 "-10% 20%", 12136 "-10 20 -30", 12137 "-10% 20% -30%", 12138 "-10 20% -30", 12139 "0 2.0", 12140 /* valid calc() values */ 12141 "calc(1 + 2)", 12142 "calc(10) calc(20) 30", 12143 ], 12144 invalid_values: [ 12145 "10px", 12146 "10deg", 12147 "10, 20, 30", 12148 /* invalid calc() values */ 12149 "calc(1 + 20%)", 12150 "10 calc(1 + 10px)", 12151 ], 12152 }; 12153 12154 gCSSProperties["touch-action"] = { 12155 domProp: "touchAction", 12156 inherited: false, 12157 type: CSS_TYPE_LONGHAND, 12158 initial_values: ["auto"], 12159 other_values: [ 12160 "none", 12161 "pan-x", 12162 "pan-y", 12163 "pinch-zoom", 12164 "pan-x pan-y", 12165 "pan-y pan-x", 12166 "pinch-zoom pan-x", 12167 "pinch-zoom pan-y", 12168 "pan-x pinch-zoom", 12169 "pan-y pinch-zoom", 12170 "pinch-zoom pan-x pan-y", 12171 "pinch-zoom pan-y pan-x", 12172 "pan-x pinch-zoom pan-y", 12173 "pan-y pinch-zoom pan-x", 12174 "pan-x pan-y pinch-zoom", 12175 "pan-y pan-x pinch-zoom", 12176 "manipulation", 12177 ], 12178 invalid_values: [ 12179 "zoom", 12180 "pinch", 12181 "tap", 12182 "10px", 12183 "2", 12184 "auto pan-x", 12185 "pan-x auto", 12186 "none pan-x", 12187 "pan-x none", 12188 "auto pan-y", 12189 "pan-y auto", 12190 "none pan-y", 12191 "pan-y none", 12192 "pan-x pan-x", 12193 "pan-y pan-y", 12194 "auto pinch-zoom", 12195 "pinch-zoom auto", 12196 "none pinch-zoom", 12197 "pinch-zoom none", 12198 "pinch-zoom pinch-zoom", 12199 "pan-x pan-y none", 12200 "pan-x none pan-y", 12201 "none pan-x pan-y", 12202 "pan-y pan-x none", 12203 "pan-y none pan-x", 12204 "none pan-y pan-x", 12205 "pan-x pinch-zoom none", 12206 "pan-x none pinch-zoom", 12207 "none pan-x pinch-zoom", 12208 "pinch-zoom pan-x none", 12209 "pinch-zoom none pan-x", 12210 "none pinch-zoom pan-x", 12211 "pinch-zoom pan-y none", 12212 "pinch-zoom none pan-y", 12213 "none pinch-zoom pan-y", 12214 "pan-y pinch-zoom none", 12215 "pan-y none pinch-zoom", 12216 "none pan-y pinch-zoom", 12217 "pan-x pan-y auto", 12218 "pan-x auto pan-y", 12219 "auto pan-x pan-y", 12220 "pan-y pan-x auto", 12221 "pan-y auto pan-x", 12222 "auto pan-y pan-x", 12223 "pan-x pinch-zoom auto", 12224 "pan-x auto pinch-zoom", 12225 "auto pan-x pinch-zoom", 12226 "pinch-zoom pan-x auto", 12227 "pinch-zoom auto pan-x", 12228 "auto pinch-zoom pan-x", 12229 "pinch-zoom pan-y auto", 12230 "pinch-zoom auto pan-y", 12231 "auto pinch-zoom pan-y", 12232 "pan-y pinch-zoom auto", 12233 "pan-y auto pinch-zoom", 12234 "auto pan-y pinch-zoom", 12235 "pan-x pan-y zoom", 12236 "pan-x zoom pan-y", 12237 "zoom pan-x pan-y", 12238 "pan-y pan-x zoom", 12239 "pan-y zoom pan-x", 12240 "zoom pan-y pan-x", 12241 "pinch-zoom pan-y zoom", 12242 "pinch-zoom zoom pan-y", 12243 "zoom pinch-zoom pan-y", 12244 "pan-y pinch-zoom zoom", 12245 "pan-y zoom pinch-zoom", 12246 "zoom pan-y pinch-zoom", 12247 "pan-x pinch-zoom zoom", 12248 "pan-x zoom pinch-zoom", 12249 "zoom pan-x pinch-zoom", 12250 "pinch-zoom pan-x zoom", 12251 "pinch-zoom zoom pan-x", 12252 "zoom pinch-zoom pan-x", 12253 "pan-x pan-y pan-x", 12254 "pan-x pan-x pan-y", 12255 "pan-y pan-x pan-x", 12256 "pan-y pan-x pan-y", 12257 "pan-y pan-y pan-x", 12258 "pan-x pan-y pan-y", 12259 "pan-x pinch-zoom pan-x", 12260 "pan-x pan-x pinch-zoom", 12261 "pinch-zoom pan-x pan-x", 12262 "pinch-zoom pan-x pinch-zoom", 12263 "pinch-zoom pinch-zoom pan-x", 12264 "pan-x pinch-zoom pinch-zoom", 12265 "pinch-zoom pan-y pinch-zoom", 12266 "pinch-zoom pinch-zoom pan-y", 12267 "pan-y pinch-zoom pinch-zoom", 12268 "pan-y pinch-zoom pan-y", 12269 "pan-y pan-y pinch-zoom", 12270 "pinch-zoom pan-y pan-y", 12271 "manipulation none", 12272 "none manipulation", 12273 "manipulation auto", 12274 "auto manipulation", 12275 "manipulation zoom", 12276 "zoom manipulation", 12277 "manipulation manipulation", 12278 "manipulation pan-x", 12279 "pan-x manipulation", 12280 "manipulation pan-y", 12281 "pan-y manipulation", 12282 "manipulation pinch-zoom", 12283 "pinch-zoom manipulation", 12284 "manipulation pan-x pan-y", 12285 "pan-x manipulation pan-y", 12286 "pan-x pan-y manipulation", 12287 "manipulation pan-y pan-x", 12288 "pan-y manipulation pan-x", 12289 "pan-y pan-x manipulation", 12290 "manipulation pinch-zoom pan-y", 12291 "pinch-zoom manipulation pan-y", 12292 "pinch-zoom pan-y manipulation", 12293 "manipulation pan-y pinch-zoom", 12294 "pan-y manipulation pinch-zoom", 12295 "pan-y pinch-zoom manipulation", 12296 "manipulation pan-x pinch-zoom", 12297 "pan-x manipulation pinch-zoom", 12298 "pan-x pinch-zoom manipulation", 12299 "manipulation pinch-zoom pan-x", 12300 "pinch-zoom manipulation pan-x", 12301 "pinch-zoom pan-x manipulation", 12302 ], 12303 }; 12304 12305 gCSSProperties["page"] = { 12306 domProp: "page", 12307 inherited: false, 12308 type: CSS_TYPE_LONGHAND, 12309 initial_values: ["auto"], 12310 other_values: ["page", "small_page", "large_page", "A4"], 12311 invalid_values: ["page1 page2", "auto page", "1cm"], 12312 }; 12313 12314 gCSSProperties["text-justify"] = { 12315 domProp: "textJustify", 12316 inherited: true, 12317 type: CSS_TYPE_LONGHAND, 12318 applies_to_placeholder: true, 12319 initial_values: ["auto"], 12320 other_values: ["none", "inter-word", "inter-character", "distribute"], 12321 invalid_values: [], 12322 }; 12323 12324 if (IsCSSPropertyPrefEnabled("layout.css.font-variations.enabled")) { 12325 gCSSProperties["font-variation-settings"] = { 12326 domProp: "fontVariationSettings", 12327 inherited: true, 12328 type: CSS_TYPE_LONGHAND, 12329 applies_to_first_letter: true, 12330 applies_to_first_line: true, 12331 applies_to_placeholder: true, 12332 applies_to_marker: true, 12333 applies_to_cue: true, 12334 initial_values: ["normal"], 12335 other_values: [ 12336 "'wdth' 0", 12337 "'wdth' -.1", 12338 '"wdth" 1', 12339 "'wdth' 2, 'wght' 3", 12340 '"XXXX" 0', 12341 ], 12342 invalid_values: [ 12343 "wdth", 12344 "wdth 1", // unquoted tags 12345 "'wdth'", 12346 "'wdth' 'wght'", 12347 "'wdth', 'wght'", // missing values 12348 "'' 1", 12349 "'wid' 1", 12350 "'width' 1", // incorrect tag lengths 12351 "'wd\th' 1", // non-graphic character in tag 12352 "'wdth' 1 'wght' 2", // missing comma between pairs 12353 "'wdth' 1,", // trailing comma 12354 "'wdth' 1 , , 'wght' 2", // extra comma 12355 "'wdth', 1", // comma within pair 12356 ], 12357 unbalanced_values: [ 12358 "'wdth\" 1", 12359 "\"wdth' 1", // mismatched quotes 12360 ], 12361 }; 12362 gCSSProperties["font"].subproperties.push("font-variation-settings"); 12363 gCSSProperties["font-optical-sizing"] = { 12364 domProp: "fontOpticalSizing", 12365 inherited: true, 12366 type: CSS_TYPE_LONGHAND, 12367 applies_to_first_letter: true, 12368 applies_to_first_line: true, 12369 applies_to_placeholder: true, 12370 applies_to_marker: true, 12371 applies_to_cue: true, 12372 initial_values: ["auto"], 12373 other_values: ["none"], 12374 invalid_values: ["on"], 12375 }; 12376 gCSSProperties["font"].subproperties.push("font-optical-sizing"); 12377 gCSSProperties["font-variation-settings"].other_values.push( 12378 "'vert' calc(2.5)" 12379 ); 12380 } 12381 12382 if (IsCSSPropertyPrefEnabled("layout.css.font-palette.enabled")) { 12383 gCSSProperties["font-palette"] = { 12384 domProp: "fontPalette", 12385 inherited: true, 12386 type: CSS_TYPE_LONGHAND, 12387 applies_to_first_letter: true, 12388 applies_to_first_line: true, 12389 applies_to_marker: true, 12390 applies_to_placeholder: true, 12391 initial_values: ["normal"], 12392 other_values: ["light", "dark", "--custom"], 12393 invalid_values: ["custom"], 12394 }; 12395 } 12396 12397 if (IsCSSPropertyPrefEnabled("layout.css.font-variant-emoji.enabled")) { 12398 gCSSProperties["font"].subproperties.push("font-variant-emoji"); 12399 gCSSProperties["font-variant"].subproperties.push("font-variant-emoji"); 12400 gCSSProperties["font-variant-emoji"] = { 12401 domProp: "fontVariantEmoji", 12402 inherited: true, 12403 type: CSS_TYPE_LONGHAND, 12404 applies_to_first_letter: true, 12405 applies_to_first_line: true, 12406 applies_to_marker: true, 12407 applies_to_placeholder: true, 12408 applies_to_cue: true, 12409 initial_values: ["normal"], 12410 other_values: ["text", "emoji", "unicode"], 12411 invalid_values: [ 12412 "none", 12413 "auto", 12414 "text emoji", 12415 "auto text", 12416 "normal, unicode", 12417 ], 12418 }; 12419 } 12420 12421 var isGridTemplateMasonryValueEnabled = IsCSSPropertyPrefEnabled( 12422 "layout.css.grid-template-masonry-value.enabled" 12423 ); 12424 12425 if (isGridTemplateMasonryValueEnabled) { 12426 gCSSProperties["masonry-auto-flow"] = { 12427 domProp: "masonryAutoFlow", 12428 inherited: false, 12429 type: CSS_TYPE_LONGHAND, 12430 initial_values: ["pack"], 12431 other_values: ["pack ordered", "ordered next", "next definite-first"], 12432 invalid_values: ["auto", "none", "10px", "row", "dense"], 12433 }; 12434 } 12435 12436 gCSSProperties["display"].other_values.push("grid", "inline-grid"); 12437 gCSSProperties["grid-auto-flow"] = { 12438 domProp: "gridAutoFlow", 12439 inherited: false, 12440 type: CSS_TYPE_LONGHAND, 12441 initial_values: ["row"], 12442 other_values: [ 12443 "column", 12444 "column dense", 12445 "row dense", 12446 "dense column", 12447 "dense row", 12448 "dense", 12449 ], 12450 invalid_values: ["", "auto", "none", "10px", "column row", "dense row dense"], 12451 }; 12452 12453 gCSSProperties["grid-auto-columns"] = { 12454 domProp: "gridAutoColumns", 12455 inherited: false, 12456 type: CSS_TYPE_LONGHAND, 12457 initial_values: ["auto"], 12458 other_values: [ 12459 "40px", 12460 "2em", 12461 "2.5fr", 12462 "12%", 12463 "min-content", 12464 "max-content", 12465 "calc(2px - 99%)", 12466 "minmax(20px, max-content)", 12467 "minmax(min-content, auto)", 12468 "minmax(auto, max-content)", 12469 "m\\69nmax(20px, 4Fr)", 12470 "MinMax(min-content, calc(20px + 10%))", 12471 "fit-content(1px)", 12472 "fit-content(calc(1px - 99%))", 12473 "fit-content(10%)", 12474 "40px 12%", 12475 "2.5fr min-content fit-content(1px)", 12476 ], 12477 invalid_values: [ 12478 "", 12479 "normal", 12480 "40ms", 12481 "-40px", 12482 "-12%", 12483 "-2em", 12484 "-2.5fr", 12485 "minmax()", 12486 "minmax(20px)", 12487 "mİnmax(20px, 100px)", 12488 "minmax(20px, 100px, 200px)", 12489 "maxmin(100px, 20px)", 12490 "minmax(min-content, minmax(30px, max-content))", 12491 "fit-content(-1px)", 12492 "fit-content(auto)", 12493 "fit-content(min-content)", 12494 "1px [a] 1px", 12495 ], 12496 }; 12497 gCSSProperties["grid-auto-rows"] = { 12498 domProp: "gridAutoRows", 12499 inherited: false, 12500 type: CSS_TYPE_LONGHAND, 12501 initial_values: gCSSProperties["grid-auto-columns"].initial_values, 12502 other_values: gCSSProperties["grid-auto-columns"].other_values, 12503 invalid_values: gCSSProperties["grid-auto-columns"].invalid_values, 12504 }; 12505 12506 gCSSProperties["grid-template-columns"] = { 12507 domProp: "gridTemplateColumns", 12508 inherited: false, 12509 type: CSS_TYPE_LONGHAND, 12510 initial_values: ["none"], 12511 other_values: [ 12512 "auto", 12513 "40px", 12514 "2.5fr", 12515 "[normal] 40px [] auto [ ] 12%", 12516 "[foo] 40px min-content [ bar ] calc(2px - 99%) max-content", 12517 "40px min-content calc(20px + 10%) max-content", 12518 "minmax(min-content, auto)", 12519 "minmax(auto, max-content)", 12520 "m\\69nmax(20px, 4Fr)", 12521 "40px MinMax(min-content, calc(20px + 10%)) max-content", 12522 "40px 2em", 12523 "[] 40px [-foo] 2em [bar baz This is one ident]", 12524 // TODO bug 978478: "[a] repeat(3, [b] 20px [c] 40px [d]) [e]", 12525 "repeat(1, 20px)", 12526 "repeat(1, [a] 20px)", 12527 "[a] Repeat(4, [a] 20px [] auto [b c]) [d]", 12528 "[a] 2.5fr Repeat(4, [a] 20px [] auto [b c]) [d]", 12529 "[a] 2.5fr [z] Repeat(4, [a] 20px [] auto [b c]) [d]", 12530 "[a] 2.5fr [z] Repeat(4, [a] 20px [] auto) [d]", 12531 "[a] 2.5fr [z] Repeat(4, 20px [b c] auto [b c]) [d]", 12532 "[a] 2.5fr [z] Repeat(4, 20px auto) [d]", 12533 "repeat(auto-fill, 0)", 12534 "[a] repeat( Auto-fill,1%)", 12535 "minmax(auto,0) [a] repeat(Auto-fit, 0) minmax(0,auto)", 12536 "minmax(calc(1% + 1px),auto) repeat(Auto-fit,[] 1%) minmax(auto,1%)", 12537 "[a] repeat( auto-fit,[a b] minmax(0,0) )", 12538 "[a] 40px repeat(auto-fit,[a b] minmax(1px, 0) [])", 12539 "[a] calc(1px - 99%) [b] repeat(auto-fit,[a b] minmax(1mm, 1%) [c]) [c]", 12540 "repeat(auto-fill, 0 0)", 12541 "repeat(auto-fill, 0 [] 0)", 12542 "repeat(auto-fill,minmax(1%,auto))", 12543 "repeat(auto-fill,minmax(1em,min-content)) minmax(min-content,0)", 12544 "repeat(auto-fill,minmax(max-content,1mm))", 12545 "repeat(2, fit-content(1px))", 12546 "fit-content(1px) 1fr", 12547 "[a] fit-content(calc(1px - 99%)) [b]", 12548 "[a] fit-content(10%) [b c] fit-content(1em)", 12549 // See https://bugzilla.mozilla.org/show_bug.cgi?id=981300 12550 "[none subgrid min-content max-content foo] 40px", 12551 "subgrid", 12552 "subgrid [] [foo bar]", 12553 "subgrid repeat(1, [])", 12554 "subgrid Repeat(4, [a] [b c] [] [d])", 12555 "subgrid repeat(auto-fill, [])", 12556 "subgrid repeat(Auto-fill, [a b c]) [a] []", 12557 "subgrid [x] repeat( Auto-fill, [a b c]) []", 12558 "subgrid [x] repeat( auto-fill , [a b] [c]) [y]", 12559 "subgrid repeat(auto-fill, [a] [b] [c]) [d]", 12560 "subgrid repeat(Auto-fill, [a] [b c] [] [d])", 12561 "subgrid [x y] [x] repeat(auto-fill, [a b] [c] [d] [d]) [x] [x]", 12562 "subgrid [x] repeat(auto-fill, []) [y z]", 12563 "subgrid [x] repeat(auto-fill, [y]) [z] [] repeat(2, [a] [b]) [y] []", 12564 "subgrid [x] repeat(auto-fill, []) [x y] [z] [] []", 12565 ], 12566 invalid_values: [ 12567 "", 12568 "normal", 12569 "40ms", 12570 "-40px", 12571 "-12%", 12572 "-2fr", 12573 "[foo]", 12574 "[inherit] 40px", 12575 "[initial] 40px", 12576 "[unset] 40px", 12577 "[default] 40px", 12578 "[span] 40px", 12579 "[6%] 40px", 12580 "[5th] 40px", 12581 "[foo[] bar] 40px", 12582 "[foo]] 40px", 12583 "(foo) 40px", 12584 "[foo] [bar] 40px", 12585 "40px [foo] [bar]", 12586 "minmax()", 12587 "minmax(20px)", 12588 "mİnmax(20px, 100px)", 12589 "minmax(20px, 100px, 200px)", 12590 "maxmin(100px, 20px)", 12591 "minmax(min-content, minmax(30px, max-content))", 12592 "repeat(0, 20px)", 12593 "repeat(-3, 20px)", 12594 "rêpeat(1, 20px)", 12595 "repeat(1)", 12596 "repeat(1, )", 12597 "repeat(3px, 20px)", 12598 "repeat(2.0, 20px)", 12599 "repeat(2.5, 20px)", 12600 "repeat(2, (foo))", 12601 "repeat(2, foo)", 12602 "40px calc(0px + rubbish)", 12603 "repeat(1, repeat(1, 20px))", 12604 "repeat(auto-fill, auto)", 12605 "repeat(auto-fit,auto)", 12606 "repeat(auto-fill, fit-content(1px))", 12607 "repeat(auto-fit, fit-content(1px))", 12608 "repeat(auto-fit,[])", 12609 "repeat(auto-fill, 0) repeat(auto-fit, 0) ", 12610 "repeat(auto-fit, 0) repeat(auto-fill, 0) ", 12611 "[a] repeat(auto-fit, 0) repeat(auto-fit, 0) ", 12612 "[a] repeat(auto-fill, 0) [a] repeat(auto-fill, 0) ", 12613 "repeat(auto-fill, min-content)", 12614 "repeat(auto-fit,max-content)", 12615 "repeat(auto-fit,1fr)", 12616 "repeat(auto-fit,minmax(auto,auto))", 12617 "repeat(auto-fit,minmax(min-content,1fr))", 12618 "repeat(auto-fit,minmax(1fr,auto))", 12619 "repeat(auto-fill,minmax(1fr,1em))", 12620 "repeat(auto-fill, 10px) auto", 12621 "auto repeat(auto-fit, 10px)", 12622 "minmax(min-content,max-content) repeat(auto-fit, 0)", 12623 "10px [a] 10px [b a] 1fr [b] repeat(auto-fill, 0)", 12624 "fit-content(-1px)", 12625 "fit-content(auto)", 12626 "fit-content(min-content)", 12627 "fit-content(1px) repeat(auto-fit, 1px)", 12628 "fit-content(1px) repeat(auto-fill, 1px)", 12629 "subgrid [inherit]", 12630 "subgrid [initial]", 12631 "subgrid [unset]", 12632 "subgrid [default]", 12633 "subgrid [span]", 12634 "subgrid [foo] 40px", 12635 "subgrid [foo 40px]", 12636 "[foo] subgrid", 12637 "subgrid rêpeat(1, [])", 12638 "subgrid repeat(0, [])", 12639 "subgrid repeat(-3, [])", 12640 "subgrid repeat(2.0, [])", 12641 "subgrid repeat(2.5, [])", 12642 "subgrid repeat(3px, [])", 12643 "subgrid repeat(1)", 12644 "subgrid repeat(1, )", 12645 "subgrid repeat(2, [40px])", 12646 "subgrid repeat(2, foo)", 12647 "subgrid repeat(1, repeat(1, []))", 12648 "subgrid repeat(auto-fill)", 12649 "subgrid repeat(auto-fill) [a]", 12650 "subgrid repeat(auto-fill) []", 12651 "subgrid [a] repeat(auto-fill)", 12652 "subgrid repeat(auto-fill,)", 12653 "subgrid repeat(auto-fill,)", 12654 "subgrid repeat(auto-fill,) [a]", 12655 "subgrid repeat(auto-fill,) []", 12656 "subgrid [a] repeat(auto-fill,)", 12657 "subgrid repeat(auto-fit,[])", 12658 "subgrid [] repeat(auto-fit,[])", 12659 "subgrid [a] repeat(auto-fit,[])", 12660 "subgrid repeat(auto-fill, 1px)", 12661 "subgrid repeat(auto-fill, 1px [])", 12662 "subgrid repeat(auto-fill, []) repeat(auto-fill, [])", 12663 ], 12664 unbalanced_values: ["(foo] 40px"], 12665 }; 12666 if (isGridTemplateMasonryValueEnabled) { 12667 gCSSProperties["grid-template-columns"].other_values.push("masonry"); 12668 gCSSProperties["grid-template-columns"].invalid_values.push( 12669 "masonry []", 12670 "masonry [foo] 40px", 12671 "masonry 40px", 12672 "[foo] masonry", 12673 "0px masonry", 12674 "masonry masonry", 12675 "subgrid masonry", 12676 "masonry subgrid", 12677 "masonry repeat(1, [])" 12678 ); 12679 } 12680 gCSSProperties["grid-template-rows"] = { 12681 domProp: "gridTemplateRows", 12682 inherited: false, 12683 type: CSS_TYPE_LONGHAND, 12684 initial_values: gCSSProperties["grid-template-columns"].initial_values, 12685 other_values: gCSSProperties["grid-template-columns"].other_values, 12686 invalid_values: gCSSProperties["grid-template-columns"].invalid_values, 12687 }; 12688 gCSSProperties["grid-template-areas"] = { 12689 domProp: "gridTemplateAreas", 12690 inherited: false, 12691 type: CSS_TYPE_LONGHAND, 12692 initial_values: ["none"], 12693 other_values: [ 12694 "'1a-é_ .' \"b .\"", 12695 "' Z\t\\aZ' 'Z Z'", 12696 " '. . a b' '. .a b' ", 12697 "'a.b' '. . .'", 12698 "'.' '..'", 12699 "'...' '.'", 12700 "'...-blah' '. .'", 12701 "'.. ..' '.. ...'", 12702 ], 12703 invalid_values: [ 12704 "''", 12705 "' '", 12706 "'' ''", 12707 "'a b' 'a/b'", 12708 "'a . a'", 12709 "'. a a' 'a a a'", 12710 "'a a .' 'a a a'", 12711 "'a a' 'a .'", 12712 "'a a'\n'..'\n'a a'", 12713 ], 12714 }; 12715 12716 gCSSProperties["grid-template"] = { 12717 domProp: "gridTemplate", 12718 inherited: false, 12719 type: CSS_TYPE_TRUE_SHORTHAND, 12720 subproperties: [ 12721 "grid-template-areas", 12722 "grid-template-rows", 12723 "grid-template-columns", 12724 ], 12725 initial_values: ["none", "none / none"], 12726 other_values: [ 12727 // <'grid-template-rows'> / <'grid-template-columns'> 12728 "40px / 100px", 12729 "[foo] 40px [bar] / [baz] repeat(auto-fill,100px) [fizz]", 12730 " none/100px", 12731 "40px/none", 12732 // [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]? 12733 "'fizz'", 12734 "[bar] 'fizz'", 12735 "'fizz' / [foo] 40px", 12736 "[bar] 'fizz' / [foo] 40px", 12737 "'fizz' 100px / [foo] 40px", 12738 "[bar] 'fizz' 100px / [foo] 40px", 12739 "[bar] 'fizz' 100px [buzz] / [foo] 40px", 12740 "[bar] 'fizz' 100px [buzz] \n [a] '.' 200px [b] / [foo] 40px", 12741 "subgrid / subgrid", 12742 "subgrid/40px 20px", 12743 "subgrid [foo] [] [bar baz] / 40px 20px", 12744 "40px 20px/subgrid", 12745 "40px 20px/subgrid [foo] [] repeat(3, [a] [b]) [bar baz]", 12746 "subgrid/subgrid", 12747 "subgrid [foo] [] [bar baz]/subgrid [foo] [] [bar baz]", 12748 ], 12749 invalid_values: [ 12750 "'fizz' / repeat(1, 100px)", 12751 "'fizz' repeat(1, 100px) / 0px", 12752 "[foo] [bar] 40px / 100px", 12753 "[fizz] [buzz] 100px / 40px", 12754 "[fizz] [buzz] 'foo' / 40px", 12755 "'foo' / none", 12756 "subgrid", 12757 "subgrid []", 12758 "subgrid [] / 'fizz'", 12759 "subgrid / 'fizz'", 12760 ], 12761 }; 12762 if (isGridTemplateMasonryValueEnabled) { 12763 gCSSProperties["grid-template"].other_values.push( 12764 "masonry / subgrid", 12765 "subgrid / masonry", 12766 "masonry / masonry" /* valid but behaves as 'masonry / none' */, 12767 "masonry/40px 20px", 12768 "subgrid [foo] [] [bar baz] / masonry", 12769 "40px 20px/masonry", 12770 "masonry/subgrid [foo] [] repeat(3, [a] [b]) [bar baz]", 12771 "subgrid [foo] [] [bar baz]/masonry" 12772 ); 12773 gCSSProperties["grid-template"].invalid_values.push( 12774 "masonry", 12775 "masonry / 'fizz'" 12776 ); 12777 } 12778 12779 gCSSProperties["grid"] = { 12780 domProp: "grid", 12781 inherited: false, 12782 type: CSS_TYPE_TRUE_SHORTHAND, 12783 subproperties: [ 12784 "grid-template-areas", 12785 "grid-template-rows", 12786 "grid-template-columns", 12787 "grid-auto-flow", 12788 "grid-auto-rows", 12789 "grid-auto-columns", 12790 ], 12791 initial_values: ["none", "none / none"], 12792 other_values: [ 12793 "auto-flow 40px / none", 12794 "auto-flow 40px 100px / 0", 12795 "auto-flow / 40px", 12796 "auto-flow dense auto / auto", 12797 "dense auto-flow minmax(min-content, 2fr) / auto", 12798 "dense auto-flow / 100px", 12799 "none / auto-flow 40px", 12800 "40px / auto-flow", 12801 "none / dense auto-flow auto", 12802 ].concat(gCSSProperties["grid-template"].other_values), 12803 invalid_values: [ 12804 "auto-flow", 12805 " / auto-flow", 12806 "dense 0 / 0", 12807 "dense dense 40px / 0", 12808 "auto-flow / auto-flow", 12809 "auto-flow / dense", 12810 "auto-flow [a] 0 / 0", 12811 "0 / auto-flow [a] 0", 12812 "auto-flow -20px / 0", 12813 "auto-flow 200ms / 0", 12814 "auto-flow 1px [a] 1px / 0", 12815 ].concat( 12816 gCSSProperties["grid-template"].invalid_values, 12817 gCSSProperties["grid-auto-flow"].other_values, 12818 gCSSProperties["grid-auto-flow"].invalid_values.filter(v => v != "none") 12819 ), 12820 }; 12821 12822 var gridLineOtherValues = [ 12823 "foo", 12824 "2", 12825 "2 foo", 12826 "foo 2", 12827 "-3", 12828 "-3 bar", 12829 "bar -3", 12830 "span 2", 12831 "2 span", 12832 "span foo", 12833 "foo span", 12834 "span 2 foo", 12835 "span foo 2", 12836 "2 foo span", 12837 "foo 2 span", 12838 ]; 12839 var gridLineInvalidValues = [ 12840 "", 12841 "4th", 12842 "span", 12843 "inherit 2", 12844 "2 inherit", 12845 "20px", 12846 "2 3", 12847 "2.5", 12848 "2.0", 12849 "0", 12850 "0 foo", 12851 "span 0", 12852 "2 foo 3", 12853 "foo 2 foo", 12854 "2 span foo", 12855 "foo span 2", 12856 "span -3", 12857 "span -3 bar", 12858 "span 2 span", 12859 "span foo span", 12860 "span 2 foo span", 12861 ]; 12862 12863 gCSSProperties["grid-column-start"] = { 12864 domProp: "gridColumnStart", 12865 inherited: false, 12866 type: CSS_TYPE_LONGHAND, 12867 initial_values: ["auto"], 12868 other_values: gridLineOtherValues, 12869 invalid_values: gridLineInvalidValues, 12870 }; 12871 gCSSProperties["grid-column-end"] = { 12872 domProp: "gridColumnEnd", 12873 inherited: false, 12874 type: CSS_TYPE_LONGHAND, 12875 initial_values: ["auto"], 12876 other_values: gridLineOtherValues, 12877 invalid_values: gridLineInvalidValues, 12878 }; 12879 gCSSProperties["grid-row-start"] = { 12880 domProp: "gridRowStart", 12881 inherited: false, 12882 type: CSS_TYPE_LONGHAND, 12883 initial_values: ["auto"], 12884 other_values: gridLineOtherValues, 12885 invalid_values: gridLineInvalidValues, 12886 }; 12887 gCSSProperties["grid-row-end"] = { 12888 domProp: "gridRowEnd", 12889 inherited: false, 12890 type: CSS_TYPE_LONGHAND, 12891 initial_values: ["auto"], 12892 other_values: gridLineOtherValues, 12893 invalid_values: gridLineInvalidValues, 12894 }; 12895 12896 // The grid-column and grid-row shorthands take values of the form 12897 // <grid-line> [ / <grid-line> ]? 12898 var gridColumnRowOtherValues = [].concat(gridLineOtherValues); 12899 gridLineOtherValues.concat(["auto"]).forEach(function (val) { 12900 gridColumnRowOtherValues.push(" foo / " + val); 12901 gridColumnRowOtherValues.push(val + "/2"); 12902 }); 12903 var gridColumnRowInvalidValues = ["foo, bar", "foo / bar / baz"].concat( 12904 gridLineInvalidValues 12905 ); 12906 gridLineInvalidValues.forEach(function (val) { 12907 gridColumnRowInvalidValues.push("span 3 / " + val); 12908 gridColumnRowInvalidValues.push(val + " / foo"); 12909 }); 12910 gCSSProperties["grid-column"] = { 12911 domProp: "gridColumn", 12912 inherited: false, 12913 type: CSS_TYPE_TRUE_SHORTHAND, 12914 subproperties: ["grid-column-start", "grid-column-end"], 12915 initial_values: ["auto", "auto / auto"], 12916 other_values: gridColumnRowOtherValues, 12917 invalid_values: gridColumnRowInvalidValues, 12918 }; 12919 gCSSProperties["grid-row"] = { 12920 domProp: "gridRow", 12921 inherited: false, 12922 type: CSS_TYPE_TRUE_SHORTHAND, 12923 subproperties: ["grid-row-start", "grid-row-end"], 12924 initial_values: ["auto", "auto / auto"], 12925 other_values: gridColumnRowOtherValues, 12926 invalid_values: gridColumnRowInvalidValues, 12927 }; 12928 12929 var gridAreaOtherValues = gridLineOtherValues.slice(); 12930 gridLineOtherValues.forEach(function (val) { 12931 gridAreaOtherValues.push("foo / " + val); 12932 gridAreaOtherValues.push(val + "/2/3"); 12933 gridAreaOtherValues.push("foo / bar / " + val + " / baz"); 12934 }); 12935 var gridAreaInvalidValues = [ 12936 "foo, bar", 12937 "foo / bar / baz / fizz / buzz", 12938 "default / foo / bar / baz", 12939 "foo / initial / bar / baz", 12940 "foo / bar / inherit / baz", 12941 "foo / bar / baz / unset", 12942 ].concat(gridLineInvalidValues); 12943 gridLineInvalidValues.forEach(function (val) { 12944 gridAreaInvalidValues.push("foo / " + val); 12945 gridAreaInvalidValues.push("foo / bar / " + val); 12946 gridAreaInvalidValues.push("foo / 4 / bar / " + val); 12947 }); 12948 12949 gCSSProperties["grid-area"] = { 12950 domProp: "gridArea", 12951 inherited: false, 12952 type: CSS_TYPE_TRUE_SHORTHAND, 12953 subproperties: [ 12954 "grid-row-start", 12955 "grid-column-start", 12956 "grid-row-end", 12957 "grid-column-end", 12958 ], 12959 initial_values: [ 12960 "auto", 12961 "auto / auto", 12962 "auto / auto / auto", 12963 "auto / auto / auto / auto", 12964 ], 12965 other_values: gridAreaOtherValues, 12966 invalid_values: gridAreaInvalidValues, 12967 }; 12968 12969 gCSSProperties["column-gap"] = { 12970 domProp: "columnGap", 12971 inherited: false, 12972 type: CSS_TYPE_LONGHAND, 12973 initial_values: ["normal"], 12974 other_values: [ 12975 "2px", 12976 "2%", 12977 "1em", 12978 "calc(1px + 1em)", 12979 "calc(1%)", 12980 "calc(1% + 1ch)", 12981 "calc(1px - 99%)", 12982 ], 12983 invalid_values: [ 12984 "-1px", 12985 "auto", 12986 "none", 12987 "1px 1px", 12988 "-1%", 12989 "fit-content(1px)", 12990 ], 12991 }; 12992 gCSSProperties["grid-column-gap"] = { 12993 domProp: "gridColumnGap", 12994 inherited: false, 12995 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 12996 alias_for: "column-gap", 12997 subproperties: ["column-gap"], 12998 }; 12999 gCSSProperties["row-gap"] = { 13000 domProp: "rowGap", 13001 inherited: false, 13002 type: CSS_TYPE_LONGHAND, 13003 initial_values: ["normal"], 13004 other_values: [ 13005 "2px", 13006 "2%", 13007 "1em", 13008 "calc(1px + 1em)", 13009 "calc(1%)", 13010 "calc(1% + 1ch)", 13011 "calc(1px - 99%)", 13012 ], 13013 invalid_values: ["-1px", "auto", "none", "1px 1px", "-1%", "min-content"], 13014 }; 13015 gCSSProperties["grid-row-gap"] = { 13016 domProp: "gridRowGap", 13017 inherited: false, 13018 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13019 alias_for: "row-gap", 13020 subproperties: ["row-gap"], 13021 }; 13022 gCSSProperties["gap"] = { 13023 domProp: "gap", 13024 inherited: false, 13025 type: CSS_TYPE_TRUE_SHORTHAND, 13026 subproperties: ["column-gap", "row-gap"], 13027 initial_values: ["normal", "normal normal"], 13028 other_values: [ 13029 "1ch 0", 13030 "1px 1%", 13031 "1em 1px", 13032 "calc(1px) calc(1%)", 13033 "normal 0", 13034 "1% normal", 13035 ], 13036 invalid_values: [ 13037 "-1px", 13038 "1px -1px", 13039 "1px 1px 1px", 13040 "inherit 1px", 13041 "1px auto", 13042 ], 13043 }; 13044 gCSSProperties["grid-gap"] = { 13045 domProp: "gridGap", 13046 inherited: false, 13047 type: CSS_TYPE_TRUE_SHORTHAND, 13048 alias_for: "gap", 13049 subproperties: ["column-gap", "row-gap"], 13050 }; 13051 13052 gCSSProperties["contain"] = { 13053 domProp: "contain", 13054 inherited: false, 13055 type: CSS_TYPE_LONGHAND, 13056 initial_values: ["none"], 13057 other_values: [ 13058 "strict", 13059 "layout", 13060 "size", 13061 "content", 13062 "paint", 13063 "layout paint", 13064 "paint layout", 13065 "size layout", 13066 "paint size", 13067 "layout size paint", 13068 "layout paint size", 13069 "size paint layout", 13070 "paint size layout", 13071 ], 13072 invalid_values: [ 13073 "none strict", 13074 "none size", 13075 "strict layout", 13076 "strict layout size", 13077 "layout strict", 13078 "layout content", 13079 "strict content", 13080 "layout size strict", 13081 "layout size paint strict", 13082 "paint strict", 13083 "size strict", 13084 "paint paint", 13085 "content content", 13086 "size content", 13087 "content strict size", 13088 "paint layout content", 13089 "layout size content", 13090 "size size", 13091 "strict strict", 13092 "auto", 13093 "10px", 13094 "0", 13095 ], 13096 }; 13097 13098 if (IsCSSPropertyPrefEnabled("layout.css.initial-letter.enabled")) { 13099 gCSSProperties["initial-letter"] = { 13100 domProp: "initialLetter", 13101 inherited: false, 13102 type: CSS_TYPE_LONGHAND, 13103 applies_to_first_letter: true, 13104 initial_values: ["normal"], 13105 other_values: ["2", "2.5", "3.7 2", "4 3"], 13106 invalid_values: ["-3", "3.7 -2", "25%", "16px", "1 0", "0", "0 1"], 13107 }; 13108 } 13109 13110 if (IsCSSPropertyPrefEnabled("layout.css.osx-font-smoothing.enabled")) { 13111 gCSSProperties["-moz-osx-font-smoothing"] = { 13112 domProp: "MozOsxFontSmoothing", 13113 inherited: true, 13114 type: CSS_TYPE_LONGHAND, 13115 applies_to_first_letter: true, 13116 applies_to_first_line: true, 13117 applies_to_placeholder: true, 13118 applies_to_cue: true, 13119 applies_to_marker: true, 13120 initial_values: ["auto"], 13121 other_values: ["grayscale", "subpixel-antialiased", "antialiased"], 13122 invalid_values: ["none"], 13123 }; 13124 13125 gCSSProperties["-webkit-font-smoothing"] = { 13126 domProp: "webkitFontSmoothing", 13127 inherited: true, 13128 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13129 applies_to_first_letter: true, 13130 applies_to_first_line: true, 13131 applies_to_placeholder: true, 13132 applies_to_cue: true, 13133 applies_to_marker: true, 13134 alias_for: "-moz-osx-font-smoothing", 13135 subproperties: ["-moz-osx-font-smoothing"], 13136 }; 13137 } 13138 13139 if (IsCSSPropertyPrefEnabled("layout.css.scroll-anchoring.enabled")) { 13140 gCSSProperties["overflow-anchor"] = { 13141 domProp: "overflowAnchor", 13142 inherited: false, 13143 type: CSS_TYPE_LONGHAND, 13144 initial_values: ["auto"], 13145 other_values: ["none"], 13146 invalid_values: [], 13147 }; 13148 } 13149 13150 gCSSProperties["overscroll-behavior-x"] = { 13151 domProp: "overscrollBehaviorX", 13152 inherited: false, 13153 type: CSS_TYPE_LONGHAND, 13154 initial_values: ["auto"], 13155 other_values: ["contain", "none"], 13156 invalid_values: ["left", "1px"], 13157 }; 13158 gCSSProperties["overscroll-behavior-y"] = { 13159 domProp: "overscrollBehaviorY", 13160 inherited: false, 13161 type: CSS_TYPE_LONGHAND, 13162 initial_values: ["auto"], 13163 other_values: ["contain", "none"], 13164 invalid_values: ["left", "1px"], 13165 }; 13166 gCSSProperties["overscroll-behavior-inline"] = { 13167 domProp: "overscrollBehaviorInline", 13168 inherited: false, 13169 logical: true, 13170 type: CSS_TYPE_LONGHAND, 13171 initial_values: ["auto"], 13172 other_values: ["contain", "none"], 13173 invalid_values: ["left", "1px"], 13174 }; 13175 gCSSProperties["overscroll-behavior-block"] = { 13176 domProp: "overscrollBehaviorBlock", 13177 inherited: false, 13178 logical: true, 13179 type: CSS_TYPE_LONGHAND, 13180 initial_values: ["auto"], 13181 other_values: ["contain", "none"], 13182 invalid_values: ["left", "1px"], 13183 }; 13184 gCSSProperties["overscroll-behavior"] = { 13185 domProp: "overscrollBehavior", 13186 inherited: false, 13187 type: CSS_TYPE_TRUE_SHORTHAND, 13188 subproperties: ["overscroll-behavior-x", "overscroll-behavior-y"], 13189 initial_values: ["auto"], 13190 other_values: [ 13191 "contain", 13192 "none", 13193 "contain contain", 13194 "contain auto", 13195 "none contain", 13196 ], 13197 invalid_values: ["left", "1px", "contain auto none", "contain nonsense"], 13198 }; 13199 13200 { 13201 const patterns = { 13202 background: [ 13203 "{} scroll no-repeat", 13204 "{} repeat", 13205 "url(404.png), {}, -moz-element(#a) black", 13206 ], 13207 mask: [ 13208 "{} add no-repeat", 13209 "{} repeat", 13210 "url(404.png), {}, -moz-element(#a) alpha", 13211 ], 13212 }; 13213 13214 for (const prop of ["background", "mask"]) { 13215 let i = 0; 13216 const p = patterns[prop]; 13217 for (const v of invalidNonUrlImageValues) { 13218 gCSSProperties[prop].invalid_values.push( 13219 p[i++ % p.length].replace("{}", v) 13220 ); 13221 } 13222 for (const v of validNonUrlImageValues) { 13223 gCSSProperties[prop].other_values.push( 13224 p[i++ % p.length].replace("{}", v) 13225 ); 13226 } 13227 } 13228 } 13229 13230 // XXXdholbert The formerly-pref-controlled assignments below should all just 13231 // merge into the major gCSSProperties = { ... } bundle above. 13232 gCSSProperties["display"].other_values.push("flow-root"); 13233 13234 gCSSProperties["hyphenate-character"] = { 13235 domProp: "hyphenateCharacter", 13236 inherited: true, 13237 type: CSS_TYPE_LONGHAND, 13238 applies_to_first_letter: true, 13239 applies_to_first_line: true, 13240 applies_to_placeholder: true, 13241 initial_values: ["auto"], 13242 other_values: ['"="', '"/-/"', '"\1400"', '""'], 13243 invalid_values: ["none", "auto auto", "1400", "U+1400"], 13244 }; 13245 13246 gCSSProperties["content-visibility"] = { 13247 domProp: "contentVisibility", 13248 inherited: false, 13249 type: CSS_TYPE_LONGHAND, 13250 initial_values: ["visible"], 13251 other_values: ["auto", "hidden"], 13252 invalid_values: [ 13253 "invisible", 13254 "partially-visible", 13255 "auto auto", 13256 "visible hidden", 13257 ], 13258 }; 13259 13260 gCSSProperties["contain-intrinsic-width"] = { 13261 domProp: "containIntrinsicWidth", 13262 inherited: false, 13263 type: CSS_TYPE_LONGHAND, 13264 initial_values: ["none"], 13265 other_values: ["1em", "1px", "auto 1px", "auto none"], 13266 invalid_values: ["auto auto", "auto", "-1px"], 13267 }; 13268 gCSSProperties["contain-intrinsic-height"] = { 13269 domProp: "containIntrinsicHeight", 13270 inherited: false, 13271 type: CSS_TYPE_LONGHAND, 13272 initial_values: ["none"], 13273 other_values: ["1em", "1px", "auto 1px", "auto none"], 13274 invalid_values: ["auto auto", "auto", "-1px"], 13275 }; 13276 gCSSProperties["contain-intrinsic-block-size"] = { 13277 domProp: "containIntrinsicBlockSize", 13278 inherited: false, 13279 logical: true, 13280 type: CSS_TYPE_LONGHAND, 13281 initial_values: ["none"], 13282 other_values: ["1em", "1px", "auto 1px", "auto none"], 13283 invalid_values: ["auto auto", "auto", "-1px"], 13284 }; 13285 gCSSProperties["contain-intrinsic-inline-size"] = { 13286 domProp: "containIntrinsicInlineSize", 13287 inherited: false, 13288 logical: true, 13289 type: CSS_TYPE_LONGHAND, 13290 initial_values: ["none"], 13291 other_values: ["1em", "1px", "auto 1px", "auto none"], 13292 invalid_values: ["auto auto", "auto", "-1px"], 13293 }; 13294 13295 gCSSProperties["contain-intrinsic-size"] = { 13296 domProp: "containIntrinsicSize", 13297 inherited: false, 13298 type: CSS_TYPE_TRUE_SHORTHAND, 13299 subproperties: ["contain-intrinsic-width", "contain-intrinsic-height"], 13300 initial_values: ["none"], 13301 other_values: ["1em 1em", "1px 1px", "auto 1px auto 1px", "1px auto 1px"], 13302 invalid_values: ["auto auto", "-1px -1px", "1px, auto none"], 13303 }; 13304 13305 if (IsCSSPropertyPrefEnabled("layout.css.anchor-positioning.enabled")) { 13306 gCSSProperties["anchor-name"] = { 13307 domProp: "anchorName", 13308 inherited: false, 13309 type: CSS_TYPE_LONGHAND, 13310 initial_values: ["none"], 13311 other_values: ["--foo", "--foo, --baz", "--foo,--baz", "--foo ,--baz"], 13312 invalid_values: [ 13313 "--foo --bar", 13314 "foo", 13315 "none bar", 13316 "none --baz", 13317 "--foo bar", 13318 ",--foo", 13319 "--foo,", 13320 ], 13321 }; 13322 13323 gCSSProperties["anchor-scope"] = { 13324 domProp: "anchorScope", 13325 inherited: false, 13326 type: CSS_TYPE_LONGHAND, 13327 initial_values: ["none"], 13328 other_values: [ 13329 "all", 13330 "--foo", 13331 "--foo, --baz", 13332 "--foo,--baz", 13333 "--foo ,--baz", 13334 ], 13335 invalid_values: [ 13336 "all, --foo", 13337 "--foo, all", 13338 "--foo --bar", 13339 "foo", 13340 "none bar", 13341 "none --baz", 13342 "--foo bar", 13343 ",--foo", 13344 "--foo,", 13345 ], 13346 }; 13347 13348 gCSSProperties["position-anchor"] = { 13349 domProp: "positionAnchor", 13350 inherited: false, 13351 type: CSS_TYPE_LONGHAND, 13352 initial_values: ["none"], 13353 other_values: ["auto", "--foo"], 13354 invalid_values: [ 13355 "normal", 13356 "none, auto", 13357 "--foo none", 13358 "--foo, auto", 13359 "auto, --bar", 13360 "foo", 13361 ], 13362 }; 13363 13364 gCSSProperties["position-area"] = { 13365 domProp: "positionArea", 13366 inherited: false, 13367 type: CSS_TYPE_LONGHAND, 13368 initial_values: ["none"], 13369 other_values: [ 13370 "center", 13371 "span-all", 13372 "left", 13373 "right", 13374 "span-left", 13375 "span-right", 13376 "x-start", 13377 "x-end", 13378 "span-x-start", 13379 "span-x-end", 13380 "self-x-start", 13381 "self-x-end", 13382 "span-self-x-start", 13383 "span-self-x-end", 13384 "top", 13385 "bottom", 13386 "span-top", 13387 "span-bottom", 13388 "y-start", 13389 "y-end", 13390 "span-y-start", 13391 "span-y-end", 13392 "self-y-start", 13393 "self-y-end", 13394 "span-self-y-start", 13395 "span-self-y-end", 13396 "block-start", 13397 "block-end", 13398 "span-block-start", 13399 "span-block-end", 13400 "inline-start", 13401 "inline-end", 13402 "span-inline-start", 13403 "span-inline-end", 13404 "self-block-start", 13405 "self-block-end", 13406 "span-self-block-start", 13407 "span-self-block-end", 13408 "self-inline-start", 13409 "self-inline-end", 13410 "span-self-inline-start", 13411 "span-self-inline-end", 13412 "start", 13413 "end", 13414 "span-start", 13415 "span-end", 13416 "self-start", 13417 "self-end", 13418 "span-self-start", 13419 "span-self-end", 13420 "center span-all", 13421 "left center", 13422 "span-left bottom", 13423 "span-block-end inline-start", 13424 "span-inline-start block-end", 13425 "self-block-end span-self-inline-start", 13426 "start center", 13427 "span-start span-end", 13428 "self-end span-self-start", 13429 ], 13430 invalid_values: [ 13431 "auto", 13432 "none left", 13433 "left self-top", 13434 "right block-end", 13435 "top self-end", 13436 "inline-start self-block-end", 13437 "span-self-inline-start start", 13438 "end span-self-start", 13439 ], 13440 }; 13441 13442 gCSSProperties["position-try-fallbacks"] = { 13443 domProp: "positionTryFallbacks", 13444 inherited: false, 13445 type: CSS_TYPE_LONGHAND, 13446 initial_values: ["none"], 13447 other_values: [ 13448 "--foo", 13449 "flip-block", 13450 "flip-inline", 13451 "flip-x", 13452 "flip-y", 13453 "flip-start", 13454 "left", 13455 "span-y-start", 13456 "span-block-start inline-end", 13457 "span-all self-block-end", 13458 "end span-start", 13459 "center span-all", 13460 ], 13461 invalid_values: ["foo", "none none", "span-y-start self-block-end"], 13462 }; 13463 13464 const tryOrderEnabled = IsCSSPropertyPrefEnabled( 13465 "layout.css.anchor-positioning.position-try-order.enabled" 13466 ); 13467 if (tryOrderEnabled) { 13468 gCSSProperties["position-try-order"] = { 13469 domProp: "positionTryOrder", 13470 inherited: false, 13471 type: CSS_TYPE_LONGHAND, 13472 initial_values: ["normal"], 13473 other_values: [ 13474 "most-width", 13475 "most-height", 13476 "most-block-size", 13477 "most-inline-size", 13478 ], 13479 invalid_values: ["auto", "none", "foo"], 13480 }; 13481 } 13482 13483 gCSSProperties["position-visibility"] = { 13484 domProp: "positionVisibility", 13485 inherited: false, 13486 type: CSS_TYPE_LONGHAND, 13487 initial_values: ["anchors-visible"], 13488 other_values: ["anchors-valid", "always", "no-overflow"], 13489 invalid_values: [ 13490 "none", 13491 "auto", 13492 "always anchors-valid", 13493 "anchors-visible always", 13494 ], 13495 }; 13496 13497 gCSSProperties["position-try"] = { 13498 domProp: "positionTry", 13499 inherited: false, 13500 type: CSS_TYPE_TRUE_SHORTHAND, 13501 subproperties: ["position-try-fallbacks"], 13502 initial_values: ["none"], 13503 other_values: [ 13504 "--foo", 13505 "flip-block", 13506 "flip-inline", 13507 "flip-x", 13508 "flip-y", 13509 "flip-start", 13510 "left", 13511 "span-y-start", 13512 "span-block-start inline-end", 13513 "span-all self-block-end", 13514 "end span-start", 13515 "center span-all", 13516 ], 13517 invalid_values: [ 13518 "foo", 13519 "--foo none none", 13520 "--foo span-y-start self-block-end", 13521 ], 13522 }; 13523 if (tryOrderEnabled) { 13524 gCSSProperties["position-try"].subproperties.push("position-try-order"); 13525 } 13526 const positionTryValuesWithOrder = [ 13527 "most-width --foo", 13528 "most-width flip-block", 13529 "most-width flip-inline", 13530 "most-width flip-x", 13531 "most-width flip-y", 13532 "most-width flip-start", 13533 "most-width left", 13534 "most-width span-y-start", 13535 "most-width span-block-start inline-end", 13536 "most-width span-all self-block-end", 13537 "most-width end span-start", 13538 "most-width center span-all", 13539 "most-height --foo", 13540 "most-height flip-block", 13541 "most-height flip-inline", 13542 "most-height flip-x", 13543 "most-height flip-y", 13544 "most-height flip-start", 13545 "most-height left", 13546 "most-height span-y-start", 13547 "most-height span-block-start inline-end", 13548 "most-height span-all self-block-end", 13549 "most-height end span-start", 13550 "most-height center span-all", 13551 "most-block-size --foo", 13552 "most-block-size flip-block", 13553 "most-block-size flip-inline", 13554 "most-block-size flip-x", 13555 "most-block-size flip-y", 13556 "most-block-size flip-start", 13557 "most-block-size left", 13558 "most-block-size span-y-start", 13559 "most-block-size span-block-start inline-end", 13560 "most-block-size span-all self-block-end", 13561 "most-block-size end span-start", 13562 "most-block-size center span-all", 13563 "most-inline-size --foo", 13564 "most-inline-size flip-block", 13565 "most-inline-size flip-inline", 13566 "most-inline-size flip-x", 13567 "most-inline-size flip-y", 13568 "most-inline-size flip-start", 13569 "most-inline-size left", 13570 "most-inline-size span-y-start", 13571 "most-inline-size span-block-start inline-end", 13572 "most-inline-size span-all self-block-end", 13573 "most-inline-size end span-start", 13574 "most-inline-size center span-all", 13575 ]; 13576 (tryOrderEnabled 13577 ? gCSSProperties["position-try"].other_values 13578 : gCSSProperties["position-try"].invalid_values 13579 ).push(...positionTryValuesWithOrder); 13580 } 13581 13582 if (IsCSSPropertyPrefEnabled("layout.css.scroll-state.enabled")) { 13583 gCSSProperties["container-type"].other_values.push( 13584 "scroll-state", 13585 "size scroll-state", 13586 "scroll-state size", 13587 "inline-size scroll-state", 13588 "scroll-state inline-size" 13589 ); 13590 } 13591 13592 gCSSProperties["hyphenate-limit-chars"] = { 13593 domProp: "hyphenateLimitChars", 13594 inherited: true, 13595 type: CSS_TYPE_LONGHAND, 13596 applies_to_first_letter: true, 13597 applies_to_first_line: true, 13598 applies_to_placeholder: true, 13599 initial_values: ["auto"], 13600 other_values: ["6", "6 2", "8 2 4", "6 2 auto", "6 auto 4"], 13601 invalid_values: ["none", "auto auto auto auto", "1 2 3 4", '"string"'], 13602 }; 13603 13604 if (false) { 13605 // TODO These properties are chrome-only, and are not exposed via CSSOM. 13606 // We may still want to find a way to test them. See bug 1206999. 13607 gCSSProperties["-moz-window-shadow"] = { 13608 //domProp: "MozWindowShadow", 13609 inherited: false, 13610 type: CSS_TYPE_LONGHAND, 13611 initial_values: ["default"], 13612 other_values: ["none", "menu", "tooltip", "sheet", "cliprounded"], 13613 invalid_values: [], 13614 }; 13615 13616 gCSSProperties["-moz-window-opacity"] = { 13617 // domProp: "MozWindowOpacity", 13618 inherited: false, 13619 type: CSS_TYPE_LONGHAND, 13620 initial_values: [ 13621 "1", 13622 "17", 13623 "397.376", 13624 "3e1", 13625 "3e+1", 13626 "3e0", 13627 "3e+0", 13628 "3e-0", 13629 "300%", 13630 ], 13631 other_values: ["0", "0.4", "0.0000", "-3", "3e-1", "-100%", "50%"], 13632 invalid_values: ["0px", "1px", "20%", "default", "auto"], 13633 }; 13634 13635 gCSSProperties["-moz-window-transform"] = { 13636 // domProp: "MozWindowTransform", 13637 inherited: false, 13638 type: CSS_TYPE_LONGHAND, 13639 prerequisites: { width: "300px", height: "50px" }, 13640 initial_values: ["none"], 13641 other_values: [ 13642 "translatex(1px)", 13643 "translatex(4em)", 13644 "translatex(-4px)", 13645 "translatex(3px)", 13646 "translatex(0px) translatex(1px) translatex(2px) translatex(3px) translatex(4px)", 13647 "translatey(4em)", 13648 "translate(3px)", 13649 "translate(10px, -3px)", 13650 "rotate(45deg)", 13651 "rotate(45grad)", 13652 "rotate(45rad)", 13653 "rotate(0.25turn)", 13654 "rotate(0)", 13655 "scalex(10)", 13656 "scalex(10%)", 13657 "scalex(-10)", 13658 "scalex(-10%)", 13659 "scaley(10)", 13660 "scaley(10%)", 13661 "scaley(-10)", 13662 "scaley(-10%)", 13663 "scale(10)", 13664 "scale(10%)", 13665 "scale(10, 20)", 13666 "scale(10%, 20%)", 13667 "scale(-10)", 13668 "scale(-10%)", 13669 "scale(-10, 20)", 13670 "scale(10%, -20%)", 13671 "scale(10, 20%)", 13672 "scale(-10, 20%)", 13673 "skewx(30deg)", 13674 "skewx(0)", 13675 "skewy(0)", 13676 "skewx(30grad)", 13677 "skewx(30rad)", 13678 "skewx(0.08turn)", 13679 "skewy(30deg)", 13680 "skewy(30grad)", 13681 "skewy(30rad)", 13682 "skewy(0.08turn)", 13683 "rotate(45deg) scale(2, 1)", 13684 "skewx(45deg) skewx(-50grad)", 13685 "translate(0, 0) scale(1, 1) skewx(0) skewy(0) matrix(1, 0, 0, 1, 0, 0)", 13686 "translatex(50%)", 13687 "translatey(50%)", 13688 "translate(50%)", 13689 "translate(3%, 5px)", 13690 "translate(5px, 3%)", 13691 "matrix(1, 2, 3, 4, 5, 6)", 13692 /* valid calc() values */ 13693 "translatex(calc(5px + 10%))", 13694 "translatey(calc(0.25 * 5px + 10% / 3))", 13695 "translate(calc(5px - 10% * 3))", 13696 "translate(calc(5px - 3 * 10%), 50px)", 13697 "translate(-50px, calc(5px - 10% * 3))", 13698 "translatez(1px)", 13699 "translatez(4em)", 13700 "translatez(-4px)", 13701 "translatez(0px)", 13702 "translatez(2px) translatez(5px)", 13703 "translate3d(3px, 4px, 5px)", 13704 "translate3d(2em, 3px, 1em)", 13705 "translatex(2px) translate3d(4px, 5px, 6px) translatey(1px)", 13706 "scale3d(4, 4, 4)", 13707 "scale3d(4%, 4%, 4%)", 13708 "scale3d(-2, 3, -7)", 13709 "scale3d(-2%, 3%, -7%)", 13710 "scalez(4)", 13711 "scalez(4%)", 13712 "scalez(-6)", 13713 "scalez(-6%)", 13714 "rotate3d(2, 3, 4, 45deg)", 13715 "rotate3d(-3, 7, 0, 12rad)", 13716 "rotatex(15deg)", 13717 "rotatey(-12grad)", 13718 "rotatez(72rad)", 13719 "rotatex(0.125turn)", 13720 "perspective(0px)", 13721 "perspective(1000px)", 13722 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)", 13723 "translate(10px, calc(min(5px,10%)))", 13724 "translate(calc(max(5px,10%)), 10%)", 13725 "translate(max(5px,10%), 10%)", 13726 ], 13727 invalid_values: [ 13728 "1px", 13729 "#0000ff", 13730 "red", 13731 "auto", 13732 "translatex(1)", 13733 "translatey(1)", 13734 "translate(2)", 13735 "translate(-3, -4)", 13736 "translatex(1px 1px)", 13737 "translatex(translatex(1px))", 13738 "translatex(#0000ff)", 13739 "translatex(red)", 13740 "translatey()", 13741 "matrix(1px, 2px, 3px, 4px, 5px, 6px)", 13742 "skewx(red)", 13743 "matrix(1%, 0, 0, 0, 0px, 0px)", 13744 "matrix(0, 1%, 2, 3, 4px,5px)", 13745 "matrix(0, 1, 2%, 3, 4px, 5px)", 13746 "matrix(0, 1, 2, 3%, 4%, 5%)", 13747 "matrix(1, 2, 3, 4, 5px, 6%)", 13748 "matrix(1, 2, 3, 4, 5%, 6px)", 13749 "matrix(1, 2, 3, 4, 5%, 6%)", 13750 "matrix(1, 2, 3, 4, 5px, 6em)", 13751 /* invalid calc() values */ 13752 "translatey(-moz-min(5px,10%))", 13753 "translatex(-moz-max(5px,10%))", 13754 "matrix(1, 0, 0, 1, max(5px * 3), calc(10% - 3px))", 13755 "perspective(-10px)", 13756 "matrix3d(dinosaur)", 13757 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)", 13758 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)", 13759 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15%, 16)", 13760 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16px)", 13761 "rotatey(words)", 13762 "rotatex(7)", 13763 "translate3d(3px, 4px, 1px, 7px)", 13764 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13px, 14em, 15px, 16)", 13765 "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 20%, 10%, 15, 16)", 13766 ], 13767 }; 13768 13769 gCSSProperties["-moz-context-properties"] = { 13770 //domProp: "MozContextProperties", 13771 inherited: true, 13772 type: CSS_TYPE_LONGHAND, 13773 initial_values: ["none"], 13774 other_values: [ 13775 "fill", 13776 "stroke", 13777 "fill, stroke", 13778 "fill, stroke, fill", 13779 "fill, foo", 13780 "foo", 13781 ], 13782 invalid_values: [ 13783 "default", 13784 "fill, auto", 13785 "all, stroke", 13786 "none, fill", 13787 "fill, none", 13788 "fill, default", 13789 "2px", 13790 ], 13791 }; 13792 } 13793 13794 gCSSProperties["scrollbar-color"] = { 13795 domProp: "scrollbarColor", 13796 inherited: true, 13797 type: CSS_TYPE_LONGHAND, 13798 initial_values: ["auto"], 13799 other_values: ["red green", "blue yellow", "#ffff00 white"], 13800 invalid_values: ["ffff00 red", "auto red", "red auto", "green"], 13801 }; 13802 13803 gCSSProperties["scrollbar-width"] = { 13804 domProp: "scrollbarWidth", 13805 inherited: false, 13806 type: CSS_TYPE_LONGHAND, 13807 initial_values: ["auto"], 13808 other_values: ["none", "thin"], 13809 invalid_values: ["1px"], 13810 }; 13811 13812 if (IsCSSPropertyPrefEnabled("layout.css.motion-path-url.enabled")) { 13813 gCSSProperties["offset-path"]["other_values"].push("url(#svgPath)"); 13814 } 13815 13816 { 13817 let linear_function_other_values = [ 13818 "linear(0, 1)", 13819 "linear(0 0% 50%, 1 50% 100%)", 13820 ]; 13821 13822 let linear_function_invalid_values = [ 13823 "linear()", 13824 "linear(0.5)", 13825 "linear(0% 0 100%)", 13826 "linear(0,)", 13827 ]; 13828 gCSSProperties["animation-timing-function"].other_values.push( 13829 ...linear_function_other_values 13830 ); 13831 gCSSProperties["animation-timing-function"].invalid_values.push( 13832 ...linear_function_invalid_values 13833 ); 13834 13835 gCSSProperties["transition-timing-function"].other_values.push( 13836 ...linear_function_other_values 13837 ); 13838 gCSSProperties["transition-timing-function"].invalid_values.push( 13839 ...linear_function_invalid_values 13840 ); 13841 13842 gCSSProperties["animation"].other_values.push( 13843 "1s 2s linear(0, 1) bounce", 13844 "4s linear(0, 0.5 25% 75%, 1 100% 100%)" 13845 ); 13846 } 13847 13848 if (IsCSSPropertyPrefEnabled("layout.css.backdrop-filter.enabled")) { 13849 gCSSProperties["backdrop-filter"] = { 13850 domProp: "backdropFilter", 13851 inherited: false, 13852 type: CSS_TYPE_LONGHAND, 13853 initial_values: ["none"], 13854 other_values: gCSSProperties["filter"].other_values, 13855 invalid_values: gCSSProperties["filter"].invalid_values, 13856 }; 13857 } 13858 13859 gCSSProperties["math-depth"] = { 13860 domProp: "mathDepth", 13861 inherited: true, 13862 type: CSS_TYPE_LONGHAND, 13863 initial_values: ["0"], 13864 other_values: [ 13865 // auto-add cannot be tested here because it has no effect when the 13866 // inherited math-style is equal to the default (normal). 13867 "123", 13868 "-123", 13869 "add(123)", 13870 "add(-123)", 13871 "calc(1 + 2*3)", 13872 "add(calc(4 - 2/3))", 13873 ], 13874 invalid_values: ["auto", "1,23", "1.23", "add(1,23)", "add(1.23)"], 13875 }; 13876 13877 gCSSProperties["math-style"] = { 13878 domProp: "mathStyle", 13879 inherited: true, 13880 type: CSS_TYPE_LONGHAND, 13881 initial_values: ["normal"], 13882 other_values: ["compact"], 13883 invalid_values: [], 13884 }; 13885 13886 if (IsCSSPropertyPrefEnabled("mathml.math_shift.enabled")) { 13887 gCSSProperties["math-shift"] = { 13888 domProp: "mathShift", 13889 inherited: true, 13890 type: CSS_TYPE_LONGHAND, 13891 initial_values: ["normal"], 13892 other_values: ["compact"], 13893 invalid_values: [], 13894 }; 13895 } 13896 13897 gCSSProperties["forced-color-adjust"] = { 13898 domProp: "forcedColorAdjust", 13899 inherited: true, 13900 type: CSS_TYPE_LONGHAND, 13901 initial_values: ["auto"], 13902 other_values: ["none"], 13903 invalid_values: [], 13904 }; 13905 13906 gCSSProperties["animation-composition"] = { 13907 domProp: "animationComposition", 13908 inherited: false, 13909 type: CSS_TYPE_LONGHAND, 13910 applies_to_marker: true, 13911 initial_values: ["replace"], 13912 other_values: [ 13913 "add", 13914 "accumulate", 13915 "replace, add", 13916 "add, accumulate", 13917 "replace, add, accumulate", 13918 ], 13919 invalid_values: ["all", "none"], 13920 }; 13921 13922 if (IsCSSPropertyPrefEnabled("layout.css.prefixes.animations")) { 13923 Object.assign(gCSSProperties, { 13924 "-moz-animation": { 13925 domProp: "MozAnimation", 13926 inherited: false, 13927 type: CSS_TYPE_TRUE_SHORTHAND, 13928 applies_to_marker: true, 13929 alias_for: "animation", 13930 subproperties: [ 13931 "animation-name", 13932 "animation-duration", 13933 "animation-timing-function", 13934 "animation-delay", 13935 "animation-direction", 13936 "animation-fill-mode", 13937 "animation-iteration-count", 13938 "animation-play-state", 13939 ], 13940 }, 13941 "-moz-animation-delay": { 13942 domProp: "MozAnimationDelay", 13943 inherited: false, 13944 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13945 applies_to_marker: true, 13946 alias_for: "animation-delay", 13947 subproperties: ["animation-delay"], 13948 }, 13949 "-moz-animation-direction": { 13950 domProp: "MozAnimationDirection", 13951 inherited: false, 13952 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13953 applies_to_marker: true, 13954 alias_for: "animation-direction", 13955 subproperties: ["animation-direction"], 13956 }, 13957 "-moz-animation-duration": { 13958 domProp: "MozAnimationDuration", 13959 inherited: false, 13960 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13961 applies_to_marker: true, 13962 alias_for: "animation-duration", 13963 subproperties: ["animation-duration"], 13964 }, 13965 "-moz-animation-fill-mode": { 13966 domProp: "MozAnimationFillMode", 13967 inherited: false, 13968 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13969 applies_to_marker: true, 13970 alias_for: "animation-fill-mode", 13971 subproperties: ["animation-fill-mode"], 13972 }, 13973 "-moz-animation-iteration-count": { 13974 domProp: "MozAnimationIterationCount", 13975 inherited: false, 13976 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13977 applies_to_marker: true, 13978 alias_for: "animation-iteration-count", 13979 subproperties: ["animation-iteration-count"], 13980 }, 13981 "-moz-animation-name": { 13982 domProp: "MozAnimationName", 13983 inherited: false, 13984 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13985 applies_to_marker: true, 13986 alias_for: "animation-name", 13987 subproperties: ["animation-name"], 13988 }, 13989 "-moz-animation-play-state": { 13990 domProp: "MozAnimationPlayState", 13991 inherited: false, 13992 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 13993 applies_to_marker: true, 13994 alias_for: "animation-play-state", 13995 subproperties: ["animation-play-state"], 13996 }, 13997 "-moz-animation-timing-function": { 13998 domProp: "MozAnimationTimingFunction", 13999 inherited: false, 14000 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14001 applies_to_marker: true, 14002 alias_for: "animation-timing-function", 14003 subproperties: ["animation-timing-function"], 14004 }, 14005 }); 14006 } 14007 14008 if (IsCSSPropertyPrefEnabled("layout.css.scroll-driven-animations.enabled")) { 14009 // Basically, web-platform-tests should cover most cases, so here we only 14010 // put some basic test cases. 14011 gCSSProperties["animation"].subproperties.push("animation-timeline"); 14012 gCSSProperties["-moz-animation"].subproperties.push("animation-timeline"); 14013 gCSSProperties["-webkit-animation"].subproperties.push("animation-timeline"); 14014 14015 gCSSProperties["animation-duration"].initial_values.push("auto"); 14016 14017 gCSSProperties["animation-timeline"] = { 14018 domProp: "animationTimeline", 14019 inherited: false, 14020 type: CSS_TYPE_LONGHAND, 14021 applies_to_marker: true, 14022 initial_values: ["auto"], 14023 other_values: [ 14024 "none", 14025 "--all", 14026 "--ball", 14027 "--mall", 14028 "--color", 14029 "--bounce, --bubble, --opacity", 14030 "--foobar", 14031 "--\\32bounce", 14032 "--bounce", 14033 "--\\32 0bounce", 14034 "--\\2bounce", 14035 "scroll()", 14036 "scroll(block)", 14037 "scroll(inline)", 14038 "scroll(x)", 14039 "scroll(y)", 14040 "scroll(root)", 14041 "scroll(nearest)", 14042 "scroll(inline nearest)", 14043 "scroll(y root)", 14044 "scroll(root x)", 14045 "view()", 14046 "view(inline)", 14047 "view(auto)", 14048 "view(auto 1px)", 14049 "view(inline auto)", 14050 "view(y auto auto)", 14051 "view(x 1px 1%)", 14052 "view(1px 1% block)", 14053 ], 14054 invalid_values: [ 14055 "abc", 14056 "--bounce, initial", 14057 "initial, --bounce", 14058 "--bounce, inherit", 14059 "inherit, --bounce", 14060 "--bounce, unset", 14061 "unset, --bounce", 14062 ], 14063 }; 14064 14065 gCSSProperties["scroll-timeline-name"] = { 14066 domProp: "scrollTimelineName", 14067 inherited: false, 14068 type: CSS_TYPE_LONGHAND, 14069 initial_values: ["none"], 14070 other_values: [ 14071 "--all", 14072 "--auto", 14073 "--ball", 14074 "--mall", 14075 "--color", 14076 "--foobar", 14077 "--\\32bounce", 14078 "--bounce", 14079 "--\\32 0bounce", 14080 "--\\2bounce", 14081 ], 14082 invalid_values: ["abc", "abc --bounce", "10px", "rgb(1, 2, 3)"], 14083 }; 14084 14085 gCSSProperties["scroll-timeline-axis"] = { 14086 domProp: "scrollTimelineAxis", 14087 inherited: false, 14088 type: CSS_TYPE_LONGHAND, 14089 initial_values: ["block"], 14090 other_values: ["inline", "x", "y"], 14091 invalid_values: ["auto", "none", "abc", "horizontal"], 14092 }; 14093 14094 gCSSProperties["scroll-timeline"] = { 14095 domProp: "scrollTimeline", 14096 inherited: false, 14097 type: CSS_TYPE_TRUE_SHORTHAND, 14098 subproperties: ["scroll-timeline-name", "scroll-timeline-axis"], 14099 initial_values: ["none block", "none"], 14100 other_values: [ 14101 "--auto inline", 14102 "--bounce inline", 14103 "--bounce y", 14104 "--\\32bounce inline", 14105 "--bounce block", 14106 "--\\32 0bounce y", 14107 "--\\32 0bounce x", 14108 "--a, --b, --c", 14109 "--a block, --b inline, --c y", 14110 ], 14111 invalid_values: ["", "--bounce --bounce", "x --a", "block --abc"], 14112 }; 14113 14114 gCSSProperties["view-timeline-name"] = { 14115 domProp: "viewTimelineName", 14116 inherited: false, 14117 type: CSS_TYPE_LONGHAND, 14118 initial_values: ["none"], 14119 other_values: [ 14120 "--all", 14121 "--auto", 14122 "--ball", 14123 "--mall", 14124 "--color", 14125 "--foobar", 14126 "--\\32bounce", 14127 "--bounce", 14128 "--\\32 0bounce", 14129 "--\\2bounce", 14130 "--bounce, --abc", 14131 "none, none", 14132 ], 14133 invalid_values: ["abc", "abc --bounce", "10px", "rgb(1, 2, 3)"], 14134 }; 14135 14136 gCSSProperties["view-timeline-axis"] = { 14137 domProp: "viewTimelineAxis", 14138 inherited: false, 14139 type: CSS_TYPE_LONGHAND, 14140 initial_values: ["block"], 14141 other_values: ["inline", "x", "y", "inline, block"], 14142 invalid_values: ["auto", "none", "abc", "inline block", "vertical"], 14143 }; 14144 14145 gCSSProperties["view-timeline-inset"] = { 14146 domProp: "viewTimelineInset", 14147 inherited: false, 14148 type: CSS_TYPE_LONGHAND, 14149 initial_values: ["auto"], 14150 other_values: ["0px", "1%", "1px 1%", "0px 0%", "calc(0px) auto"], 14151 invalid_values: ["none", "rgb(1, 2, 3)", "foo bar", "1px 2px 3px"], 14152 }; 14153 14154 gCSSProperties["view-timeline"] = { 14155 domProp: "viewTimeline", 14156 inherited: false, 14157 type: CSS_TYPE_TRUE_SHORTHAND, 14158 subproperties: ["view-timeline-name", "view-timeline-axis"], 14159 initial_values: ["none block", "none"], 14160 other_values: [ 14161 "--auto inline", 14162 "--bounce inline", 14163 "--bounce y", 14164 "--\\32bounce inline", 14165 "--bounce block", 14166 "--\\32 0bounce y", 14167 "--\\32 0bounce x", 14168 "--a, --b, --c", 14169 "--a block, --b inline, --c y", 14170 ], 14171 invalid_values: ["", ",", "--abc --abc", "x --a", "block --abc"], 14172 }; 14173 } 14174 14175 gCSSProperties["scrollbar-gutter"] = { 14176 domProp: "scrollbarGutter", 14177 inherited: false, 14178 type: CSS_TYPE_LONGHAND, 14179 initial_values: ["auto"], 14180 other_values: ["stable", "stable both-edges", "both-edges stable"], 14181 invalid_values: [ 14182 "auto stable", 14183 "auto both-edges", 14184 "both-edges", 14185 "stable mirror", 14186 // The following values are from scrollbar-gutter extension in CSS 14187 // Overflow 4 https://drafts.csswg.org/css-overflow-4/#sbg-ext. 14188 "always", 14189 "always both-edges", 14190 "always force", 14191 "always both-edges force", 14192 "stable both-edges force", 14193 "match-parent", 14194 ], 14195 }; 14196 14197 gCSSProperties["text-wrap-style"] = { 14198 domProp: "textWrapStyle", 14199 inherited: true, 14200 type: CSS_TYPE_LONGHAND, 14201 applies_to_placeholder: true, 14202 applies_to_cue: true, 14203 applies_to_marker: true, 14204 initial_values: ["auto"], 14205 other_values: ["stable", "balance"], 14206 invalid_values: ["wrap", "nowrap", "normal"], 14207 }; 14208 14209 if (IsCSSPropertyPrefEnabled("layout.css.text-autospace.enabled")) { 14210 Object.assign(gCSSProperties, { 14211 "text-autospace": { 14212 domProp: "textAutospace", 14213 inherited: true, 14214 type: CSS_TYPE_LONGHAND, 14215 applies_to_first_letter: true, 14216 applies_to_first_line: true, 14217 applies_to_placeholder: true, 14218 initial_values: ["no-autospace"], 14219 other_values: [ 14220 "normal", 14221 "auto", 14222 "ideograph-alpha", 14223 "ideograph-numeric", 14224 "ideograph-alpha ideograph-numeric", 14225 "ideograph-alpha insert", 14226 "ideograph-numeric insert", 14227 "ideograph-alpha ideograph-numeric insert", 14228 "insert ideograph-alpha", 14229 "ideograph-alpha insert", 14230 "insert ideograph-numeric", 14231 "ideograph-numeric insert", 14232 "insert ideograph-alpha ideograph-numeric", 14233 "ideograph-alpha ideograph-numeric insert", 14234 // 14235 // Bug 1986500: Uncomment the 'punctuation' values below to enable the tests. 14236 // "punctuation", 14237 // "punctuation ideograph-alpha", 14238 // "ideograph-alpha punctuation", 14239 // "punctuation ideograph-alpha ideograph-numeric", 14240 // "ideograph-alpha ideograph-numeric punctuation", 14241 // "punctuation insert", 14242 // "punctuation ideograph-alpha insert", 14243 // "ideograph-alpha punctuation insert", 14244 // "insert punctuation", 14245 // "punctuation insert", 14246 // "insert punctuation ideograph-alpha", 14247 // "ideograph-alpha punctuation insert", 14248 // "insert punctuation ideograph-alpha ideograph-numeric", 14249 // "ideograph-alpha ideograph-numeric punctuation insert", 14250 // 14251 // Bug 1980111: Uncomment the valid 'replace' values below to enable the tests. 14252 // "ideograph-alpha replace", 14253 // "ideograph-numeric replace", 14254 // "ideograph-alpha ideograph-numeric replace", 14255 // "replace ideograph-alpha", 14256 // "ideograph-alpha replace", 14257 // "replace ideograph-numeric", 14258 // "ideograph-numeric replace", 14259 // "replace ideograph-alpha ideograph-numeric", 14260 // "ideograph-alpha ideograph-numeric replace", 14261 // 14262 // Both bug 1980111 and bug 1986500 required for these: 14263 // "punctuation replace", 14264 // "punctuation ideograph-alpha replace", 14265 // "ideograph-alpha punctuation replace", 14266 // "replace punctuation", 14267 // "punctuation replace", 14268 // "replace punctuation ideograph-alpha", 14269 // "ideograph-alpha punctuation replace", 14270 // "replace punctuation ideograph-alpha ideograph-numeric", 14271 // "ideograph-alpha ideograph-numeric punctuation replace", 14272 ], 14273 invalid_values: [ 14274 "punctuation normal", 14275 "punctuation normal insert", 14276 "insert punctuation normal", 14277 "punctuation normal replace", 14278 "replace punctuation normal", 14279 "normal ideograph-alpha", 14280 "normal ideograph-alpha ideograph-numeric", 14281 "normal punctuation", 14282 "auto ideograph-alpha", 14283 "auto ideograph-alpha ideograph-numeric", 14284 "auto punctuation", 14285 "normal insert", 14286 "normal replace", 14287 "auto insert", 14288 "auto replace", 14289 "13", 14290 "-25", 14291 "rubbish", 14292 ",./!@#$", 14293 "all", 14294 "stretch", 14295 "-10%", 14296 "calc(10% + 1cm)", 14297 ], 14298 }, 14299 }); 14300 } 14301 14302 if (IsCSSPropertyPrefEnabled("layout.css.prefixes.transforms")) { 14303 Object.assign(gCSSProperties, { 14304 "-moz-transform": { 14305 domProp: "MozTransform", 14306 inherited: false, 14307 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14308 alias_for: "transform", 14309 subproperties: ["transform"], 14310 }, 14311 "-moz-transform-origin": { 14312 domProp: "MozTransformOrigin", 14313 inherited: false, 14314 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14315 alias_for: "transform-origin", 14316 subproperties: ["transform-origin"], 14317 }, 14318 "-moz-perspective-origin": { 14319 domProp: "MozPerspectiveOrigin", 14320 inherited: false, 14321 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14322 alias_for: "perspective-origin", 14323 subproperties: ["perspective-origin"], 14324 }, 14325 "-moz-perspective": { 14326 domProp: "MozPerspective", 14327 inherited: false, 14328 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14329 alias_for: "perspective", 14330 subproperties: ["perspective"], 14331 }, 14332 "-moz-backface-visibility": { 14333 domProp: "MozBackfaceVisibility", 14334 inherited: false, 14335 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14336 alias_for: "backface-visibility", 14337 subproperties: ["backface-visibility"], 14338 }, 14339 "-moz-transform-style": { 14340 domProp: "MozTransformStyle", 14341 inherited: false, 14342 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14343 alias_for: "transform-style", 14344 subproperties: ["transform-style"], 14345 }, 14346 }); 14347 } 14348 14349 if (IsCSSPropertyPrefEnabled("layout.css.zoom.enabled")) { 14350 Object.assign(gCSSProperties, { 14351 zoom: { 14352 domProp: "zoom", 14353 inherited: false, 14354 type: CSS_TYPE_LONGHAND, 14355 initial_values: ["normal", "1", "100%", "0", "0%"], 14356 other_values: ["1.5", "2", "150%", "200%"], 14357 invalid_values: ["-1", "-40%"], 14358 }, 14359 }); 14360 } 14361 14362 if (IsCSSPropertyPrefEnabled("layout.css.prefixes.transitions")) { 14363 Object.assign(gCSSProperties, { 14364 "-moz-transition": { 14365 domProp: "MozTransition", 14366 inherited: false, 14367 type: CSS_TYPE_TRUE_SHORTHAND, 14368 applies_to_marker: true, 14369 alias_for: "transition", 14370 subproperties: [ 14371 "transition-property", 14372 "transition-duration", 14373 "transition-timing-function", 14374 "transition-delay", 14375 "transition-behavior", 14376 ], 14377 }, 14378 "-moz-transition-delay": { 14379 domProp: "MozTransitionDelay", 14380 inherited: false, 14381 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14382 applies_to_marker: true, 14383 alias_for: "transition-delay", 14384 subproperties: ["transition-delay"], 14385 }, 14386 "-moz-transition-duration": { 14387 domProp: "MozTransitionDuration", 14388 inherited: false, 14389 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14390 applies_to_marker: true, 14391 alias_for: "transition-duration", 14392 subproperties: ["transition-duration"], 14393 }, 14394 "-moz-transition-property": { 14395 domProp: "MozTransitionProperty", 14396 inherited: false, 14397 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14398 applies_to_marker: true, 14399 alias_for: "transition-property", 14400 subproperties: ["transition-property"], 14401 }, 14402 "-moz-transition-timing-function": { 14403 domProp: "MozTransitionTimingFunction", 14404 inherited: false, 14405 type: CSS_TYPE_SHORTHAND_AND_LONGHAND, 14406 applies_to_marker: true, 14407 alias_for: "transition-timing-function", 14408 subproperties: ["transition-timing-function"], 14409 }, 14410 }); 14411 } 14412 14413 if (IsCSSPropertyPrefEnabled("layout.css.field-sizing.enabled")) { 14414 Object.assign(gCSSProperties, { 14415 "field-sizing": { 14416 domProp: "fieldSizing", 14417 inherited: false, 14418 type: CSS_TYPE_LONGHAND, 14419 initial_values: ["fixed"], 14420 other_values: ["content"], 14421 invalid_values: ["none", "auto"], 14422 }, 14423 }); 14424 } 14425 14426 if (IsCSSPropertyPrefEnabled("dom.viewTransitions.enabled")) { 14427 Object.assign(gCSSProperties, { 14428 "view-transition-name": { 14429 domProp: "viewTransitionName", 14430 inherited: false, 14431 type: CSS_TYPE_LONGHAND, 14432 initial_values: ["none"], 14433 other_values: [ 14434 "all", 14435 "ball", 14436 "mall", 14437 "color", 14438 "foobar", 14439 "\\32bounce", 14440 "-bounce", 14441 "-\\32bounce", 14442 "\\32 0bounce", 14443 "-\\32 0bounce", 14444 "\\2bounce", 14445 "-\\2bounce", 14446 ], 14447 invalid_values: ["auto", "abc --bounce", "10px", "rgb(1, 2, 3)"], 14448 }, 14449 "view-transition-class": { 14450 domProp: "viewTransitionClass", 14451 inherited: false, 14452 type: CSS_TYPE_LONGHAND, 14453 initial_values: ["none"], 14454 other_values: [ 14455 "all", 14456 "ball", 14457 "mall", 14458 "color", 14459 "foobar", 14460 "\\32bounce", 14461 "-bounce", 14462 "-\\32bounce", 14463 "\\32 0bounce", 14464 "-\\32 0bounce", 14465 "\\2bounce", 14466 "-\\2bounce", 14467 "abc abc", 14468 "\\32bounce abc", 14469 ], 14470 invalid_values: ["abc none", "10px", "rgb(1, 2, 3)", "default"], 14471 }, 14472 }); 14473 } 14474 14475 if (IsCSSPropertyPrefEnabled("layout.css.text-decoration-inset.enabled")) { 14476 Object.assign(gCSSProperties, { 14477 "text-decoration-inset": { 14478 domProp: "textDecorationInset", 14479 inherited: false, 14480 type: CSS_TYPE_LONGHAND, 14481 applies_to_first_letter: true, 14482 applies_to_first_line: true, 14483 applies_to_placeholder: true, 14484 initial_values: ["0"], 14485 other_values: [ 14486 "-14px", 14487 "25px", 14488 "100em", 14489 "-45em", 14490 "-40px", 14491 "0 1px", 14492 "4em -2px", 14493 "100px 2in", 14494 "3cm 0", 14495 "-1mm -2px", 14496 "calc(-1mm + 2em)", 14497 "2px calc(2px - 1em)", 14498 "calc(1px) 0", 14499 ], 14500 invalid_values: [ 14501 "13", 14502 "-25", 14503 "rubbish", 14504 ",./!@#$", 14505 "from-font", 14506 "all", 14507 "stretch", 14508 "-10%", 14509 "43%", 14510 "10px5cm", 14511 "10px, 5cm", 14512 "1em 10%", 14513 "0 10%", 14514 "50% 50%", 14515 "100% 8mm", 14516 "100% 0", 14517 "0 solid", 14518 "auto 7px", 14519 "word 9em", 14520 "10em auto", 14521 "1px 2px 3px", 14522 "45em auto 0", 14523 "0px 10% 9em", 14524 "calc(10% + 1cm)", 14525 "0 calc(100% - 10px)", 14526 ], 14527 }, 14528 }); 14529 } 14530 14531 // Copy aliased properties' fields from their alias targets. Keep this logic 14532 // at the bottom of this file to ensure all the aliased properties are 14533 // processed. 14534 for (var prop in gCSSProperties) { 14535 var entry = gCSSProperties[prop]; 14536 if (entry.alias_for) { 14537 var aliasTargetEntry = gCSSProperties[entry.alias_for]; 14538 if (!aliasTargetEntry) { 14539 ok( 14540 false, 14541 "Alias '" + 14542 prop + 14543 "' alias_for field, '" + 14544 entry.alias_for + 14545 "', " + 14546 "must be set to a recognized CSS property in gCSSProperties" 14547 ); 14548 } else { 14549 // Copy 'values' fields & 'prerequisites' field from aliasTargetEntry: 14550 var fieldsToCopy = [ 14551 "initial_values", 14552 "other_values", 14553 "invalid_values", 14554 "quirks_values", 14555 "unbalanced_values", 14556 "prerequisites", 14557 ]; 14558 14559 fieldsToCopy.forEach(function (fieldName) { 14560 // (Don't copy the field if the alias already has something there, 14561 // or if the aliased property doesn't have anything to copy.) 14562 if (!(fieldName in entry) && fieldName in aliasTargetEntry) { 14563 entry[fieldName] = aliasTargetEntry[fieldName]; 14564 } 14565 }); 14566 } 14567 } 14568 }