Bug 1434130 part 13 - Use Servo code to back GetCSSValuesForProperty. r?emilio,tromey draft
authorXidorn Quan <me@upsuper.org>
Thu, 26 Apr 2018 23:18:33 +1000
changeset 788779 bab732c8c531cfca1bcd233f769c25bb2e373773
parent 788778 b638793227b9f6317b540670227d68ad90a76173
child 788780 c4a63f3156c231e068433f20d8542f704f203fe0
child 788892 dcb6ff9ec9f61d2ea99253cd34a9d904f89cfe17
push id108088
push userxquan@mozilla.com
push dateFri, 27 Apr 2018 00:40:56 +0000
reviewersemilio, tromey
bugs1434130, 1456715
milestone61.0a1
Bug 1434130 part 13 - Use Servo code to back GetCSSValuesForProperty. r?emilio,tromey This causes various changes to properties-db.js and also many devtools tests get updated. There are two changes affect multiple tests: * `calc` gets removed from everywhere. We never have it listed in all properties which deserve it, and doing so without much false positive (i.e. properties don't deserve but get it) can be pretty tricky. So they are just removed for now. * The complete color keyword list is no longer included, and instead, "COLOR" is prepended to the list directly. We can probably remove the related code which replaces color keywords with "COLOR" from devtools. Note that, with stylo enabled, the list is already unrelated to what the parsing code uses. We should eventually re-enable the disabled test here after we can get the color list from cssparser in bug 1456715. Other changes to properties-db.js seem to be valid, some of them also affect tests: * `{-webkit-,}align-{content,items,self}` get `first baseline`, `safe`, `unsafe`, and lose `left` and `right`. * `{-moz-,-webkit-,}{animation,transition}{,-timing-function}` has a new `frame` keyword which is a function value in `<timing-function>`. * `{background,{-webkit-,}mask}-position-x` lose `top` and `bottom`, and correspondingly `{background,{-webkit-,}mask}-position-y` lose `left` and `right`. They don't deserve those values. * `{background,{-webkit-,}mask}{,-size}` get `auto`. * `border` shorthand loses `<image>` values as well as other keyword values for `border-image-*` subproperties, because they aren't parsed on the shorthand. * `{-moz-,}border-image{,-width}` get `auto`. * `-moz-context-properties` gets `none`. * `cursor` get some -moz-prefixed values as well as `url`. * `fill` and `stroke` get the color keywords. * `{-webkit-,}filter` get the keywords and function names. * `font` shorthand loses values from many of `font-variant-*` properties because they are not parsed there. * `font-variant` and `font-variant-alternates` get function values of the longhand. * `font-variant-{east-asian,ligatures,numeric}` get `normal`, and `font-variant-ligatures` in addition gets `none`. `font-{feature,variation}-settings` also get `normal`. * `grid` and `grid-template-{areas,columns,rows}` get `none`. * `grid`, `grid-template`, and `grid-template-{columns,rows}` get `auto`, `fit-content`, `minmax`, and `repeat`. * `grid-auto-{columns,rows}` get `auto`, `fit-content` and `minmax`. * `-moz-image-region` gets `auto` and `rect`. * `{-webkit-,}justify-content` lose `baseline`, `last baseline`, and get `safe` and `unsafe`. * `{justify,place}-items` get `first baseline`, `legacy`, `safe`, `unsafe` and lose `auto`. * `{justify,place}-self` and `place-content` get `first baseline`, `safe`, and `unsafe`. * `outline{,-style}` get `hidden`. * `scroll-snap-coordinate` gets `none`, and `scroll-snap-points-{x,y}` gets `none` and `repeat`. * `shape-outside`, `text-emphasis{,-style}` get all the keyword values and function names they deserve. * `stroke-dasharray` gets `none`. * `text-combine-upright` drops `digits` which we never implemented. * `{-moz-,-webkit-,}transform` and `-moz-window-transform` get their transform function list. `accumulatematrix` and `interpolatematrix` aren't real CSS value but they have `#[css(function)]` specified. We should probably remove them at some point. * `will-change` gets `auto`. * All properties accept `<image>` value now gets -webkit-prefixed gradient function names, including * `background{,-image}`, * `{-moz-,-webkit-,}border-image{,-source}`, and * `{-webkit-,}mask{,-image}`. MozReview-Commit-ID: E7Y0CFUFYgW
devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_03.js
devtools/client/shared/test/unit/test_cssColorDatabase.js
devtools/client/sourceeditor/test/css_autocompletion_tests.json
devtools/server/tests/mochitest/test_css-properties.html
devtools/shared/css/generated/properties-db.js
layout/inspector/InspectorUtils.cpp
layout/inspector/tests/test_bug877690.html
layout/inspector/tests/test_is_valid_css_color.html
--- a/devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_03.js
+++ b/devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_03.js
@@ -36,17 +36,17 @@ const TEST_DATA = [
   [":", "style=\"color:aliceblue\"", 13, 22, true],
   ["b", "style=\"color:beige\"", 14, 18, true],
   ["VK_RIGHT", "style=\"color:beige\"", 18, 18, false],
   [";", "style=\"color:beige;\"", 19, 19, false],
   [";", "style=\"color:beige;;\"", 20, 20, false],
   ["VK_LEFT", "style=\"color:beige;;\"", 19, 19, false],
   ["p", "style=\"color:beige;padding;\"", 20, 26, true],
   ["VK_RIGHT", "style=\"color:beige;padding;\"", 26, 26, false],
-  [":", "style=\"color:beige;padding:calc;\"", 27, 31, true],
+  [":", "style=\"color:beige;padding:inherit;\"", 27, 34, true],
   ["0", "style=\"color:beige;padding:0;\"", 28, 28, false],
   ["VK_RETURN", "style=\"color:beige;padding:0;\"",
    -1, -1, false]
 ];
 
 add_task(async function() {
   let {inspector} = await openInspectorForURL(TEST_URL);
 
--- a/devtools/client/shared/test/unit/test_cssColorDatabase.js
+++ b/devtools/client/shared/test/unit/test_cssColorDatabase.js
@@ -42,17 +42,21 @@ function checkOne(colorName, checkName) 
 function run_test() {
   for (let name in cssColors) {
     checkOne(name, true);
   }
   checkOne("transparent", false);
 
   // Now check that platform didn't add a new name when we weren't
   // looking.
-  let names = InspectorUtils.getCSSValuesForProperty("background-color");
-  for (let name of names) {
-    if (name !== "hsl" && name !== "hsla" &&
-        name !== "rgb" && name !== "rgba" &&
-        name !== "inherit" && name !== "initial" && name !== "unset") {
-      checkOne(name, true);
+  // XXX Disable this test for now as getCSSValuesForProperty no longer
+  //     returns the complete color keyword list.
+  if (false) {
+    let names = InspectorUtils.getCSSValuesForProperty("background-color");
+    for (let name of names) {
+      if (name !== "hsl" && name !== "hsla" &&
+          name !== "rgb" && name !== "rgba" &&
+          name !== "inherit" && name !== "initial" && name !== "unset") {
+        checkOne(name, true);
+      }
     }
   }
 }
--- a/devtools/client/sourceeditor/test/css_autocompletion_tests.json
+++ b/devtools/client/sourceeditor/test/css_autocompletion_tests.json
@@ -20,17 +20,17 @@
                "-moz-appearance"]],
     [[12, 20], ["none", "number-input"]],
     [[12, 22], ["none"]],
     [[17, 22], ["hsl", "hsla"]],
     [[19, 10], ["background", "background-attachment", "background-blend-mode",
                 "background-clip", "background-color", "background-image",
                 "background-origin", "background-position", "background-position-x",
                 "background-position-y", "background-repeat", "background-size"]],
-    [[21,  9], ["auto", "calc", "inherit", "initial","unset"]],
+    [[21,  9], ["auto", "inherit", "initial","unset"]],
     [[25, 26], [".devtools-toolbarbutton > tab",
                 ".devtools-toolbarbutton > hbox",
                 ".devtools-toolbarbutton > .toolbarbutton-menubutton-button"]],
     [[25, 31], [".devtools-toolbarbutton > hbox.toolbarbutton-menubutton-button"]],
     [[29, 20], [".devtools-menulist:after", ".devtools-menulist:active"]],
     [[30, 10], ["#devtools-anotherone", "#devtools-itjustgoeson", "#devtools-menu",
                 "#devtools-okstopitnow", "#devtools-toolbarbutton", "#devtools-yetagain"]],
     [[39, 39], [".devtools-toolbarbutton:not([label]) > tab"]],
--- a/devtools/server/tests/mochitest/test_css-properties.html
+++ b/devtools/server/tests/mochitest/test_css-properties.html
@@ -79,17 +79,17 @@ window.onload = function() {
     ok(cssProperties.isKnown("--foob\\{ar"),
       "A CSS variable with escaped character properly evaluates.");
     ok(cssProperties.isKnown("--fübar"),
       "A CSS variable unicode properly evaluates.");
     ok(!cssProperties.isKnown("--foo bar"),
       "A CSS variable with spaces fails");
 
     is(toSortedString(cssProperties.getValues("margin")),
-       toSortedString(["auto", "calc", "inherit", "initial", "unset"]),
+       toSortedString(["auto", "inherit", "initial", "unset"]),
        "Can get values for the CSS margin.");
     is(cssProperties.getValues("foobar").length, 0,
       "Unknown values return an empty array.");
 
     const bgColorValues = cssProperties.getValues("background-color");
     ok(bgColorValues.includes("blanchedalmond"),
       "A property with color values includes blanchedalmond.");
     ok(bgColorValues.includes("papayawhip"),
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -36,16 +36,17 @@ exports.CSS_PROPERTIES = {
       "backwards",
       "both",
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "forwards",
+      "frames",
       "infinite",
       "inherit",
       "initial",
       "linear",
       "none",
       "normal",
       "paused",
       "reverse",
@@ -161,16 +162,17 @@ exports.CSS_PROPERTIES = {
       10
     ],
     "values": [
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
@@ -348,17 +350,16 @@ exports.CSS_PROPERTIES = {
       "border-inline-end-style",
       "border-inline-end-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -423,17 +424,16 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-border-end-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-end-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -451,16 +451,22 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
+      "auto",
       "fill",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeat",
       "repeating-linear-gradient",
@@ -479,17 +485,16 @@ exports.CSS_PROPERTIES = {
       "border-inline-start-style",
       "border-inline-start-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -554,17 +559,16 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-border-start-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -698,17 +702,16 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-column-gap": {
     "isInherited": false,
     "subproperties": [
       "column-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "-moz-column-rule": {
     "isInherited": false,
@@ -717,17 +720,16 @@ exports.CSS_PROPERTIES = {
       "column-rule-style",
       "column-rule-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -792,63 +794,61 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-column-rule-width": {
     "isInherited": false,
     "subproperties": [
       "column-rule-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
   "-moz-column-width": {
     "isInherited": false,
     "subproperties": [
       "column-width"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-columns": {
     "isInherited": false,
     "subproperties": [
       "column-count",
       "column-width"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-context-properties": {
     "isInherited": true,
     "subproperties": [
       "-moz-context-properties"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "none",
       "unset"
     ]
   },
   "-moz-control-character-visibility": {
     "isInherited": true,
     "subproperties": [
       "-moz-control-character-visibility"
     ],
@@ -879,16 +879,17 @@ exports.CSS_PROPERTIES = {
     "isInherited": true,
     "subproperties": [
       "font-feature-settings"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "normal",
       "unset"
     ]
   },
   "-moz-font-language-override": {
     "isInherited": true,
     "subproperties": [
       "font-language-override"
     ],
@@ -929,44 +930,44 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-image-region": {
     "isInherited": true,
     "subproperties": [
       "-moz-image-region"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
+      "auto",
+      "inherit",
+      "initial",
+      "rect",
       "unset"
     ]
   },
   "-moz-margin-end": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-margin-start": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-start"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-orient": {
     "isInherited": false,
     "subproperties": [
@@ -1048,30 +1049,28 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-padding-end": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-end"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-padding-start": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-start"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-perspective": {
     "isInherited": false,
     "subproperties": [
@@ -1088,17 +1087,16 @@ exports.CSS_PROPERTIES = {
   "-moz-perspective-origin": {
     "isInherited": false,
     "subproperties": [
       "perspective-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
-      "calc",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
       "top",
       "unset"
     ]
@@ -1121,17 +1119,16 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-tab-size": {
     "isInherited": true,
     "subproperties": [
       "-moz-tab-size"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-moz-text-size-adjust": {
     "isInherited": true,
     "subproperties": [
@@ -1148,18 +1145,42 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-transform": {
     "isInherited": false,
     "subproperties": [
       "transform"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
+      "accumulatematrix",
+      "inherit",
+      "initial",
+      "interpolatematrix",
+      "matrix",
+      "matrix3d",
+      "none",
+      "perspective",
+      "rotate",
+      "rotate3d",
+      "rotateX",
+      "rotateY",
+      "rotateZ",
+      "scale",
+      "scale3d",
+      "scaleX",
+      "scaleY",
+      "scaleZ",
+      "skew",
+      "skewX",
+      "skewY",
+      "translate",
+      "translate3d",
+      "translateX",
+      "translateY",
+      "translateZ",
       "unset"
     ]
   },
   "-moz-transform-origin": {
     "isInherited": false,
     "subproperties": [
       "transform-origin"
     ],
@@ -1202,16 +1223,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "all",
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "none",
       "step-end",
       "step-start",
       "steps",
       "unset"
@@ -1264,16 +1286,17 @@ exports.CSS_PROPERTIES = {
       10
     ],
     "values": [
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
@@ -1379,18 +1402,42 @@ exports.CSS_PROPERTIES = {
   },
   "-moz-window-transform": {
     "isInherited": false,
     "subproperties": [
       "-moz-window-transform"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
+      "accumulatematrix",
+      "inherit",
+      "initial",
+      "interpolatematrix",
+      "matrix",
+      "matrix3d",
+      "none",
+      "perspective",
+      "rotate",
+      "rotate3d",
+      "rotateX",
+      "rotateY",
+      "rotateZ",
+      "scale",
+      "scale3d",
+      "scaleX",
+      "scaleY",
+      "scaleZ",
+      "skew",
+      "skewX",
+      "skewY",
+      "translate",
+      "translate3d",
+      "translateX",
+      "translateY",
+      "translateZ",
       "unset"
     ]
   },
   "-moz-window-transform-origin": {
     "isInherited": false,
     "subproperties": [
       "-moz-window-transform-origin"
     ],
@@ -1411,80 +1458,83 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "align-content"
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
-      "left",
       "normal",
-      "right",
+      "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "-webkit-align-items": {
     "isInherited": false,
     "subproperties": [
       "align-items"
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
-      "left",
       "normal",
-      "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "-webkit-align-self": {
     "isInherited": false,
     "subproperties": [
       "align-self"
     ],
     "supports": [],
     "values": [
       "auto",
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
-      "left",
       "normal",
-      "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "-webkit-animation": {
     "isInherited": false,
     "subproperties": [
       "animation-duration",
       "animation-timing-function",
@@ -1504,16 +1554,17 @@ exports.CSS_PROPERTIES = {
       "backwards",
       "both",
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "forwards",
+      "frames",
       "infinite",
       "inherit",
       "initial",
       "linear",
       "none",
       "normal",
       "paused",
       "reverse",
@@ -1629,16 +1680,17 @@ exports.CSS_PROPERTIES = {
       10
     ],
     "values": [
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
@@ -1690,16 +1742,17 @@ exports.CSS_PROPERTIES = {
   },
   "-webkit-background-size": {
     "isInherited": false,
     "subproperties": [
       "background-size"
     ],
     "supports": [],
     "values": [
+      "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-webkit-border-bottom-left-radius": {
@@ -1740,16 +1793,22 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
+      "auto",
       "fill",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeat",
       "repeating-linear-gradient",
@@ -1892,17 +1951,16 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "box-shadow"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "none",
       "rgb",
@@ -1927,36 +1985,47 @@ exports.CSS_PROPERTIES = {
   },
   "-webkit-filter": {
     "isInherited": false,
     "subproperties": [
       "filter"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
-      "unset"
+      "blur",
+      "brightness",
+      "contrast",
+      "drop-shadow",
+      "grayscale",
+      "hue-rotate",
+      "inherit",
+      "initial",
+      "invert",
+      "none",
+      "opacity",
+      "saturate",
+      "sepia",
+      "unset",
+      "url"
     ]
   },
   "-webkit-flex": {
     "isInherited": false,
     "subproperties": [
       "flex-grow",
       "flex-shrink",
       "flex-basis"
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "content",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-webkit-flex-basis": {
     "isInherited": false,
@@ -1965,17 +2034,16 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "content",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-webkit-flex-direction": {
     "isInherited": false,
@@ -2054,32 +2122,32 @@ exports.CSS_PROPERTIES = {
   },
   "-webkit-justify-content": {
     "isInherited": false,
     "subproperties": [
       "justify-content"
     ],
     "supports": [],
     "values": [
-      "baseline",
       "center",
       "end",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
-      "last baseline",
       "left",
       "normal",
       "right",
+      "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "-webkit-mask": {
     "isInherited": false,
     "subproperties": [
       "mask-image",
       "mask-repeat",
@@ -2096,18 +2164,24 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
       "add",
       "alpha",
+      "auto",
       "border-box",
       "bottom",
       "center",
       "contain",
       "content-box",
       "cover",
       "exclude",
       "fill-box",
@@ -2184,16 +2258,21 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
       "unset",
@@ -2238,39 +2317,35 @@ exports.CSS_PROPERTIES = {
   },
   "-webkit-mask-position-x": {
     "isInherited": false,
     "subproperties": [
       "mask-position-x"
     ],
     "supports": [],
     "values": [
-      "bottom",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
-      "top",
       "unset"
     ]
   },
   "-webkit-mask-position-y": {
     "isInherited": false,
     "subproperties": [
       "mask-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
-      "left",
-      "right",
       "top",
       "unset"
     ]
   },
   "-webkit-mask-repeat": {
     "isInherited": false,
     "subproperties": [
       "mask-repeat"
@@ -2290,16 +2365,17 @@ exports.CSS_PROPERTIES = {
   },
   "-webkit-mask-size": {
     "isInherited": false,
     "subproperties": [
       "mask-size"
     ],
     "supports": [],
     "values": [
+      "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "-webkit-order": {
@@ -2330,17 +2406,16 @@ exports.CSS_PROPERTIES = {
   "-webkit-perspective-origin": {
     "isInherited": false,
     "subproperties": [
       "perspective-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
-      "calc",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
       "top",
       "unset"
     ]
@@ -2386,17 +2461,16 @@ exports.CSS_PROPERTIES = {
       "-webkit-text-stroke-width",
       "-webkit-text-stroke-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "medium",
       "rgb",
       "rgba",
@@ -2429,34 +2503,57 @@ exports.CSS_PROPERTIES = {
   },
   "-webkit-text-stroke-width": {
     "isInherited": true,
     "subproperties": [
       "-webkit-text-stroke-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
   "-webkit-transform": {
     "isInherited": false,
     "subproperties": [
       "transform"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
+      "accumulatematrix",
+      "inherit",
+      "initial",
+      "interpolatematrix",
+      "matrix",
+      "matrix3d",
+      "none",
+      "perspective",
+      "rotate",
+      "rotate3d",
+      "rotateX",
+      "rotateY",
+      "rotateZ",
+      "scale",
+      "scale3d",
+      "scaleX",
+      "scaleY",
+      "scaleZ",
+      "skew",
+      "skewX",
+      "skewY",
+      "translate",
+      "translate3d",
+      "translateX",
+      "translateY",
+      "translateZ",
       "unset"
     ]
   },
   "-webkit-transform-origin": {
     "isInherited": false,
     "subproperties": [
       "transform-origin"
     ],
@@ -2499,16 +2596,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "all",
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "none",
       "step-end",
       "step-start",
       "steps",
       "unset"
@@ -2561,16 +2659,17 @@ exports.CSS_PROPERTIES = {
       10
     ],
     "values": [
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
@@ -2603,80 +2702,83 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "align-content"
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
-      "left",
       "normal",
-      "right",
+      "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "align-items": {
     "isInherited": false,
     "subproperties": [
       "align-items"
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
-      "left",
       "normal",
-      "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "align-self": {
     "isInherited": false,
     "subproperties": [
       "align-self"
     ],
     "supports": [],
     "values": [
       "auto",
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
-      "left",
       "normal",
-      "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "all": {
     "isInherited": false,
     "subproperties": [
       "align-content",
       "align-items",
@@ -3023,16 +3125,17 @@ exports.CSS_PROPERTIES = {
       "backwards",
       "both",
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
       "forwards",
+      "frames",
       "infinite",
       "inherit",
       "initial",
       "linear",
       "none",
       "normal",
       "paused",
       "reverse",
@@ -3148,16 +3251,17 @@ exports.CSS_PROPERTIES = {
       10
     ],
     "values": [
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
@@ -3196,16 +3300,22 @@ exports.CSS_PROPERTIES = {
     "values": [
       "COLOR",
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
+      "auto",
       "border-box",
       "bottom",
       "center",
       "contain",
       "content-box",
       "cover",
       "currentColor",
       "fixed",
@@ -3328,16 +3438,21 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
       "unset",
@@ -3379,39 +3494,35 @@ exports.CSS_PROPERTIES = {
   },
   "background-position-x": {
     "isInherited": false,
     "subproperties": [
       "background-position-x"
     ],
     "supports": [],
     "values": [
-      "bottom",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
-      "top",
       "unset"
     ]
   },
   "background-position-y": {
     "isInherited": false,
     "subproperties": [
       "background-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
-      "left",
-      "right",
       "top",
       "unset"
     ]
   },
   "background-repeat": {
     "isInherited": false,
     "subproperties": [
       "background-repeat"
@@ -3431,32 +3542,36 @@ exports.CSS_PROPERTIES = {
   },
   "background-size": {
     "isInherited": false,
     "subproperties": [
       "background-size"
     ],
     "supports": [],
     "values": [
+      "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "block-size": {
     "isInherited": false,
     "subproperties": [
       "block-size"
     ],
     "supports": [],
     "values": [
+      "-moz-available",
+      "-moz-fit-content",
+      "-moz-max-content",
+      "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "border": {
     "isInherited": false,
     "subproperties": [
@@ -3478,70 +3593,52 @@ exports.CSS_PROPERTIES = {
       "border-image-outset",
       "border-image-repeat"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "-moz-element",
-      "-moz-image-rect",
-      "-moz-linear-gradient",
-      "-moz-radial-gradient",
-      "-moz-repeating-linear-gradient",
-      "-moz-repeating-radial-gradient",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
-      "fill",
       "groove",
       "hidden",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
-      "linear-gradient",
       "medium",
       "none",
       "outset",
-      "radial-gradient",
-      "repeat",
-      "repeating-linear-gradient",
-      "repeating-radial-gradient",
       "rgb",
       "rgba",
       "ridge",
-      "round",
       "solid",
-      "space",
-      "stretch",
       "thick",
       "thin",
       "transparent",
-      "unset",
-      "url"
+      "unset"
     ]
   },
   "border-block-end": {
     "isInherited": false,
     "subproperties": [
       "border-block-end-width",
       "border-block-end-style",
       "border-block-end-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -3606,17 +3703,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-block-end-width": {
     "isInherited": false,
     "subproperties": [
       "border-block-end-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -3627,17 +3723,16 @@ exports.CSS_PROPERTIES = {
       "border-block-start-style",
       "border-block-start-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -3702,17 +3797,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-block-start-width": {
     "isInherited": false,
     "subproperties": [
       "border-block-start-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -3723,17 +3817,16 @@ exports.CSS_PROPERTIES = {
       "border-bottom-style",
       "border-bottom-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -3822,17 +3915,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-bottom-width": {
     "isInherited": false,
     "subproperties": [
       "border-bottom-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -3888,16 +3980,22 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
+      "auto",
       "fill",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeat",
       "repeating-linear-gradient",
@@ -3960,16 +4058,21 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
       "unset",
@@ -3978,16 +4081,17 @@ exports.CSS_PROPERTIES = {
   },
   "border-image-width": {
     "isInherited": false,
     "subproperties": [
       "border-image-width"
     ],
     "supports": [],
     "values": [
+      "auto",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "border-inline-end": {
     "isInherited": false,
     "subproperties": [
@@ -3995,17 +4099,16 @@ exports.CSS_PROPERTIES = {
       "border-inline-end-style",
       "border-inline-end-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -4070,17 +4173,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-inline-end-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-end-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -4091,17 +4193,16 @@ exports.CSS_PROPERTIES = {
       "border-inline-start-style",
       "border-inline-start-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -4166,17 +4267,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-inline-start-width": {
     "isInherited": false,
     "subproperties": [
       "border-inline-start-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -4187,17 +4287,16 @@ exports.CSS_PROPERTIES = {
       "border-left-style",
       "border-left-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -4262,17 +4361,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-left-width": {
     "isInherited": false,
     "subproperties": [
       "border-left-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -4298,17 +4396,16 @@ exports.CSS_PROPERTIES = {
       "border-right-style",
       "border-right-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -4373,17 +4470,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-right-width": {
     "isInherited": false,
     "subproperties": [
       "border-right-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -4431,17 +4527,16 @@ exports.CSS_PROPERTIES = {
       "border-top-style",
       "border-top-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -4530,17 +4625,16 @@ exports.CSS_PROPERTIES = {
   },
   "border-top-width": {
     "isInherited": false,
     "subproperties": [
       "border-top-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -4549,34 +4643,32 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "border-top-width",
       "border-right-width",
       "border-bottom-width",
       "border-left-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
   "bottom": {
     "isInherited": false,
     "subproperties": [
       "bottom"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "box-decoration-break": {
     "isInherited": false,
     "subproperties": [
@@ -4596,17 +4688,16 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "box-shadow"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "none",
       "rgb",
@@ -4834,17 +4925,16 @@ exports.CSS_PROPERTIES = {
   },
   "column-gap": {
     "isInherited": false,
     "subproperties": [
       "column-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "column-rule": {
     "isInherited": false,
@@ -4853,17 +4943,16 @@ exports.CSS_PROPERTIES = {
       "column-rule-style",
       "column-rule-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
       "hidden",
       "hsl",
       "hsla",
@@ -4928,49 +5017,46 @@ exports.CSS_PROPERTIES = {
   },
   "column-rule-width": {
     "isInherited": false,
     "subproperties": [
       "column-rule-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
   "column-width": {
     "isInherited": false,
     "subproperties": [
       "column-width"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "columns": {
     "isInherited": false,
     "subproperties": [
       "column-count",
       "column-width"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "content": {
     "isInherited": false,
     "subproperties": [
@@ -5022,16 +5108,20 @@ exports.CSS_PROPERTIES = {
   },
   "cursor": {
     "isInherited": true,
     "subproperties": [
       "cursor"
     ],
     "supports": [],
     "values": [
+      "-moz-grab",
+      "-moz-grabbing",
+      "-moz-zoom-in",
+      "-moz-zoom-out",
       "alias",
       "all-scroll",
       "auto",
       "cell",
       "col-resize",
       "context-menu",
       "copy",
       "crosshair",
@@ -5056,16 +5146,17 @@ exports.CSS_PROPERTIES = {
       "pointer",
       "progress",
       "row-resize",
       "s-resize",
       "se-resize",
       "sw-resize",
       "text",
       "unset",
+      "url",
       "vertical-text",
       "w-resize",
       "wait",
       "zoom-in",
       "zoom-out"
     ]
   },
   "direction": {
@@ -5177,21 +5268,30 @@ exports.CSS_PROPERTIES = {
     "isInherited": true,
     "subproperties": [
       "fill"
     ],
     "supports": [
       2
     ],
     "values": [
+      "COLOR",
       "context-fill",
       "context-stroke",
-      "inherit",
-      "initial",
-      "unset"
+      "currentColor",
+      "hsl",
+      "hsla",
+      "inherit",
+      "initial",
+      "none",
+      "rgb",
+      "rgba",
+      "transparent",
+      "unset",
+      "url"
     ]
   },
   "fill-opacity": {
     "isInherited": true,
     "subproperties": [
       "fill-opacity"
     ],
     "supports": [],
@@ -5219,36 +5319,47 @@ exports.CSS_PROPERTIES = {
   },
   "filter": {
     "isInherited": false,
     "subproperties": [
       "filter"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
-      "unset"
+      "blur",
+      "brightness",
+      "contrast",
+      "drop-shadow",
+      "grayscale",
+      "hue-rotate",
+      "inherit",
+      "initial",
+      "invert",
+      "none",
+      "opacity",
+      "saturate",
+      "sepia",
+      "unset",
+      "url"
     ]
   },
   "flex": {
     "isInherited": false,
     "subproperties": [
       "flex-grow",
       "flex-shrink",
       "flex-basis"
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "content",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "flex-basis": {
     "isInherited": false,
@@ -5257,17 +5368,16 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "content",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "flex-direction": {
     "isInherited": false,
@@ -5413,88 +5523,56 @@ exports.CSS_PROPERTIES = {
       "font-variant-caps",
       "font-variant-east-asian",
       "font-variant-ligatures",
       "font-variant-numeric",
       "font-variant-position"
     ],
     "supports": [],
     "values": [
-      "-moz-block-height",
       "-moz-button",
       "-moz-desktop",
       "-moz-dialog",
       "-moz-document",
       "-moz-field",
       "-moz-info",
       "-moz-list",
       "-moz-pull-down-menu",
       "-moz-window",
       "-moz-workspace",
       "all-petite-caps",
       "all-small-caps",
-      "auto",
       "bold",
       "bolder",
-      "calc",
       "caption",
-      "common-ligatures",
       "condensed",
-      "contextual",
-      "diagonal-fractions",
-      "discretionary-ligatures",
       "expanded",
       "extra-condensed",
       "extra-expanded",
-      "full-width",
-      "historical-forms",
-      "historical-ligatures",
       "icon",
       "inherit",
       "initial",
       "italic",
-      "jis04",
-      "jis78",
-      "jis83",
-      "jis90",
       "large",
       "larger",
       "lighter",
-      "lining-nums",
       "medium",
       "menu",
       "message-box",
-      "no-common-ligatures",
-      "no-contextual",
-      "no-discretionary-ligatures",
-      "no-historical-ligatures",
-      "none",
       "normal",
       "oblique",
-      "oldstyle-nums",
-      "ordinal",
       "petite-caps",
-      "proportional-nums",
-      "proportional-width",
-      "ruby",
       "semi-condensed",
       "semi-expanded",
-      "simplified",
-      "slashed-zero",
       "small",
       "small-caps",
       "small-caption",
       "smaller",
-      "stacked-fractions",
       "status-bar",
-      "sub",
-      "super",
-      "tabular-nums",
       "titling-caps",
-      "traditional",
       "ultra-condensed",
       "ultra-expanded",
       "unicase",
       "unset",
       "x-large",
       "x-small",
       "xx-large",
       "xx-small"
@@ -5516,16 +5594,17 @@ exports.CSS_PROPERTIES = {
     "isInherited": true,
     "subproperties": [
       "font-feature-settings"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "normal",
       "unset"
     ]
   },
   "font-kerning": {
     "isInherited": true,
     "subproperties": [
       "font-kerning"
     ],
@@ -5568,17 +5647,16 @@ exports.CSS_PROPERTIES = {
   },
   "font-size": {
     "isInherited": true,
     "subproperties": [
       "font-size"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "large",
       "larger",
       "medium",
       "small",
       "smaller",
       "unset",
@@ -5660,16 +5738,18 @@ exports.CSS_PROPERTIES = {
       "font-variant-ligatures",
       "font-variant-numeric",
       "font-variant-position"
     ],
     "supports": [],
     "values": [
       "all-petite-caps",
       "all-small-caps",
+      "annotation",
+      "character-variant",
       "common-ligatures",
       "contextual",
       "diagonal-fractions",
       "discretionary-ligatures",
       "full-width",
       "historical-forms",
       "historical-ligatures",
       "inherit",
@@ -5678,46 +5758,58 @@ exports.CSS_PROPERTIES = {
       "jis78",
       "jis83",
       "jis90",
       "lining-nums",
       "no-common-ligatures",
       "no-contextual",
       "no-discretionary-ligatures",
       "no-historical-ligatures",
+      "none",
       "normal",
       "oldstyle-nums",
       "ordinal",
+      "ornaments",
       "petite-caps",
       "proportional-nums",
       "proportional-width",
       "ruby",
       "simplified",
       "slashed-zero",
       "small-caps",
       "stacked-fractions",
+      "styleset",
+      "stylistic",
       "sub",
       "super",
+      "swash",
       "tabular-nums",
       "titling-caps",
       "traditional",
       "unicase",
       "unset"
     ]
   },
   "font-variant-alternates": {
     "isInherited": true,
     "subproperties": [
       "font-variant-alternates"
     ],
     "supports": [],
     "values": [
+      "annotation",
+      "character-variant",
       "historical-forms",
       "inherit",
       "initial",
+      "normal",
+      "ornaments",
+      "styleset",
+      "stylistic",
+      "swash",
       "unset"
     ]
   },
   "font-variant-caps": {
     "isInherited": true,
     "subproperties": [
       "font-variant-caps"
     ],
@@ -5744,16 +5836,17 @@ exports.CSS_PROPERTIES = {
     "values": [
       "full-width",
       "inherit",
       "initial",
       "jis04",
       "jis78",
       "jis83",
       "jis90",
+      "normal",
       "proportional-width",
       "ruby",
       "simplified",
       "traditional",
       "unset"
     ]
   },
   "font-variant-ligatures": {
@@ -5768,30 +5861,33 @@ exports.CSS_PROPERTIES = {
       "discretionary-ligatures",
       "historical-ligatures",
       "inherit",
       "initial",
       "no-common-ligatures",
       "no-contextual",
       "no-discretionary-ligatures",
       "no-historical-ligatures",
+      "none",
+      "normal",
       "unset"
     ]
   },
   "font-variant-numeric": {
     "isInherited": true,
     "subproperties": [
       "font-variant-numeric"
     ],
     "supports": [],
     "values": [
       "diagonal-fractions",
       "inherit",
       "initial",
       "lining-nums",
+      "normal",
       "oldstyle-nums",
       "ordinal",
       "proportional-nums",
       "slashed-zero",
       "stacked-fractions",
       "tabular-nums",
       "unset"
     ]
@@ -5815,16 +5911,17 @@ exports.CSS_PROPERTIES = {
     "isInherited": true,
     "subproperties": [
       "font-variation-settings"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "normal",
       "unset"
     ]
   },
   "font-weight": {
     "isInherited": true,
     "subproperties": [
       "font-weight"
     ],
@@ -5842,17 +5939,16 @@ exports.CSS_PROPERTIES = {
   "gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap",
       "column-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "grid": {
     "isInherited": false,
@@ -5861,22 +5957,27 @@ exports.CSS_PROPERTIES = {
       "grid-template-rows",
       "grid-template-columns",
       "grid-auto-flow",
       "grid-auto-rows",
       "grid-auto-columns"
     ],
     "supports": [],
     "values": [
+      "auto",
       "column",
       "dense",
+      "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "minmax",
+      "none",
+      "repeat",
       "row",
       "unset"
     ]
   },
   "grid-area": {
     "isInherited": false,
     "subproperties": [
       "grid-row-start",
@@ -5893,20 +5994,23 @@ exports.CSS_PROPERTIES = {
   },
   "grid-auto-columns": {
     "isInherited": false,
     "subproperties": [
       "grid-auto-columns"
     ],
     "supports": [],
     "values": [
+      "auto",
+      "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "minmax",
       "unset"
     ]
   },
   "grid-auto-flow": {
     "isInherited": false,
     "subproperties": [
       "grid-auto-flow"
     ],
@@ -5922,20 +6026,23 @@ exports.CSS_PROPERTIES = {
   },
   "grid-auto-rows": {
     "isInherited": false,
     "subproperties": [
       "grid-auto-rows"
     ],
     "supports": [],
     "values": [
+      "auto",
+      "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "minmax",
       "unset"
     ]
   },
   "grid-column": {
     "isInherited": false,
     "subproperties": [
       "grid-column-start",
       "grid-column-end"
@@ -5961,17 +6068,16 @@ exports.CSS_PROPERTIES = {
   },
   "grid-column-gap": {
     "isInherited": false,
     "subproperties": [
       "column-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "grid-column-start": {
     "isInherited": false,
@@ -5988,17 +6094,16 @@ exports.CSS_PROPERTIES = {
   "grid-gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap",
       "column-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "grid-row": {
     "isInherited": false,
@@ -6027,17 +6132,16 @@ exports.CSS_PROPERTIES = {
   },
   "grid-row-gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "grid-row-start": {
     "isInherited": false,
@@ -6055,76 +6159,91 @@ exports.CSS_PROPERTIES = {
     "isInherited": false,
     "subproperties": [
       "grid-template-areas",
       "grid-template-rows",
       "grid-template-columns"
     ],
     "supports": [],
     "values": [
+      "auto",
+      "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "minmax",
+      "none",
+      "repeat",
       "unset"
     ]
   },
   "grid-template-areas": {
     "isInherited": false,
     "subproperties": [
       "grid-template-areas"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "none",
       "unset"
     ]
   },
   "grid-template-columns": {
     "isInherited": false,
     "subproperties": [
       "grid-template-columns"
     ],
     "supports": [],
     "values": [
+      "auto",
+      "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "minmax",
+      "none",
+      "repeat",
       "unset"
     ]
   },
   "grid-template-rows": {
     "isInherited": false,
     "subproperties": [
       "grid-template-rows"
     ],
     "supports": [],
     "values": [
+      "auto",
+      "fit-content",
       "inherit",
       "initial",
       "max-content",
       "min-content",
+      "minmax",
+      "none",
+      "repeat",
       "unset"
     ]
   },
   "height": {
     "isInherited": false,
     "subproperties": [
       "height"
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "hyphens": {
     "isInherited": true,
     "subproperties": [
@@ -6194,17 +6313,16 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "isolation": {
     "isInherited": false,
     "subproperties": [
@@ -6221,109 +6339,113 @@ exports.CSS_PROPERTIES = {
   },
   "justify-content": {
     "isInherited": false,
     "subproperties": [
       "justify-content"
     ],
     "supports": [],
     "values": [
-      "baseline",
       "center",
       "end",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
-      "last baseline",
       "left",
       "normal",
       "right",
+      "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "justify-items": {
     "isInherited": false,
     "subproperties": [
       "justify-items"
     ],
     "supports": [],
     "values": [
-      "auto",
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
+      "legacy",
       "normal",
       "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "justify-self": {
     "isInherited": false,
     "subproperties": [
       "justify-self"
     ],
     "supports": [],
     "values": [
       "auto",
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "normal",
       "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "left": {
     "isInherited": false,
     "subproperties": [
       "left"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "letter-spacing": {
     "isInherited": true,
     "subproperties": [
       "letter-spacing"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "lighting-color": {
     "isInherited": false,
@@ -6349,17 +6471,16 @@ exports.CSS_PROPERTIES = {
   "line-height": {
     "isInherited": true,
     "subproperties": [
       "line-height"
     ],
     "supports": [],
     "values": [
       "-moz-block-height",
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "list-style": {
     "isInherited": true,
@@ -6538,129 +6659,120 @@ exports.CSS_PROPERTIES = {
       "margin-top",
       "margin-right",
       "margin-bottom",
       "margin-left"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-block-end": {
     "isInherited": false,
     "subproperties": [
       "margin-block-end"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-block-start": {
     "isInherited": false,
     "subproperties": [
       "margin-block-start"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-bottom": {
     "isInherited": false,
     "subproperties": [
       "margin-bottom"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-inline-end": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-inline-start": {
     "isInherited": false,
     "subproperties": [
       "margin-inline-start"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-left": {
     "isInherited": false,
     "subproperties": [
       "margin-left"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-right": {
     "isInherited": false,
     "subproperties": [
       "margin-right"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "margin-top": {
     "isInherited": false,
     "subproperties": [
       "margin-top"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "marker": {
     "isInherited": true,
     "subproperties": [
@@ -6737,18 +6849,24 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
       "add",
       "alpha",
+      "auto",
       "border-box",
       "bottom",
       "center",
       "contain",
       "content-box",
       "cover",
       "exclude",
       "fill-box",
@@ -6825,16 +6943,21 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "-moz-element",
       "-moz-image-rect",
       "-moz-linear-gradient",
       "-moz-radial-gradient",
       "-moz-repeating-linear-gradient",
       "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
       "inherit",
       "initial",
       "linear-gradient",
       "none",
       "radial-gradient",
       "repeating-linear-gradient",
       "repeating-radial-gradient",
       "unset",
@@ -6894,39 +7017,35 @@ exports.CSS_PROPERTIES = {
   },
   "mask-position-x": {
     "isInherited": false,
     "subproperties": [
       "mask-position-x"
     ],
     "supports": [],
     "values": [
-      "bottom",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
-      "top",
       "unset"
     ]
   },
   "mask-position-y": {
     "isInherited": false,
     "subproperties": [
       "mask-position-y"
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
-      "left",
-      "right",
       "top",
       "unset"
     ]
   },
   "mask-repeat": {
     "isInherited": false,
     "subproperties": [
       "mask-repeat"
@@ -6946,16 +7065,17 @@ exports.CSS_PROPERTIES = {
   },
   "mask-size": {
     "isInherited": false,
     "subproperties": [
       "mask-size"
     ],
     "supports": [],
     "values": [
+      "auto",
       "contain",
       "cover",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "mask-type": {
@@ -6974,17 +7094,20 @@ exports.CSS_PROPERTIES = {
   },
   "max-block-size": {
     "isInherited": false,
     "subproperties": [
       "max-block-size"
     ],
     "supports": [],
     "values": [
-      "calc",
+      "-moz-available",
+      "-moz-fit-content",
+      "-moz-max-content",
+      "-moz-min-content",
       "inherit",
       "initial",
       "none",
       "unset"
     ]
   },
   "max-height": {
     "isInherited": false,
@@ -6992,17 +7115,16 @@ exports.CSS_PROPERTIES = {
       "max-height"
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
-      "calc",
       "inherit",
       "initial",
       "none",
       "unset"
     ]
   },
   "max-inline-size": {
     "isInherited": false,
@@ -7010,17 +7132,16 @@ exports.CSS_PROPERTIES = {
       "max-inline-size"
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
-      "calc",
       "inherit",
       "initial",
       "none",
       "unset"
     ]
   },
   "max-width": {
     "isInherited": false,
@@ -7028,32 +7149,34 @@ exports.CSS_PROPERTIES = {
       "max-width"
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
-      "calc",
       "inherit",
       "initial",
       "none",
       "unset"
     ]
   },
   "min-block-size": {
     "isInherited": false,
     "subproperties": [
       "min-block-size"
     ],
     "supports": [],
     "values": [
+      "-moz-available",
+      "-moz-fit-content",
+      "-moz-max-content",
+      "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "min-height": {
     "isInherited": false,
     "subproperties": [
@@ -7061,17 +7184,16 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "min-inline-size": {
     "isInherited": false,
     "subproperties": [
@@ -7079,17 +7201,16 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "min-width": {
     "isInherited": false,
     "subproperties": [
@@ -7097,17 +7218,16 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "mix-blend-mode": {
     "isInherited": false,
     "subproperties": [
@@ -7156,17 +7276,16 @@ exports.CSS_PROPERTIES = {
   "object-position": {
     "isInherited": false,
     "subproperties": [
       "object-position"
     ],
     "supports": [],
     "values": [
       "bottom",
-      "calc",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
       "top",
       "unset"
     ]
@@ -7174,59 +7293,55 @@ exports.CSS_PROPERTIES = {
   "offset-block-end": {
     "isInherited": false,
     "subproperties": [
       "offset-block-end"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "offset-block-start": {
     "isInherited": false,
     "subproperties": [
       "offset-block-start"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "offset-inline-end": {
     "isInherited": false,
     "subproperties": [
       "offset-inline-end"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "offset-inline-start": {
     "isInherited": false,
     "subproperties": [
       "offset-inline-start"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "opacity": {
     "isInherited": false,
     "subproperties": [
@@ -7259,22 +7374,22 @@ exports.CSS_PROPERTIES = {
       "outline-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
       "auto",
-      "calc",
       "currentColor",
       "dashed",
       "dotted",
       "double",
       "groove",
+      "hidden",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "inset",
       "medium",
       "none",
       "outset",
@@ -7311,17 +7426,16 @@ exports.CSS_PROPERTIES = {
   },
   "outline-offset": {
     "isInherited": false,
     "subproperties": [
       "outline-offset"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "outline-style": {
     "isInherited": false,
     "subproperties": [
@@ -7329,16 +7443,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "auto",
       "dashed",
       "dotted",
       "double",
       "groove",
+      "hidden",
       "inherit",
       "initial",
       "inset",
       "none",
       "outset",
       "ridge",
       "solid",
       "unset"
@@ -7346,17 +7461,16 @@ exports.CSS_PROPERTIES = {
   },
   "outline-width": {
     "isInherited": false,
     "subproperties": [
       "outline-width"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "medium",
       "thick",
       "thin",
       "unset"
     ]
   },
@@ -7477,121 +7591,112 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "padding-top",
       "padding-right",
       "padding-bottom",
       "padding-left"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-block-end": {
     "isInherited": false,
     "subproperties": [
       "padding-block-end"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-block-start": {
     "isInherited": false,
     "subproperties": [
       "padding-block-start"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-bottom": {
     "isInherited": false,
     "subproperties": [
       "padding-bottom"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-inline-end": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-end"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-inline-start": {
     "isInherited": false,
     "subproperties": [
       "padding-inline-start"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-left": {
     "isInherited": false,
     "subproperties": [
       "padding-left"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-right": {
     "isInherited": false,
     "subproperties": [
       "padding-right"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "padding-top": {
     "isInherited": false,
     "subproperties": [
       "padding-top"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "page-break-after": {
     "isInherited": false,
     "subproperties": [
@@ -7668,17 +7773,16 @@ exports.CSS_PROPERTIES = {
   "perspective-origin": {
     "isInherited": false,
     "subproperties": [
       "perspective-origin"
     ],
     "supports": [],
     "values": [
       "bottom",
-      "calc",
       "center",
       "inherit",
       "initial",
       "left",
       "right",
       "top",
       "unset"
     ]
@@ -7689,83 +7793,92 @@ exports.CSS_PROPERTIES = {
       "align-content",
       "justify-content"
     ],
     "supports": [],
     "values": [
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "normal",
       "right",
+      "safe",
       "space-around",
       "space-between",
       "space-evenly",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "place-items": {
     "isInherited": false,
     "subproperties": [
       "align-items",
       "justify-items"
     ],
     "supports": [],
     "values": [
-      "auto",
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
+      "legacy",
       "normal",
       "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "place-self": {
     "isInherited": false,
     "subproperties": [
       "align-self",
       "justify-self"
     ],
     "supports": [],
     "values": [
       "auto",
       "baseline",
       "center",
       "end",
+      "first baseline",
       "flex-end",
       "flex-start",
       "inherit",
       "initial",
       "last baseline",
       "left",
       "normal",
       "right",
+      "safe",
       "self-end",
       "self-start",
       "start",
       "stretch",
+      "unsafe",
       "unset"
     ]
   },
   "pointer-events": {
     "isInherited": true,
     "subproperties": [
       "pointer-events"
     ],
@@ -7835,30 +7948,28 @@ exports.CSS_PROPERTIES = {
   "right": {
     "isInherited": false,
     "subproperties": [
       "right"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "row-gap": {
     "isInherited": false,
     "subproperties": [
       "row-gap"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "ruby-align": {
     "isInherited": true,
@@ -7911,16 +8022,17 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "bottom",
       "center",
       "inherit",
       "initial",
       "left",
+      "none",
       "right",
       "top",
       "unset"
     ]
   },
   "scroll-snap-destination": {
     "isInherited": false,
     "subproperties": [
@@ -7942,28 +8054,32 @@ exports.CSS_PROPERTIES = {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-points-x"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "none",
+      "repeat",
       "unset"
     ]
   },
   "scroll-snap-points-y": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-points-y"
     ],
     "supports": [],
     "values": [
       "inherit",
       "initial",
+      "none",
+      "repeat",
       "unset"
     ]
   },
   "scroll-snap-type": {
     "isInherited": false,
     "subproperties": [
       "scroll-snap-type-x",
       "scroll-snap-type-y"
@@ -8022,34 +8138,58 @@ exports.CSS_PROPERTIES = {
   },
   "shape-margin": {
     "isInherited": false,
     "subproperties": [
       "shape-margin"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "shape-outside": {
     "isInherited": false,
     "subproperties": [
       "shape-outside"
     ],
     "supports": [
       4
     ],
     "values": [
-      "inherit",
-      "initial",
-      "unset"
+      "-moz-element",
+      "-moz-image-rect",
+      "-moz-linear-gradient",
+      "-moz-radial-gradient",
+      "-moz-repeating-linear-gradient",
+      "-moz-repeating-radial-gradient",
+      "-webkit-gradient",
+      "-webkit-linear-gradient",
+      "-webkit-radial-gradient",
+      "-webkit-repeating-linear-gradient",
+      "-webkit-repeating-radial-gradient",
+      "border-box",
+      "circle",
+      "content-box",
+      "ellipse",
+      "inherit",
+      "initial",
+      "inset",
+      "linear-gradient",
+      "margin-box",
+      "none",
+      "padding-box",
+      "polygon",
+      "radial-gradient",
+      "repeating-linear-gradient",
+      "repeating-radial-gradient",
+      "unset",
+      "url"
     ]
   },
   "shape-rendering": {
     "isInherited": true,
     "subproperties": [
       "shape-rendering"
     ],
     "supports": [],
@@ -8100,33 +8240,43 @@ exports.CSS_PROPERTIES = {
     "isInherited": true,
     "subproperties": [
       "stroke"
     ],
     "supports": [
       2
     ],
     "values": [
+      "COLOR",
       "context-fill",
       "context-stroke",
-      "inherit",
-      "initial",
-      "unset"
+      "currentColor",
+      "hsl",
+      "hsla",
+      "inherit",
+      "initial",
+      "none",
+      "rgb",
+      "rgba",
+      "transparent",
+      "unset",
+      "url"
     ]
   },
   "stroke-dasharray": {
     "isInherited": true,
     "subproperties": [
       "stroke-dasharray"
     ],
     "supports": [],
     "values": [
       "context-value",
       "inherit",
       "initial",
+      "none",
       "unset"
     ]
   },
   "stroke-dashoffset": {
     "isInherited": true,
     "subproperties": [
       "stroke-dashoffset"
     ],
@@ -8280,17 +8430,16 @@ exports.CSS_PROPERTIES = {
   "text-combine-upright": {
     "isInherited": true,
     "subproperties": [
       "text-combine-upright"
     ],
     "supports": [],
     "values": [
       "all",
-      "digits",
       "inherit",
       "initial",
       "none",
       "unset"
     ]
   },
   "text-decoration": {
     "isInherited": false,
@@ -8388,24 +8537,32 @@ exports.CSS_PROPERTIES = {
       "text-emphasis-style",
       "text-emphasis-color"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
+      "circle",
       "currentColor",
+      "dot",
+      "double-circle",
+      "filled",
       "hsl",
       "hsla",
       "inherit",
       "initial",
+      "none",
+      "open",
       "rgb",
       "rgba",
+      "sesame",
       "transparent",
+      "triangle",
       "unset"
     ]
   },
   "text-emphasis-color": {
     "isInherited": true,
     "subproperties": [
       "text-emphasis-color"
     ],
@@ -8443,29 +8600,36 @@ exports.CSS_PROPERTIES = {
   },
   "text-emphasis-style": {
     "isInherited": true,
     "subproperties": [
       "text-emphasis-style"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
+      "circle",
+      "dot",
+      "double-circle",
+      "filled",
+      "inherit",
+      "initial",
+      "none",
+      "open",
+      "sesame",
+      "triangle",
       "unset"
     ]
   },
   "text-indent": {
     "isInherited": true,
     "subproperties": [
       "text-indent"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "text-justify": {
     "isInherited": true,
     "subproperties": [
@@ -8534,17 +8698,16 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "text-shadow"
     ],
     "supports": [
       2
     ],
     "values": [
       "COLOR",
-      "calc",
       "currentColor",
       "hsl",
       "hsla",
       "inherit",
       "initial",
       "none",
       "rgb",
       "rgba",
@@ -8572,17 +8735,16 @@ exports.CSS_PROPERTIES = {
   "top": {
     "isInherited": false,
     "subproperties": [
       "top"
     ],
     "supports": [],
     "values": [
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "touch-action": {
     "isInherited": false,
     "subproperties": [
@@ -8602,18 +8764,42 @@ exports.CSS_PROPERTIES = {
   },
   "transform": {
     "isInherited": false,
     "subproperties": [
       "transform"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
+      "accumulatematrix",
+      "inherit",
+      "initial",
+      "interpolatematrix",
+      "matrix",
+      "matrix3d",
+      "none",
+      "perspective",
+      "rotate",
+      "rotate3d",
+      "rotateX",
+      "rotateY",
+      "rotateZ",
+      "scale",
+      "scale3d",
+      "scaleX",
+      "scaleY",
+      "scaleZ",
+      "skew",
+      "skewX",
+      "skewY",
+      "translate",
+      "translate3d",
+      "translateX",
+      "translateY",
+      "translateZ",
       "unset"
     ]
   },
   "transform-box": {
     "isInherited": false,
     "subproperties": [
       "transform-box"
     ],
@@ -8671,16 +8857,17 @@ exports.CSS_PROPERTIES = {
     ],
     "values": [
       "all",
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "none",
       "step-end",
       "step-start",
       "steps",
       "unset"
@@ -8733,16 +8920,17 @@ exports.CSS_PROPERTIES = {
       10
     ],
     "values": [
       "cubic-bezier",
       "ease",
       "ease-in",
       "ease-in-out",
       "ease-out",
+      "frames",
       "inherit",
       "initial",
       "linear",
       "step-end",
       "step-start",
       "steps",
       "unset"
     ]
@@ -8784,17 +8972,16 @@ exports.CSS_PROPERTIES = {
     "subproperties": [
       "vertical-align"
     ],
     "supports": [],
     "values": [
       "-moz-middle-with-baseline",
       "baseline",
       "bottom",
-      "calc",
       "inherit",
       "initial",
       "middle",
       "sub",
       "super",
       "text-bottom",
       "text-top",
       "top",
@@ -8841,29 +9028,29 @@ exports.CSS_PROPERTIES = {
     ],
     "supports": [],
     "values": [
       "-moz-available",
       "-moz-fit-content",
       "-moz-max-content",
       "-moz-min-content",
       "auto",
-      "calc",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "will-change": {
     "isInherited": false,
     "subproperties": [
       "will-change"
     ],
     "supports": [],
     "values": [
+      "auto",
       "inherit",
       "initial",
       "unset"
     ]
   },
   "word-break": {
     "isInherited": true,
     "subproperties": [
@@ -8881,17 +9068,16 @@ exports.CSS_PROPERTIES = {
   },
   "word-spacing": {
     "isInherited": true,
     "subproperties": [
       "word-spacing"
     ],
     "supports": [],
     "values": [
-      "calc",
       "inherit",
       "initial",
       "normal",
       "unset"
     ]
   },
   "word-wrap": {
     "isInherited": true,
--- a/layout/inspector/InspectorUtils.cpp
+++ b/layout/inspector/InspectorUtils.cpp
@@ -395,156 +395,16 @@ InspectorUtils::GetCSSPropertyNames(Glob
 
   if (aOptions.mIncludeAliases) {
     for (prop = eCSSProperty_COUNT; prop < eCSSProperty_COUNT_with_aliases; ++prop) {
       appendProperty(prop);
     }
   }
 }
 
-static void InsertNoDuplicates(nsTArray<nsString>& aArray,
-                               const nsAString& aString)
-{
-  size_t i = aArray.IndexOfFirstElementGt(aString);
-  if (i > 0 && aArray[i-1].Equals(aString)) {
-    return;
-  }
-  aArray.InsertElementAt(i, aString);
-}
-
-static void GetKeywordsForProperty(const nsCSSPropertyID aProperty,
-                                   nsTArray<nsString>& aArray)
-{
-  const nsCSSProps::KTableEntry* keywordTable;
-  if (nsCSSProps::IsShorthand(aProperty)) {
-    if (aProperty == eCSSProperty_font) {
-      keywordTable = nsCSSProps::kFontKTable;
-    } else {
-      // Other shorthand props have no keywords.
-      return;
-    }
-  } else {
-    keywordTable = nsCSSProps::kKeywordTableTable[aProperty];
-    // Special cases where nsCSSPropList.h doesn't hold the table.
-    if (keywordTable == nullptr) {
-      if (aProperty == eCSSProperty_clip_path) {
-        keywordTable = nsCSSProps::kClipPathGeometryBoxKTable;
-      }
-    }
-  }
-
-  if (keywordTable) {
-    for (size_t i = 0; !keywordTable[i].IsSentinel(); ++i) {
-      nsCSSKeyword word = keywordTable[i].mKeyword;
-
-      // These are extra -moz values which are added while rebuilding
-      // the properties db. These values are not relevant and are not
-      // documented on MDN, so filter these out
-      // eCSSKeyword_UNKNOWN is ignored because it indicates an
-      // invalid entry; but can still be seen in a table, see bug 1430616.
-      if (word != eCSSKeyword__moz_zoom_in && word != eCSSKeyword__moz_zoom_out &&
-          word != eCSSKeyword__moz_grab && word != eCSSKeyword__moz_grabbing &&
-          word != eCSSKeyword_UNKNOWN) {
-          InsertNoDuplicates(aArray,
-                  NS_ConvertASCIItoUTF16(nsCSSKeywords::GetStringValue(word)));
-      }
-    }
-  }
-
-  // More special cases.
-  if (aProperty == eCSSProperty_clip_path) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("circle"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("ellipse"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("inset"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("polygon"));
-  } else if (aProperty == eCSSProperty_clip) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("rect"));
-  } else if (aProperty == eCSSProperty_list_style_type) {
-    int32_t length;
-    const char* const* values = nsCSSProps::GetListStyleTypes(&length);
-    for (int32_t i = 0; i < length; ++i) {
-      InsertNoDuplicates(aArray, NS_ConvertASCIItoUTF16(values[i]));
-    }
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("symbols"));
-  }
-}
-
-static void GetColorsForProperty(const uint32_t aParserVariant,
-                                 nsTArray<nsString>& aArray)
-{
-  if (aParserVariant & VARIANT_COLOR) {
-    // GetKeywordsForProperty and GetOtherValuesForProperty assume aArray is sorted,
-    // and if aArray is not empty here, then it's not going to be sorted coming out.
-    MOZ_ASSERT(aArray.Length() == 0);
-    size_t size;
-    const char * const *allColorNames = NS_AllColorNames(&size);
-    nsString* utf16Names = aArray.AppendElements(size);
-    for (size_t i = 0; i < size; i++) {
-      utf16Names[i].AssignASCII(allColorNames[i]);
-    }
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("currentColor"));
-  }
-}
-
-static void GetOtherValuesForProperty(const uint32_t aParserVariant,
-                                      nsTArray<nsString>& aArray)
-{
-  if (aParserVariant & VARIANT_AUTO) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("auto"));
-  }
-  if (aParserVariant & VARIANT_NORMAL) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("normal"));
-  }
-  if(aParserVariant & VARIANT_ALL) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("all"));
-  }
-  if (aParserVariant & VARIANT_NONE) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("none"));
-  }
-  if (aParserVariant & VARIANT_ELEMENT) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("-moz-element"));
-  }
-  if (aParserVariant & VARIANT_IMAGE_RECT) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("-moz-image-rect"));
-  }
-  if (aParserVariant & VARIANT_COLOR) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("rgb"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("hsl"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("rgba"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("hsla"));
-  }
-  if (aParserVariant & VARIANT_TIMING_FUNCTION) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("cubic-bezier"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("steps"));
-  }
-  if (aParserVariant & VARIANT_CALC) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("calc"));
-  }
-  if (aParserVariant & VARIANT_URL) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("url"));
-  }
-  if (aParserVariant & VARIANT_GRADIENT) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("linear-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("radial-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("repeating-linear-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("repeating-radial-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("-moz-linear-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("-moz-radial-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("-moz-repeating-linear-gradient"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("-moz-repeating-radial-gradient"));
-  }
-  if (aParserVariant & VARIANT_ATTR) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("attr"));
-  }
-  if (aParserVariant & VARIANT_COUNTER) {
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("counter"));
-    InsertNoDuplicates(aArray, NS_LITERAL_STRING("counters"));
-  }
-}
-
 /* static */ void
 InspectorUtils::GetSubpropertiesForCSSProperty(GlobalObject& aGlobal,
                                                const nsAString& aProperty,
                                                nsTArray<nsString>& aResult,
                                                ErrorResult& aRv)
 {
   nsCSSPropertyID propertyID =
     nsCSSProps::LookupProperty(aProperty, CSSEnabledState::eForAllContent);
@@ -603,61 +463,23 @@ InspectorUtils::CssPropertySupportsType(
 }
 
 /* static */ void
 InspectorUtils::GetCSSValuesForProperty(GlobalObject& aGlobalObject,
                                         const nsAString& aProperty,
                                         nsTArray<nsString>& aResult,
                                         ErrorResult& aRv)
 {
-  nsCSSPropertyID propertyID = nsCSSProps::
-    LookupProperty(aProperty, CSSEnabledState::eForAllContent);
-  if (propertyID == eCSSProperty_UNKNOWN) {
+  NS_ConvertUTF16toUTF8 property(aProperty);
+  bool found;
+  Servo_Property_GetCSSValuesForProperty(&property, &found, &aResult);
+  if (!found) {
     aRv.Throw(NS_ERROR_FAILURE);
-    return;
   }
-
-  // We start collecting the values, BUT colors need to go in first, because aResult
-  // needs to stay sorted, and the colors are sorted, so we just append them.
-  if (propertyID == eCSSPropertyExtra_variable) {
-    // No other values we can report.
-  } else if (!nsCSSProps::IsShorthand(propertyID)) {
-    // Property is longhand.
-    uint32_t propertyParserVariant = nsCSSProps::ParserVariant(propertyID);
-    // Get colors first.
-    GetColorsForProperty(propertyParserVariant, aResult);
-    GetKeywordsForProperty(propertyID, aResult);
-    GetOtherValuesForProperty(propertyParserVariant, aResult);
-  } else if (propertyID == eCSSProperty_all) {
-    // We don't want to pick up everything from gAllSubpropTable, so
-    // special-case this here.
-  } else {
-    // Property is shorthand.
-    CSSPROPS_FOR_SHORTHAND_SUBPROPERTIES(subproperty, propertyID,
-                                         CSSEnabledState::eForAllContent) {
-      // Get colors (once) first.
-      uint32_t propertyParserVariant = nsCSSProps::ParserVariant(*subproperty);
-      if (propertyParserVariant & VARIANT_COLOR) {
-        GetColorsForProperty(propertyParserVariant, aResult);
-        break;
-      }
-    }
-    // Some shorthands may have keywords not available in subproperties.
-    GetKeywordsForProperty(propertyID, aResult);
-    CSSPROPS_FOR_SHORTHAND_SUBPROPERTIES(subproperty, propertyID,
-                                         CSSEnabledState::eForAllContent) {
-      uint32_t propertyParserVariant = nsCSSProps::ParserVariant(*subproperty);
-      GetKeywordsForProperty(*subproperty, aResult);
-      GetOtherValuesForProperty(propertyParserVariant, aResult);
-    }
-  }
-  // All CSS properties take initial, inherit and unset.
-  InsertNoDuplicates(aResult, NS_LITERAL_STRING("initial"));
-  InsertNoDuplicates(aResult, NS_LITERAL_STRING("inherit"));
-  InsertNoDuplicates(aResult, NS_LITERAL_STRING("unset"));
+  return;
 }
 
 /* static */ void
 InspectorUtils::RgbToColorName(GlobalObject& aGlobalObject,
                                uint8_t aR, uint8_t aG, uint8_t aB,
                                nsAString& aColorName,
                                ErrorResult& aRv)
 {
--- a/layout/inspector/tests/test_bug877690.html
+++ b/layout/inspector/tests/test_bug877690.html
@@ -27,76 +27,66 @@ function testValues(values, expected) {
     if (values[i] !== expected[i]) {
       return false;
     }
   }
   return true;
 }
 
 function do_test() {
-  var allColors = [ "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure",
-      "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood",
-      "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor",
-      "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey",
-      "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred",
-      "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey",
-      "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue",
-      "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold",
-      "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred",
-      "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue",
-      "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey",
-      "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey",
-      "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine",
-      "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen",
-      "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite",
-      "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen",
-      "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue",
-      "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen",
-      "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen",
-      "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "violet", "wheat",
-      "white", "whitesmoke", "yellow", "yellowgreen", "rgb", "hsl", "rgba", "hsla" ];
+  var allColors = [ "COLOR", "currentColor", "transparent", "rgb", "rgba", "hsl", "hsla" ];
+  var allGradients = [
+    "linear-gradient",
+    "-webkit-linear-gradient",
+    "-moz-linear-gradient",
+    "repeating-linear-gradient",
+    "-webkit-repeating-linear-gradient",
+    "-moz-repeating-linear-gradient",
+    "radial-gradient",
+    "-webkit-radial-gradient",
+    "-moz-radial-gradient",
+    "repeating-radial-gradient",
+    "-webkit-repeating-radial-gradient",
+    "-moz-repeating-radial-gradient",
+    "-webkit-gradient",
+  ];
 
   // test a property with keywords and colors
   var prop = "color";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "inherit", "unset", ...allColors ];
   ok(testValues(values, expected), "property color's values.");
 
   // test a shorthand property
   var prop = "background";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", ...allColors, "no-repeat", "repeat",
+  var expected = [ "auto", "initial", "inherit", "unset", ...allColors, "no-repeat", "repeat",
       "repeat-x", "repeat-y", "space", "round", "fixed", "scroll", "local", "center", "top", "bottom", "left", "right",
       "border-box", "padding-box", "content-box", "text", "contain",
-      "cover", "none", "-moz-element", "-moz-image-rect", "url", "linear-gradient",
-      "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "-moz-linear-gradient",
-      "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient" ];
-  ok(testValues(values, expected), "Shorthand property values.");
+      "cover", "none", "-moz-element", "-moz-image-rect", "url", ...allGradients ];
+  ok(testValues(values, expected), "property background values.");
 
   var prop = "border";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "unset", "calc", "dashed", "dotted", "double", "fill",
-      "groove", "hidden", "inherit", "inset", "medium", "none", "outset", "repeat", "ridge", "round",
-      "solid", "space", "stretch", "thick", "thin", "-moz-element",
-      "-moz-image-rect", "url", "linear-gradient", "radial-gradient", "repeating-linear-gradient",
-      "repeating-radial-gradient", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient",
-      "-moz-repeating-radial-gradient", ...allColors ]
-  ok(testValues(values, expected), "Shorthand property values.");
+  var expected = [ "initial", "unset", "dashed", "dotted", "double",
+      "groove", "hidden", "inherit", "inset", "medium", "none", "outset", "ridge",
+      "solid", "thick", "thin", ...allColors ]
+  ok(testValues(values, expected), "property border values.");
 
   // test keywords only
   var prop = "border-top";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "inherit", "unset", "thin", "medium", "thick", "none", "hidden", "dotted",
-      "dashed", "solid", "double", "groove", "ridge", "inset", "outset", "calc", ...allColors ];
+      "dashed", "solid", "double", "groove", "ridge", "inset", "outset", ...allColors ];
   ok(testValues(values, expected), "property border-top's values.");
 
   // tests no keywords or colors
   var prop = "padding-bottom";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "inherit", "unset", "calc" ];
+  var expected = [ "initial", "inherit", "unset" ];
   ok(testValues(values, expected), "property padding-bottom's values.");
 
   // test proprety
   var prop = "display";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "inherit", "unset", "none", "inline", "block", "inline-block", "list-item",
       "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row",
       "table-column-group", "table-column", "table-cell", "table-caption", "-moz-box", "-moz-inline-box",
@@ -113,52 +103,54 @@ function do_test() {
   var prop = "float";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "inherit", "unset", "none", "left", "right", "inline-start", "inline-end" ];
   ok(testValues(values, expected), "property float's values.");
 
   // Test property with "auto"
   var prop = "margin";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "initial", "unset", "auto", "calc", "inherit" ];
+  var expected = [ "initial", "unset", "auto", "inherit" ];
   ok(testValues(values, expected), "property margin's values.");
 
   // Test property with "normal"
   var prop = "font-style";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "inherit", "unset", "italic", "normal", "oblique" ];
   ok(testValues(values, expected), "property font-style's values.");
 
   // Test property with "cubic-bezier" and "step".
   var prop = "-moz-transition";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "initial", "all", "unset", "cubic-bezier", "ease", "ease-in", "ease-in-out",
-                   "ease-out", "inherit", "linear", "none", "step-end", "step-start",
+                   "ease-out", "frames", "inherit", "linear", "none", "step-end", "step-start",
                    "steps" ];
   ok(testValues(values, expected), "property -moz-transition's values.");
 
   // test invalid property
   var prop = "invalidProperty";
   try {
     InspectorUtils.getCSSValuesForProperty(prop);
     ok(false, "invalid property should throw an exception");
   }
   catch(e) {
     // test passed
   }
 
   // test border-image property, for bug 973345
   var prop = "border-image";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "inherit", "initial", "unset", "repeat", "stretch", "-moz-element", "-moz-image-rect", "url",             "linear-gradient", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "fill", "none", "round", "space" ];
+  var expected = [ "auto", "inherit", "initial", "unset", "repeat", "stretch",
+                   "-moz-element", "-moz-image-rect", "url", ...allGradients,
+                   "fill", "none", "round", "space" ];
   ok(testValues(values, expected), "property border-image's values.");
 
   var prop = "background-size"
   var values = InspectorUtils.getCSSValuesForProperty(prop);
-  var expected = [ "inherit", "initial", "unset", "contain", "cover" ];
+  var expected = [ "auto", "inherit", "initial", "unset", "contain", "cover" ];
   ok(testValues(values, expected), "property background-size's values.");
 
   // Regression test for bug 1255401.
   var prop = "all"
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   var expected = [ "inherit", "initial", "unset" ];
   ok(testValues(values, expected), "property all's values.");
 
@@ -176,28 +168,28 @@ function do_test() {
 
   // Regression test for bug 1430616
   var prop = "text-align";
   var values = InspectorUtils.getCSSValuesForProperty(prop);
   ok(values.includes("match-parent"), "property text-align includes match-parent");
 
   // Regression test for bug 1255402.
   var expected = [ "inherit", "initial", "unset", "left", "right",
-                   "top", "center", "bottom", "calc" ];
+                   "top", "center", "bottom" ];
   for (prop of ["object-position", "perspective-origin"]) {
     var values = InspectorUtils.getCSSValuesForProperty(prop);
     ok(testValues(values, expected), "property " + prop + "'s values");
   }
 
   // Regression test for bug 1255378.
-  var expected = [ "inherit", "initial", "unset", "none", "calc", ...allColors ];
+  var expected = [ "inherit", "initial", "unset", "none", ...allColors ];
   var values = InspectorUtils.getCSSValuesForProperty("text-shadow");
   ok(testValues(values, expected), "property text-shadow's values");
 
-  var expected = [ "inherit", "initial", "unset", "inset", "none", "calc", ...allColors ];
+  var expected = [ "inherit", "initial", "unset", "inset", "none", ...allColors ];
   var values = InspectorUtils.getCSSValuesForProperty("box-shadow");
   ok(testValues(values, expected), "property box-shadow's values");
 
   // Regression test for bug 1255379.
   var expected = [ "inherit", "initial", "unset", "none", "url",
                    "polygon", "circle", "ellipse", "inset",
                    "fill-box", "stroke-box", "view-box", "margin-box",
                    "border-box", "padding-box", "content-box" ];
--- a/layout/inspector/tests/test_is_valid_css_color.html
+++ b/layout/inspector/tests/test_is_valid_css_color.html
@@ -4,25 +4,29 @@
   <meta charset="utf-8">
   <title>Test InspectorUtils::isValidCSSColor</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <script type="application/javascript">
   const InspectorUtils = SpecialPowers.InspectorUtils;
 
   // Color names
-  let colors = InspectorUtils.getCSSValuesForProperty("color");
-  let notColor = ["hsl", "hsla", "inherit", "initial", "rgb", "rgba",
-                  "unset", "transparent", "currentColor"];
-  for (let color of colors) {
-    if (notColor.includes(color)) {
-      continue;
+  // XXX getCSSValuesForProperty no longer returns the complete color
+  //     keyword list, so skip it for now.
+  if (false) {
+    let colors = InspectorUtils.getCSSValuesForProperty("color");
+    let notColor = ["hsl", "hsla", "inherit", "initial", "rgb", "rgba",
+                    "unset", "transparent", "currentColor"];
+    for (let color of colors) {
+      if (notColor.includes(color)) {
+        continue;
+      }
+      ok(InspectorUtils.isValidCSSColor(color), color + " is a valid color");
+      ok(!InspectorUtils.isValidCSSColor("xxx" + color), "xxx" + color + " is not a valid color");
     }
-    ok(InspectorUtils.isValidCSSColor(color), color + " is a valid color");
-    ok(!InspectorUtils.isValidCSSColor("xxx" + color), "xxx" + color + " is not a valid color");
   }
 
   // rgb(a)
   for (let i = 0; i <= 265; i++) {
     ok(InspectorUtils.isValidCSSColor("rgb(" + i + ",0,0)"), "rgb(" + i + ",0,0) is a valid color");
     ok(InspectorUtils.isValidCSSColor("rgb(0," + i + ",0)"), "rgb(0," + i + ",0) is a valid color");
     ok(InspectorUtils.isValidCSSColor("rgb(0,0," + i + ")"), "rgb(0,0," + i + ") is a valid color");
     ok(InspectorUtils.isValidCSSColor("rgba(" + i + ",0,0,0.2)"), "rgba(" + i + ",0,0,0.2) is a valid color");