Backed out 7 changesets (bug 1452542) for failing toolkit/content/tests/chrome/test_arrowpanel.xul on a CLOSED TREE
authorAndreea Pavel <apavel@mozilla.com>
Wed, 18 Apr 2018 20:10:35 +0300
changeset 467851 43b3f5fba6d7c1905706236b5ef8c33b386a8cda
parent 467850 46e78a238a4da4e83fcc2f460055da7fa1394da8
child 467852 83b06b648c77603202f508e14ba513940483b999
push id9165
push userasasaki@mozilla.com
push dateThu, 26 Apr 2018 21:04:54 +0000
treeherdermozilla-beta@064c3804de2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1452542
milestone61.0a1
backs outf206acff283f2e89fa67fca6e1a24a55bdb50a0b
be97e652391f0c1038483e6532ef2f858647f384
4d3a028edaed24c108b999488531331ac4db066d
5619bba37cddc6f002dc0a719a6e935618243594
e83a797bdc61a880497a485e378d3b16c5bad258
255e2feff19f8f6fc8bedd950c6cee93307748d3
fac55b1a0706830de7f0b7e85bde7ee2c59fda37
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 7 changesets (bug 1452542) for failing toolkit/content/tests/chrome/test_arrowpanel.xul on a CLOSED TREE Backed out changeset f206acff283f (bug 1452542) Backed out changeset be97e652391f (bug 1452542) Backed out changeset 4d3a028edaed (bug 1452542) Backed out changeset 5619bba37cdd (bug 1452542) Backed out changeset e83a797bdc61 (bug 1452542) Backed out changeset 255e2feff19f (bug 1452542) Backed out changeset fac55b1a0706 (bug 1452542)
config/recurse.mk
devtools/shared/css/generated/mach_commands.py
devtools/shared/css/generated/properties-db.js
dom/base/UseCounters.conf
dom/base/gen-usecounters.py
dom/bindings/GenerateCSS2PropertiesWebIDL.py
dom/bindings/Makefile.in
dom/bindings/moz.build
layout/style/GenerateCSSPropsGenerated.py
layout/style/GenerateServoCSSPropList.py
layout/style/Makefile.in
layout/style/PythonCSSProps.h
layout/style/ServoCSSPropList.mako.py
layout/style/moz.build
layout/style/nsCSSPropAliasList.h
layout/style/nsCSSPropList.h
layout/style/nsCSSPropertyID.h
layout/style/nsCSSProps.cpp
layout/style/nsComputedDOMStyle.cpp
layout/style/nsDOMCSSDeclaration.h
layout/style/test/ListCSSProperties.cpp
layout/style/test/test_non_content_accessible_properties.html
servo/components/style/properties/build.py
servo/components/style/properties/data.py
--- a/config/recurse.mk
+++ b/config/recurse.mk
@@ -166,19 +166,16 @@ js/xpconnect/src/export: dom/bindings/ex
 accessible/xpcom/export: xpcom/xpidl/export
 
 # The widget binding generator code is part of the annotationProcessors.
 widget/android/bindings/export: build/annotationProcessors/export
 
 # .xpt generation needs the xpidl lex/yacc files
 xpcom/xpidl/export: xpcom/idl-parser/xpidl/export
 
-# CSS2Properties.webidl needs ServoCSSPropList.py from layout/style
-dom/bindings/export: layout/style/export
-
 ifdef ENABLE_CLANG_PLUGIN
 $(filter-out config/host build/unix/stdc++compat/% build/clang-plugin/%,$(compile_targets)): build/clang-plugin/target build/clang-plugin/tests/target
 build/clang-plugin/tests/target: build/clang-plugin/target
 endif
 
 # Interdependencies that moz.build world don't know about yet for compilation.
 # Note some others are hardcoded or "guessed" in recursivemake.py and emitter.py
 ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3)
--- a/devtools/shared/css/generated/mach_commands.py
+++ b/devtools/shared/css/generated/mach_commands.py
@@ -45,27 +45,42 @@ class MachCommands(MachCommandBase):
 
         self.output_template({
             'preferences': stringify(preferences),
             'cssProperties': stringify(db['cssProperties']),
             'pseudoElements': stringify(db['pseudoElements'])})
 
     def get_preferences(self):
         """Get all of the preferences associated with enabling and disabling a property."""
-        # The data takes the following form:
+        # Build the command to run the preprocessor on PythonCSSProps.h
+        headerPath = resolve_path(self.topsrcdir, 'layout/style/PythonCSSProps.h')
+
+        cpp = self.substs['CPP']
+
+        if not cpp:
+            print("Unable to find the cpp program. Please do a full, nonartifact")
+            print("build and try this again.")
+            sys.exit(1)
+
+        if type(cpp) is list:
+            cmd = cpp
+        else:
+            cmd = shellutil.split(cpp)
+        cmd += shellutil.split(self.substs['ACDEFINES'])
+        cmd.append(headerPath)
+
+        # The preprocessed list takes the following form:
         # [ (name, prop, id, flags, pref, proptype), ... ]
-        dataPath = resolve_path(self.topobjdir, 'layout/style/ServoCSSPropList.py')
-        with open(dataPath, "r") as f:
-            data = eval(f.read())
+        preprocessed = eval(subprocess.check_output(cmd))
 
         # Map this list
         # (name, prop, id, flags, pref, proptype) => (name, pref)
         preferences = [
             (name, pref)
-            for name, prop, id, flags, pref, proptype in data
+            for name, prop, id, flags, pref, proptype in preprocessed
             if 'CSS_PROPERTY_INTERNAL' not in flags and pref]
 
         return preferences
 
     def get_properties_db_from_xpcshell(self):
         """Generate the static css properties db for devtools from an xpcshell script."""
         build = MozbuildObject.from_environment()
 
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -1443,16 +1443,62 @@ exports.CSS_PROPERTIES = {
       "default",
       "drag",
       "inherit",
       "initial",
       "no-drag",
       "unset"
     ]
   },
+  "-moz-window-opacity": {
+    "isInherited": false,
+    "subproperties": [
+      "-moz-window-opacity"
+    ],
+    "supports": [
+      7
+    ],
+    "values": [
+      "inherit",
+      "initial",
+      "unset"
+    ]
+  },
+  "-moz-window-transform": {
+    "isInherited": false,
+    "subproperties": [
+      "-moz-window-transform"
+    ],
+    "supports": [],
+    "values": [
+      "inherit",
+      "initial",
+      "unset"
+    ]
+  },
+  "-moz-window-transform-origin": {
+    "isInherited": false,
+    "subproperties": [
+      "-moz-window-transform-origin"
+    ],
+    "supports": [
+      6,
+      8
+    ],
+    "values": [
+      "bottom",
+      "center",
+      "inherit",
+      "initial",
+      "left",
+      "right",
+      "top",
+      "unset"
+    ]
+  },
   "-webkit-align-content": {
     "isInherited": false,
     "subproperties": [
       "align-content"
     ],
     "supports": [],
     "values": [
       "baseline",
@@ -2945,21 +2991,21 @@ exports.CSS_PROPERTIES = {
       "grid-row-end",
       "grid-row-gap",
       "grid-row-start",
       "grid-template-areas",
       "grid-template-columns",
       "grid-template-rows",
       "height",
       "hyphens",
+      "initial-letter",
       "image-orientation",
       "-moz-image-region",
       "image-rendering",
       "ime-mode",
-      "initial-letter",
       "inline-size",
       "isolation",
       "justify-content",
       "justify-items",
       "justify-self",
       "left",
       "letter-spacing",
       "lighting-color",
@@ -3013,21 +3059,18 @@ exports.CSS_PROPERTIES = {
       "-moz-outline-radius-bottomleft",
       "-moz-outline-radius-bottomright",
       "-moz-outline-radius-topleft",
       "-moz-outline-radius-topright",
       "outline-style",
       "outline-width",
       "overflow-clip-box-block",
       "overflow-clip-box-inline",
-      "overflow-wrap",
       "overflow-x",
       "overflow-y",
-      "overscroll-behavior-x",
-      "overscroll-behavior-y",
       "padding-block-end",
       "padding-block-start",
       "padding-bottom",
       "padding-inline-end",
       "padding-inline-start",
       "padding-left",
       "padding-right",
       "padding-top",
@@ -3040,18 +3083,19 @@ exports.CSS_PROPERTIES = {
       "pointer-events",
       "position",
       "quotes",
       "resize",
       "right",
       "rotate",
       "ruby-align",
       "ruby-position",
-      "scale",
       "scroll-behavior",
+      "overscroll-behavior-x",
+      "overscroll-behavior-y",
       "scroll-snap-coordinate",
       "scroll-snap-destination",
       "scroll-snap-points-x",
       "scroll-snap-points-y",
       "scroll-snap-type-x",
       "scroll-snap-type-y",
       "shape-image-threshold",
       "shape-outside",
@@ -3084,16 +3128,17 @@ exports.CSS_PROPERTIES = {
       "text-justify",
       "text-orientation",
       "text-overflow",
       "text-rendering",
       "text-shadow",
       "-moz-text-size-adjust",
       "-webkit-text-stroke-color",
       "-webkit-text-stroke-width",
+      "scale",
       "text-transform",
       "top",
       "-moz-top-layer",
       "touch-action",
       "transform",
       "transform-box",
       "transform-origin",
       "transform-style",
@@ -3108,22 +3153,23 @@ exports.CSS_PROPERTIES = {
       "-moz-user-select",
       "vector-effect",
       "vertical-align",
       "visibility",
       "white-space",
       "width",
       "will-change",
       "-moz-window-dragging",
+      "-moz-window-shadow",
       "-moz-window-opacity",
-      "-moz-window-shadow",
       "-moz-window-transform",
       "-moz-window-transform-origin",
       "word-break",
       "word-spacing",
+      "overflow-wrap",
       "writing-mode",
       "z-index"
     ],
     "supports": [
       1,
       2,
       4,
       5,
@@ -9429,16 +9475,20 @@ exports.PSEUDO_ELEMENTS = [
 ];
 
 /**
  * A list of the preferences keys for whether a CSS property is enabled or not. This is
  * exposed for testing purposes.
  */
 exports.PREFERENCES = [
   [
+    "all",
+    "layout.css.all-shorthand.enabled"
+  ],
+  [
     "background-blend-mode",
     "layout.css.background-blend-mode.enabled"
   ],
   [
     "box-decoration-break",
     "layout.css.box-decoration-break.enabled"
   ],
   [
@@ -9457,80 +9507,88 @@ exports.PREFERENCES = [
     "font-optical-sizing",
     "layout.css.font-variations.enabled"
   ],
   [
     "font-variation-settings",
     "layout.css.font-variations.enabled"
   ],
   [
+    "initial-letter",
+    "layout.css.initial-letter.enabled"
+  ],
+  [
     "image-orientation",
     "layout.css.image-orientation.enabled"
   ],
   [
-    "initial-letter",
-    "layout.css.initial-letter.enabled"
-  ],
-  [
     "isolation",
     "layout.css.isolation.enabled"
   ],
   [
     "mix-blend-mode",
     "layout.css.mix-blend-mode.enabled"
   ],
   [
     "-moz-osx-font-smoothing",
     "layout.css.osx-font-smoothing.enabled"
   ],
   [
+    "overflow-clip-box",
+    "layout.css.overflow-clip-box.enabled"
+  ],
+  [
     "overflow-clip-box-block",
     "layout.css.overflow-clip-box.enabled"
   ],
   [
     "overflow-clip-box-inline",
     "layout.css.overflow-clip-box.enabled"
   ],
   [
+    "rotate",
+    "layout.css.individual-transform.enabled"
+  ],
+  [
+    "scroll-behavior",
+    "layout.css.scroll-behavior.property-enabled"
+  ],
+  [
+    "overscroll-behavior",
+    "layout.css.overscroll-behavior.enabled"
+  ],
+  [
     "overscroll-behavior-x",
     "layout.css.overscroll-behavior.enabled"
   ],
   [
     "overscroll-behavior-y",
     "layout.css.overscroll-behavior.enabled"
   ],
   [
-    "rotate",
-    "layout.css.individual-transform.enabled"
-  ],
-  [
-    "scale",
-    "layout.css.individual-transform.enabled"
-  ],
-  [
-    "scroll-behavior",
-    "layout.css.scroll-behavior.property-enabled"
-  ],
-  [
     "scroll-snap-coordinate",
     "layout.css.scroll-snap.enabled"
   ],
   [
     "scroll-snap-destination",
     "layout.css.scroll-snap.enabled"
   ],
   [
     "scroll-snap-points-x",
     "layout.css.scroll-snap.enabled"
   ],
   [
     "scroll-snap-points-y",
     "layout.css.scroll-snap.enabled"
   ],
   [
+    "scroll-snap-type",
+    "layout.css.scroll-snap.enabled"
+  ],
+  [
     "scroll-snap-type-x",
     "layout.css.scroll-snap.enabled"
   ],
   [
     "scroll-snap-type-y",
     "layout.css.scroll-snap.enabled"
   ],
   [
@@ -9549,54 +9607,90 @@ exports.PREFERENCES = [
     "-webkit-text-fill-color",
     "layout.css.prefixes.webkit"
   ],
   [
     "text-justify",
     "layout.css.text-justify.enabled"
   ],
   [
+    "-webkit-text-stroke",
+    "layout.css.prefixes.webkit"
+  ],
+  [
     "-webkit-text-stroke-color",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-text-stroke-width",
     "layout.css.prefixes.webkit"
   ],
   [
+    "scale",
+    "layout.css.individual-transform.enabled"
+  ],
+  [
     "touch-action",
     "layout.css.touch_action.enabled"
   ],
   [
     "transform-box",
     "svg.transform-box.enabled"
   ],
   [
     "translate",
     "layout.css.individual-transform.enabled"
   ],
   [
-    "all",
-    "layout.css.all-shorthand.enabled"
-  ],
-  [
-    "overflow-clip-box",
-    "layout.css.overflow-clip-box.enabled"
-  ],
-  [
-    "overscroll-behavior",
-    "layout.css.overscroll-behavior.enabled"
-  ],
-  [
-    "scroll-snap-type",
-    "layout.css.scroll-snap.enabled"
-  ],
-  [
-    "-webkit-text-stroke",
-    "layout.css.prefixes.webkit"
+    "-moz-transform",
+    "layout.css.prefixes.transforms"
+  ],
+  [
+    "-moz-transform-origin",
+    "layout.css.prefixes.transforms"
+  ],
+  [
+    "-moz-perspective-origin",
+    "layout.css.prefixes.transforms"
+  ],
+  [
+    "-moz-perspective",
+    "layout.css.prefixes.transforms"
+  ],
+  [
+    "-moz-transform-style",
+    "layout.css.prefixes.transforms"
+  ],
+  [
+    "-moz-backface-visibility",
+    "layout.css.prefixes.transforms"
+  ],
+  [
+    "-moz-border-image",
+    "layout.css.prefixes.border-image"
+  ],
+  [
+    "-moz-transition",
+    "layout.css.prefixes.transitions"
+  ],
+  [
+    "-moz-transition-delay",
+    "layout.css.prefixes.transitions"
+  ],
+  [
+    "-moz-transition-duration",
+    "layout.css.prefixes.transitions"
+  ],
+  [
+    "-moz-transition-property",
+    "layout.css.prefixes.transitions"
+  ],
+  [
+    "-moz-transition-timing-function",
+    "layout.css.prefixes.transitions"
   ],
   [
     "-moz-animation",
     "layout.css.prefixes.animations"
   ],
   [
     "-moz-animation-delay",
     "layout.css.prefixes.animations"
@@ -9625,90 +9719,30 @@ exports.PREFERENCES = [
     "-moz-animation-play-state",
     "layout.css.prefixes.animations"
   ],
   [
     "-moz-animation-timing-function",
     "layout.css.prefixes.animations"
   ],
   [
-    "-moz-backface-visibility",
-    "layout.css.prefixes.transforms"
-  ],
-  [
-    "-moz-border-image",
-    "layout.css.prefixes.border-image"
-  ],
-  [
     "-moz-box-sizing",
     "layout.css.prefixes.box-sizing"
   ],
   [
-    "-moz-column-span",
-    "layout.css.column-span.enabled"
-  ],
-  [
     "-moz-font-feature-settings",
     "layout.css.prefixes.font-features"
   ],
   [
     "-moz-font-language-override",
     "layout.css.prefixes.font-features"
   ],
   [
-    "-moz-perspective",
-    "layout.css.prefixes.transforms"
-  ],
-  [
-    "-moz-perspective-origin",
-    "layout.css.prefixes.transforms"
-  ],
-  [
-    "-moz-transform",
-    "layout.css.prefixes.transforms"
-  ],
-  [
-    "-moz-transform-origin",
-    "layout.css.prefixes.transforms"
-  ],
-  [
-    "-moz-transform-style",
-    "layout.css.prefixes.transforms"
-  ],
-  [
-    "-moz-transition",
-    "layout.css.prefixes.transitions"
-  ],
-  [
-    "-moz-transition-delay",
-    "layout.css.prefixes.transitions"
-  ],
-  [
-    "-moz-transition-duration",
-    "layout.css.prefixes.transitions"
-  ],
-  [
-    "-moz-transition-property",
-    "layout.css.prefixes.transitions"
-  ],
-  [
-    "-moz-transition-timing-function",
-    "layout.css.prefixes.transitions"
-  ],
-  [
-    "-webkit-align-content",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-align-items",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-align-self",
-    "layout.css.prefixes.webkit"
+    "-moz-column-span",
+    "layout.css.column-span.enabled"
   ],
   [
     "-webkit-animation",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-animation-delay",
     "layout.css.prefixes.webkit"
@@ -9737,124 +9771,188 @@ exports.PREFERENCES = [
     "-webkit-animation-play-state",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-animation-timing-function",
     "layout.css.prefixes.webkit"
   ],
   [
+    "-webkit-filter",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-text-size-adjust",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-transform",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-transform-origin",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-transform-style",
+    "layout.css.prefixes.webkit"
+  ],
+  [
     "-webkit-backface-visibility",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-background-clip",
+    "-webkit-perspective",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-background-origin",
+    "-webkit-perspective-origin",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-background-size",
+    "-webkit-transition",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-border-bottom-left-radius",
+    "-webkit-transition-delay",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-transition-duration",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-border-bottom-right-radius",
+    "-webkit-transition-property",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-border-image",
+    "-webkit-transition-timing-function",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-border-radius",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-border-top-left-radius",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-border-top-right-radius",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-box-align",
+    "-webkit-border-bottom-left-radius",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-border-bottom-right-radius",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-background-clip",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-background-origin",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-box-direction",
+    "-webkit-background-size",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-border-image",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-box-shadow",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-box-sizing",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-box-flex",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-box-ordinal-group",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-box-orient",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-box-pack",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-box-shadow",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-box-sizing",
+    "-webkit-box-direction",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-filter",
+    "-webkit-box-align",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-flex",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-flex-basis",
+    "-webkit-box-pack",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-flex-direction",
     "layout.css.prefixes.webkit"
   ],
   [
+    "-webkit-flex-wrap",
+    "layout.css.prefixes.webkit"
+  ],
+  [
     "-webkit-flex-flow",
     "layout.css.prefixes.webkit"
   ],
   [
+    "-webkit-order",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-flex",
+    "layout.css.prefixes.webkit"
+  ],
+  [
     "-webkit-flex-grow",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-flex-shrink",
     "layout.css.prefixes.webkit"
   ],
   [
-    "-webkit-flex-wrap",
+    "-webkit-flex-basis",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-justify-content",
     "layout.css.prefixes.webkit"
   ],
   [
+    "-webkit-align-items",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-align-self",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-align-content",
+    "layout.css.prefixes.webkit"
+  ],
+  [
+    "-webkit-user-select",
+    "layout.css.prefixes.webkit"
+  ],
+  [
     "-webkit-mask",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-mask-clip",
     "layout.css.prefixes.webkit"
   ],
   [
@@ -9883,62 +9981,10 @@ exports.PREFERENCES = [
   ],
   [
     "-webkit-mask-repeat",
     "layout.css.prefixes.webkit"
   ],
   [
     "-webkit-mask-size",
     "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-order",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-perspective",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-perspective-origin",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-text-size-adjust",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transform",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transform-origin",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transform-style",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transition",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transition-delay",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transition-duration",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transition-property",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-transition-timing-function",
-    "layout.css.prefixes.webkit"
-  ],
-  [
-    "-webkit-user-select",
-    "layout.css.prefixes.webkit"
   ]
 ];
--- a/dom/base/UseCounters.conf
+++ b/dom/base/UseCounters.conf
@@ -14,18 +14,21 @@
 //
 //   (c) one of four possible use counter declarations:
 //
 //         method <IDL interface name>.<IDL operation name>
 //         attribute <IDL interface name>.<IDL attribute name>
 //         property <CSS property method name>
 //         custom <any valid identifier> <description>
 //
-// The |CSS property method name| should be CamelCase form of the property
-// name with -moz- and -x- prefix removed.
+// The |CSS property method name| should be identical to the |method|
+// argument to CSS_PROP and related macros.  The method name is
+// identical to the name of the property, except that all hyphens are
+// removed and CamelCase naming is used.  See nsCSSPropList.h for
+// further details.
 //
 // The <description> for custom counters will be appended to "When a document "
 // or "When a page ", so phrase it appropriately.  For instance, "constructs a
 // Foo object" or "calls Document.bar('some value')".  It may contain any
 // character (including whitespace).
 //
 // To actually cause use counters to be incremented, DOM methods
 // and attributes must have a [UseCounter] extended attribute in
--- a/dom/base/gen-usecounters.py
+++ b/dom/base/gen-usecounters.py
@@ -56,25 +56,20 @@ def generate_list(f, counters):
     print_optional_macro_undeclare('USE_COUNTER_CSS_PROPERTY')
     print_optional_macro_undeclare('USE_COUNTER_CUSTOM')
 
 def generate_property_map(f, counters):
     print(AUTOGENERATED_WARNING_COMMENT, file=f)
     print('''
 enum {
   #define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) privatename_
-  // Need an extra level of macro nesting to force expansion of method_
-  // params before they get pasted.
-  #define CSS_PROP_USE_COUNTER(method_) \\
+  #define CSS_PROP(name_, id_, method_, ...) \\
     USE_COUNTER_FOR_CSS_PROPERTY_##method_ = eUseCounter_UNKNOWN,
-  #define CSS_PROP_LONGHAND(name_, id_, method_, ...) \\
-    CSS_PROP_USE_COUNTER(method_)
-  #include "mozilla/ServoCSSPropList.h"
-  #undef CSS_PROP_LONGHAND
-  #undef CSS_PROP_USE_COUNTER
+  #include "nsCSSPropList.h"
+  #undef CSS_PROP
   #undef CSS_PROP_PUBLIC_OR_PRIVATE
 };
 ''', file=f)
     for counter in counters:
         if counter['type'] == 'property':
             prop = counter['property_name']
             print('#define USE_COUNTER_FOR_CSS_PROPERTY_%s eUseCounter_property_%s' % (prop, prop), file=f)
 
--- a/dom/bindings/GenerateCSS2PropertiesWebIDL.py
+++ b/dom/bindings/GenerateCSS2PropertiesWebIDL.py
@@ -1,27 +1,34 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 
 import sys
 import string
 import argparse
+import subprocess
+import buildconfig
+from mozbuild import shellutil
 
 # Generates a line of WebIDL with the given spelling of the property name
 # (whether camelCase, _underscorePrefixed, etc.) and the given array of
 # extended attributes.
 def generateLine(propName, extendedAttrs):
     return "  [%s] attribute DOMString %s;\n" % (", ".join(extendedAttrs),
                                                  propName)
-def generate(output, idlFilename, dataFile):
-    with open(dataFile, "r") as f:
-        propList = eval(f.read())
+def generate(output, idlFilename, preprocessorHeader):
+    cpp = list(buildconfig.substs['CPP'])
+    cpp += shellutil.split(buildconfig.substs['ACDEFINES'])
+    cpp.append(preprocessorHeader)
+    preprocessed = subprocess.check_output(cpp)
+
+    propList = eval(preprocessed)
     props = ""
-    for name, prop, id, flags, pref, proptype in propList:
+    for [name, prop, id, flags, pref, proptype] in propList:
         if "CSS_PROPERTY_INTERNAL" in flags:
             continue
         # Unfortunately, even some of the getters here are fallible
         # (e.g. on nsComputedDOMStyle).
         extendedAttrs = ["CEReactions", "Throws", "TreatNullAs=EmptyString",
                          "SetterNeedsSubjectPrincipal=NonSystem"]
         if pref is not "":
             extendedAttrs.append('Pref="%s"' % pref)
--- a/dom/bindings/Makefile.in
+++ b/dom/bindings/Makefile.in
@@ -10,16 +10,29 @@ ifdef COMPILE_ENVIRONMENT
 include webidlsrcs.mk
 
 # These come from webidlsrcs.mk.
 # TODO Write directly into backend.mk (bug 1281618)
 CPPSRCS += $(globalgen_sources) $(unified_binding_cpp_files)
 
 include $(topsrcdir)/config/rules.mk
 
+# TODO This list should be emitted to a .pp file via
+# GenerateCSS2PropertiesWebIDL.py (bug 1281614)
+css2properties_dependencies = \
+  $(topsrcdir)/layout/style/nsCSSPropList.h \
+  $(topsrcdir)/layout/style/nsCSSPropAliasList.h \
+  $(webidl_base)/CSS2Properties.webidl.in \
+  $(topsrcdir)/layout/style/PythonCSSProps.h \
+  $(srcdir)/GenerateCSS2PropertiesWebIDL.py \
+  $(GLOBAL_DEPS) \
+  $(NULL)
+
+CSS2Properties.webidl: $(css2properties_dependencies)
+
 # Most of the logic for dependencies lives inside Python so it can be
 # used by multiple build backends. We simply have rules to generate
 # and include the .pp file.
 #
 # The generated .pp file contains all the important dependencies such as
 # changes to .webidl or .py files should result in code generation being
 # performed. But we do pull in file-lists.jon to catch file additions.
 codegen_dependencies := \
--- a/dom/bindings/moz.build
+++ b/dom/bindings/moz.build
@@ -174,10 +174,10 @@ if CONFIG['CC_TYPE'] in ('clang', 'gcc')
     ]
 
 if CONFIG['COMPILE_ENVIRONMENT']:
     GENERATED_FILES += ['CSS2Properties.webidl']
     css_props = GENERATED_FILES['CSS2Properties.webidl']
     css_props.script = 'GenerateCSS2PropertiesWebIDL.py:generate'
     css_props.inputs = [
         '/dom/webidl/CSS2Properties.webidl.in',
-        '!/layout/style/ServoCSSPropList.py',
+        '/layout/style/PythonCSSProps.h',
     ]
--- a/layout/style/GenerateCSSPropsGenerated.py
+++ b/layout/style/GenerateCSSPropsGenerated.py
@@ -1,22 +1,27 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 
 import sys
 import string
 import argparse
+import subprocess
+import buildconfig
+from mozbuild import shellutil
 
-def get_properties(dataFile):
-    with open(dataFile, "r") as f:
-        properties = eval(f.read())
+def get_properties(preprocessorHeader):
+    cpp = list(buildconfig.substs['CPP'])
+    cpp += shellutil.split(buildconfig.substs['ACDEFINES'])
+    cpp.append(preprocessorHeader)
+    preprocessed = subprocess.check_output(cpp)
     properties = [{"name":p[0], "prop":p[1], "id":p[2],
                    "flags":p[3], "pref":p[4], "proptype":p[5]}
-                  for (i, p) in enumerate(properties)]
+                  for (i, p) in enumerate(eval(preprocessed))]
 
     # Sort the list so that longhand properties are intermingled first,
     # shorthand properties follow, then aliases appear last.
     # This matches the order of the nsCSSPropertyID enum.
 
     def property_compare(x, y):
         property_order = {"longhand": 0, "shorthand": 1, "alias": 2}
         return property_order[x["proptype"]] - property_order[y["proptype"]]
@@ -47,17 +52,17 @@ def generate_idl_names(properties):
             names.append("  nullptr,  // %s" % p["name"])
         else:
             names.append('  "%s",' % p["idlname"])
     return "\n".join(names)
 
 def generate_assertions(properties):
     def enum(p):
         if p["proptype"] is "alias":
-            return "eCSSPropertyAlias_%s" % p["id"][0]
+            return "eCSSPropertyAlias_%s" % p["prop"]
         else:
             return "eCSSProperty_%s" % p["id"]
     msg = ('static_assert(%s == %d, "GenerateCSSPropsGenerated.py did not list '
            'properties in nsCSSPropertyID order");')
     return "\n".join(map(lambda p: msg % (enum(p), p["index"]), properties))
 
 def generate_idl_name_positions(properties):
     # Skip aliases.
@@ -69,22 +74,22 @@ def generate_idl_name_positions(properti
     # Annotate entries with the sorted position.
     ps = [(p, position) for position, p in enumerate(ps)]
 
     # Sort back to nsCSSPropertyID order.
     ps = sorted(ps, key=lambda (p, position): p["index"])
 
     return ",\n".join(map(lambda (p, position): "  %d" % position, ps))
 
-def generate(output, cppTemplate, dataFile):
+def generate(output, cppTemplate, preprocessorHeader):
     cppFile = open(cppTemplate, "r")
     cppTemplate = cppFile.read()
     cppFile.close()
 
-    properties = get_properties(dataFile)
+    properties = get_properties(preprocessorHeader)
     substitutions = {
         "idl_names": generate_idl_names(properties),
         "assertions": generate_assertions(properties),
         "idl_name_positions": generate_idl_name_positions(properties),
     }
     output.write("/* THIS IS AN AUTOGENERATED FILE.  DO NOT EDIT */\n\n" +
                  string.Template(cppTemplate).substitute(substitutions) + "\n")
 
deleted file mode 100644
--- a/layout/style/GenerateServoCSSPropList.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-import buildconfig
-import mozpack.path as mozpath
-import os
-import subprocess
-import string
-import sys
-
-SERVO_BASE = mozpath.join(buildconfig.topsrcdir, "servo")
-SERVO_PROP_BASE = mozpath.join(SERVO_BASE, "components", "style", "properties")
-
-
-def generate_data(output, template):
-    output.write("# THIS IS AN AUTOGENERATED FILE.  DO NOT EDIT\n\n")
-    output.write(subprocess.check_output([
-        sys.executable,
-        mozpath.join(SERVO_PROP_BASE, "build.py"),
-        "gecko", "geckolib", template
-    ], universal_newlines=True))
-
-    # Add all relevant files into the dependencies of the generated file.
-    DEP_EXTS = [".py", ".rs", ".zip"]
-    deps = set()
-    for path, dirs, files in os.walk(SERVO_PROP_BASE):
-        for file in files:
-            if os.path.splitext(file)[1] in DEP_EXTS:
-                deps.add(mozpath.join(path, file))
-    return deps
-
-
-def generate_header(output, data):
-    with open(data, "r") as f:
-        data = eval(f.read())
-
-    output.write("""/* THIS IS AN AUTOGENERATED FILE.  DO NOT EDIT */
-
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-#define CSS_PROP_DOMPROP_PREFIXED(name_) \\
-  CSS_PROP_PUBLIC_OR_PRIVATE(Moz ## name_, name_)
-
-#ifndef CSS_PROP_LONGHAND
-#define CSS_PROP_LONGHAND(name_, id_, method_, flags_, pref_) /* nothing */
-#define DEFINED_CSS_PROP_LONGHAND
-#endif
-
-#ifndef CSS_PROP_SHORTHAND
-#define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) /* nothing */
-#define DEFINED_CSS_PROP_SHORTHAND
-#endif
-
-#ifndef CSS_PROP_ALIAS
-#define CSS_PROP_ALIAS(name_, aliasid_, id_, method_, pref_) /* nothing */
-#define DEFINED_CSS_PROP_ALIAS
-#endif
-
-""")
-
-    MACRO_NAMES = {
-        "longhand": "CSS_PROP_LONGHAND",
-        "shorthand": "CSS_PROP_SHORTHAND",
-        "alias": "CSS_PROP_ALIAS",
-    }
-    for name, method, id, flags, pref, proptype in data:
-        is_internal = "CSS_PROPERTY_INTERNAL" in flags
-        pref = '"' + pref + '"'
-        if proptype == "alias":
-            params = [name, id[0], id[1], method, pref]
-        else:
-            if method == "CssFloat":
-                method = "CSS_PROP_PUBLIC_OR_PRIVATE(CssFloat, Float)"
-            elif method.startswith("Moz"):
-                method = "CSS_PROP_DOMPROP_PREFIXED({})".format(method[3:])
-            if flags:
-                flags = " | ".join(flags)
-            else:
-                flags = "0"
-            params = [name, id, method, flags, pref]
-
-        if is_internal:
-            output.write("#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL\n")
-        output.write("{}({})\n".format(MACRO_NAMES[proptype], ", ".join(params)))
-        if is_internal:
-            output.write("#endif\n")
-
-    output.write("""
-#ifdef DEFINED_CSS_PROP_ALIAS
-#undef CSS_PROP_ALIAS
-#undef DEFINED_CSS_PROP_ALIAS
-#endif
-
-#ifdef DEFINED_CSS_PROP_SHORTHAND
-#undef CSS_PROP_SHORTHAND
-#undef DEFINED_CSS_PROP_SHORTHAND
-#endif
-
-#ifdef DEFINED_CSS_PROP_LONGHAND
-#undef CSS_PROP_LONGHAND
-#undef DEFINED_CSS_PROP_LONGHAND
-#endif
-
-#undef CSS_PROP_DOMPROP_PREFIXED
-""")
new file mode 100644
--- /dev/null
+++ b/layout/style/Makefile.in
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# TODO This list should be emitted to a .pp file via
+# GenerateCSSPropsGenerated.py (bug 1281614)
+csspropsidlnames_dependencies = \
+  $(srcdir)/nsCSSPropList.h \
+  $(srcdir)/nsCSSPropAliasList.h \
+  $(srcdir)/nsCSSPropsGenerated.inc.in \
+  $(srcdir)/PythonCSSProps.h \
+  $(srcdir)/GenerateCSSPropsGenerated.py \
+  $(GLOBAL_DEPS) \
+  $(NULL)
+
+nsCSSPropsGenerated.inc : $(csspropsidlnames_dependencies)
new file mode 100644
--- /dev/null
+++ b/layout/style/PythonCSSProps.h
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* A file meant as input to the preprocessor only */
+
+/* DO_PROP serves as an extra level of indirection to allow expansion
+   of CSS_PROP_DOMPROP_PREFIXED */
+
+[
+
+#define PROP_STRINGIFY_INTERNAL(X) #X
+#define PROP_STRINGIFY(X) PROP_STRINGIFY_INTERNAL(X)
+
+#define DO_PROP(name, method, id, flags, pref, proptype) \
+  [ #name, #method, #id, PROP_STRINGIFY(flags), pref, proptype ],
+#define CSS_PROP(name, id, method, flags, pref, ...) \
+  DO_PROP(name, method, id, flags, pref, "longhand")
+#define CSS_PROP_SHORTHAND(name, id, method, flags, pref) \
+  DO_PROP(name, method, id, flags, pref, "shorthand")
+#define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) publicname_
+
+#include "nsCSSPropList.h"
+
+#undef CSS_PROP_PUBLIC_OR_PRIVATE
+#undef CSS_PROP_SHORTHAND
+#undef CSS_PROP
+
+#define CSS_PROP_ALIAS(name, aliasid_, id, method, pref) \
+  DO_PROP(name, method, id, 0, pref, "alias")
+
+#include "nsCSSPropAliasList.h"
+
+#undef CSS_PROP_ALIAS
+
+#undef DO_PROP
+#undef PROP_STRINGIFY
+#undef PROP_STRINGIFY_INTERNAL
+
+]
deleted file mode 100644
--- a/layout/style/ServoCSSPropList.mako.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at https://mozilla.org/MPL/2.0/.
-
-<%!
-# nsCSSPropertyID of longhands and shorthands is ordered alphabetically
-# with vendor prefixes removed. Note that aliases use their alias name
-# as order key directly because they may be duplicate without prefix.
-def order_key(prop):
-    if prop.name.startswith("-"):
-        return prop.name[prop.name.find("-", 1) + 1:]
-    return prop.name
-
-# See bug 1454823 for situation of internal flag.
-def is_internal(prop):
-    # A property which is not controlled by pref and not enabled in
-    # content by default is an internal property.
-    if not prop.gecko_pref and not prop.enabled_in_content():
-        return True
-    # There are some special cases we may want to remove eventually.
-    OTHER_INTERNALS = [
-        "-moz-context-properties",
-        "-moz-control-character-visibility",
-    ]
-    return prop.name in OTHER_INTERNALS
-
-def flags(prop):
-    result = []
-    if prop.explicitly_enabled_in_chrome():
-        result.append("CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME")
-    elif prop.explicitly_enabled_in_ua_sheets():
-        result.append("CSS_PROPERTY_ENABLED_IN_UA_SHEETS")
-    if is_internal(prop):
-        result.append("CSS_PROPERTY_INTERNAL")
-    if prop.enabled_in == "":
-        result.append("CSS_PROPERTY_PARSE_INACCESSIBLE")
-    return ", ".join('"{}"'.format(flag) for flag in result)
-
-def pref(prop):
-    if prop.gecko_pref:
-        return '"' + prop.gecko_pref + '"'
-    return '""'
-%>
-
-[
-    % for prop in sorted(data.longhands, key=order_key):
-    (
-        "${prop.name}",
-        % if prop.name == "float":
-        "CssFloat",
-        % elif prop.name.startswith("-x-"):
-        "${prop.camel_case[1:]}",
-        % else:
-        "${prop.camel_case}",
-        % endif
-        "${prop.ident}",
-        [${flags(prop)}],
-        ${pref(prop)},
-        "longhand",
-    ),
-    % endfor
-
-    % for prop in sorted(data.shorthands, key=order_key):
-    (
-        "${prop.name}",
-        "${prop.camel_case}",
-        "${prop.ident}",
-        [${flags(prop)}],
-        ${pref(prop)},
-        "shorthand",
-    ),
-    % endfor
-
-    % for prop in sorted(data.all_aliases(), key=lambda x: x.name):
-    (
-        "${prop.name}",
-        "${prop.camel_case}",
-        ("${prop.ident}", "${prop.original.ident}"),
-        [],
-        ${pref(prop)},
-        "alias",
-    ),
-    % endfor
-]
--- a/layout/style/moz.build
+++ b/layout/style/moz.build
@@ -58,17 +58,16 @@ EXPORTS += [
     'nsStyleStructInlines.h',
     'nsStyleStructList.h',
     'nsStyleTransformMatrix.h',
     'nsStyleUtil.h',
     'nsTimingFunction.h',
 ]
 
 EXPORTS.mozilla += [
-    '!ServoCSSPropList.h',
     'AnimationCollection.h',
     'BindingStyleRule.h',
     'CachedInheritingStyles.h',
     'ComputedStyle.h',
     'ComputedStyleInlines.h',
     'CSSEnabledState.h',
     'DeclarationBlock.h',
     'DeclarationBlockInlines.h',
@@ -270,40 +269,22 @@ RESOURCE_FILES += [
 CONTENT_ACCESSIBLE_FILES += [
     'ImageDocument.css',
     'res/plaintext.css',
     'res/viewsource.css',
     'TopLevelImageDocument.css',
     'TopLevelVideoDocument.css',
 ]
 
-GENERATED_FILES += [
-    'ServoCSSPropList.h',
-    'ServoCSSPropList.py',
-]
-
-servo_props = GENERATED_FILES['ServoCSSPropList.h']
-servo_props.script = 'GenerateServoCSSPropList.py:generate_header'
-servo_props.inputs = [
-    '!ServoCSSPropList.py',
-]
-
-servo_props = GENERATED_FILES['ServoCSSPropList.py']
-servo_props.script = 'GenerateServoCSSPropList.py:generate_data'
-servo_props.inputs = [
-    'ServoCSSPropList.mako.py',
-]
-
 if CONFIG['COMPILE_ENVIRONMENT']:
     GENERATED_FILES += [
         'nsCSSPropsGenerated.inc',
     ]
-
     css_props = GENERATED_FILES['nsCSSPropsGenerated.inc']
     css_props.script = 'GenerateCSSPropsGenerated.py:generate'
     css_props.inputs = [
         'nsCSSPropsGenerated.inc.in',
-        '!ServoCSSPropList.py',
+        'PythonCSSProps.h',
     ]
 
     CONFIGURE_SUBST_FILES += [
         'bindgen.toml',
     ]
--- a/layout/style/nsCSSPropAliasList.h
+++ b/layout/style/nsCSSPropAliasList.h
@@ -34,16 +34,81 @@
   than needing the CSS_PROP_DOMPROP_PREFIXED(prop) macro).
 
   -. 'pref' is the name of a pref that controls whether the property
   is enabled.  The property is enabled if 'pref' is an empty string,
   or if the boolean property whose name is 'pref' is set to true.
 
  ******/
 
+CSS_PROP_ALIAS(word-wrap,
+               word_wrap,
+               overflow_wrap,
+               WordWrap,
+               "")
+CSS_PROP_ALIAS(-moz-transform,
+               _moz_transform,
+               transform,
+               MozTransform,
+               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-transform-origin,
+               _moz_transform_origin,
+               transform_origin,
+               MozTransformOrigin,
+               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-perspective-origin,
+               _moz_perspective_origin,
+               perspective_origin,
+               MozPerspectiveOrigin,
+               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-perspective,
+               _moz_perspective,
+               perspective,
+               MozPerspective,
+               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-transform-style,
+               _moz_transform_style,
+               transform_style,
+               MozTransformStyle,
+               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-backface-visibility,
+               _moz_backface_visibility,
+               backface_visibility,
+               MozBackfaceVisibility,
+               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-border-image,
+               _moz_border_image,
+               border_image,
+               MozBorderImage,
+               "layout.css.prefixes.border-image")
+CSS_PROP_ALIAS(-moz-transition,
+               _moz_transition,
+               transition,
+               MozTransition,
+               "layout.css.prefixes.transitions")
+CSS_PROP_ALIAS(-moz-transition-delay,
+               _moz_transition_delay,
+               transition_delay,
+               MozTransitionDelay,
+               "layout.css.prefixes.transitions")
+CSS_PROP_ALIAS(-moz-transition-duration,
+               _moz_transition_duration,
+               transition_duration,
+               MozTransitionDuration,
+               "layout.css.prefixes.transitions")
+CSS_PROP_ALIAS(-moz-transition-property,
+               _moz_transition_property,
+               transition_property,
+               MozTransitionProperty,
+               "layout.css.prefixes.transitions")
+CSS_PROP_ALIAS(-moz-transition-timing-function,
+               _moz_transition_timing_function,
+               transition_timing_function,
+               MozTransitionTimingFunction,
+               "layout.css.prefixes.transitions")
 CSS_PROP_ALIAS(-moz-animation,
                _moz_animation,
                animation,
                MozAnimation,
                "layout.css.prefixes.animations")
 CSS_PROP_ALIAS(-moz-animation-delay,
                _moz_animation_delay,
                animation_delay,
@@ -79,21 +144,51 @@ CSS_PROP_ALIAS(-moz-animation-play-state
                animation_play_state,
                MozAnimationPlayState,
                "layout.css.prefixes.animations")
 CSS_PROP_ALIAS(-moz-animation-timing-function,
                _moz_animation_timing_function,
                animation_timing_function,
                MozAnimationTimingFunction,
                "layout.css.prefixes.animations")
-CSS_PROP_ALIAS(-moz-backface-visibility,
-               _moz_backface_visibility,
-               backface_visibility,
-               MozBackfaceVisibility,
-               "layout.css.prefixes.transforms")
+CSS_PROP_ALIAS(-moz-box-sizing,
+               _moz_box_sizing,
+               box_sizing,
+               MozBoxSizing,
+               "layout.css.prefixes.box-sizing")
+CSS_PROP_ALIAS(-moz-font-feature-settings,
+               _moz_font_feature_settings,
+               font_feature_settings,
+               MozFontFeatureSettings,
+               "layout.css.prefixes.font-features")
+CSS_PROP_ALIAS(-moz-font-language-override,
+               _moz_font_language_override,
+               font_language_override,
+               MozFontLanguageOverride,
+               "layout.css.prefixes.font-features")
+CSS_PROP_ALIAS(-moz-padding-end,
+               _moz_padding_end,
+               padding_inline_end,
+               MozPaddingEnd,
+               "")
+CSS_PROP_ALIAS(-moz-padding-start,
+               _moz_padding_start,
+               padding_inline_start,
+               MozPaddingStart,
+               "")
+CSS_PROP_ALIAS(-moz-margin-end,
+               _moz_margin_end,
+               margin_inline_end,
+               MozMarginEnd,
+               "")
+CSS_PROP_ALIAS(-moz-margin-start,
+               _moz_margin_start,
+               margin_inline_start,
+               MozMarginStart,
+               "")
 CSS_PROP_ALIAS(-moz-border-end,
                _moz_border_end,
                border_inline_end,
                MozBorderEnd,
                "")
 CSS_PROP_ALIAS(-moz-border-end-color,
                _moz_border_end_color,
                border_inline_end_color,
@@ -104,21 +199,16 @@ CSS_PROP_ALIAS(-moz-border-end-style,
                border_inline_end_style,
                MozBorderEndStyle,
                "")
 CSS_PROP_ALIAS(-moz-border-end-width,
                _moz_border_end_width,
                border_inline_end_width,
                MozBorderEndWidth,
                "")
-CSS_PROP_ALIAS(-moz-border-image,
-               _moz_border_image,
-               border_image,
-               MozBorderImage,
-               "layout.css.prefixes.border-image")
 CSS_PROP_ALIAS(-moz-border-start,
                _moz_border_start,
                border_inline_start,
                MozBorderStart,
                "")
 CSS_PROP_ALIAS(-moz-border-start-color,
                _moz_border_start_color,
                border_inline_start_color,
@@ -129,21 +219,21 @@ CSS_PROP_ALIAS(-moz-border-start-style,
                border_inline_start_style,
                MozBorderStartStyle,
                "")
 CSS_PROP_ALIAS(-moz-border-start-width,
                _moz_border_start_width,
                border_inline_start_width,
                MozBorderStartWidth,
                "")
-CSS_PROP_ALIAS(-moz-box-sizing,
-               _moz_box_sizing,
-               box_sizing,
-               MozBoxSizing,
-               "layout.css.prefixes.box-sizing")
+CSS_PROP_ALIAS(-moz-hyphens,
+               _moz_hyphens,
+               hyphens,
+               MozHyphens,
+               "")
 CSS_PROP_ALIAS(-moz-column-count,
                _moz_column_count,
                column_count,
                MozColumnCount,
                "")
 CSS_PROP_ALIAS(-moz-column-fill,
                _moz_column_fill,
                column_fill,
@@ -184,120 +274,20 @@ CSS_PROP_ALIAS(-moz-column-width,
                column_width,
                MozColumnWidth,
                "")
 CSS_PROP_ALIAS(-moz-columns,
                _moz_columns,
                columns,
                MozColumns,
                "")
-CSS_PROP_ALIAS(-moz-font-feature-settings,
-               _moz_font_feature_settings,
-               font_feature_settings,
-               MozFontFeatureSettings,
-               "layout.css.prefixes.font-features")
-CSS_PROP_ALIAS(-moz-font-language-override,
-               _moz_font_language_override,
-               font_language_override,
-               MozFontLanguageOverride,
-               "layout.css.prefixes.font-features")
-CSS_PROP_ALIAS(-moz-hyphens,
-               _moz_hyphens,
-               hyphens,
-               MozHyphens,
-               "")
-CSS_PROP_ALIAS(-moz-margin-end,
-               _moz_margin_end,
-               margin_inline_end,
-               MozMarginEnd,
-               "")
-CSS_PROP_ALIAS(-moz-margin-start,
-               _moz_margin_start,
-               margin_inline_start,
-               MozMarginStart,
-               "")
-CSS_PROP_ALIAS(-moz-padding-end,
-               _moz_padding_end,
-               padding_inline_end,
-               MozPaddingEnd,
-               "")
-CSS_PROP_ALIAS(-moz-padding-start,
-               _moz_padding_start,
-               padding_inline_start,
-               MozPaddingStart,
-               "")
-CSS_PROP_ALIAS(-moz-perspective,
-               _moz_perspective,
-               perspective,
-               MozPerspective,
-               "layout.css.prefixes.transforms")
-CSS_PROP_ALIAS(-moz-perspective-origin,
-               _moz_perspective_origin,
-               perspective_origin,
-               MozPerspectiveOrigin,
-               "layout.css.prefixes.transforms")
-CSS_PROP_ALIAS(-moz-transform,
-               _moz_transform,
-               transform,
-               MozTransform,
-               "layout.css.prefixes.transforms")
-CSS_PROP_ALIAS(-moz-transform-origin,
-               _moz_transform_origin,
-               transform_origin,
-               MozTransformOrigin,
-               "layout.css.prefixes.transforms")
-CSS_PROP_ALIAS(-moz-transform-style,
-               _moz_transform_style,
-               transform_style,
-               MozTransformStyle,
-               "layout.css.prefixes.transforms")
-CSS_PROP_ALIAS(-moz-transition,
-               _moz_transition,
-               transition,
-               MozTransition,
-               "layout.css.prefixes.transitions")
-CSS_PROP_ALIAS(-moz-transition-delay,
-               _moz_transition_delay,
-               transition_delay,
-               MozTransitionDelay,
-               "layout.css.prefixes.transitions")
-CSS_PROP_ALIAS(-moz-transition-duration,
-               _moz_transition_duration,
-               transition_duration,
-               MozTransitionDuration,
-               "layout.css.prefixes.transitions")
-CSS_PROP_ALIAS(-moz-transition-property,
-               _moz_transition_property,
-               transition_property,
-               MozTransitionProperty,
-               "layout.css.prefixes.transitions")
-CSS_PROP_ALIAS(-moz-transition-timing-function,
-               _moz_transition_timing_function,
-               transition_timing_function,
-               MozTransitionTimingFunction,
-               "layout.css.prefixes.transitions")
 
 #define WEBKIT_PREFIX_PREF "layout.css.prefixes.webkit"
 
 // -webkit- prefixes
-CSS_PROP_ALIAS(-webkit-align-content,
-               _webkit_align_content,
-               align_content,
-               WebkitAlignContent,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-align-items,
-               _webkit_align_items,
-               align_items,
-               WebkitAlignItems,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-align-self,
-               _webkit_align_self,
-               align_self,
-               WebkitAlignSelf,
-               WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-animation,
                _webkit_animation,
                animation,
                WebkitAnimation,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-animation-delay,
                _webkit_animation_delay,
                animation_delay,
@@ -333,158 +323,248 @@ CSS_PROP_ALIAS(-webkit-animation-play-st
                animation_play_state,
                WebkitAnimationPlayState,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-animation-timing-function,
                _webkit_animation_timing_function,
                animation_timing_function,
                WebkitAnimationTimingFunction,
                WEBKIT_PREFIX_PREF)
+
+CSS_PROP_ALIAS(-webkit-filter,
+               _webkit_filter,
+               filter,
+               WebkitFilter,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-text-size-adjust,
+               _webkit_text_size_adjust,
+               _moz_text_size_adjust,
+               WebkitTextSizeAdjust,
+               WEBKIT_PREFIX_PREF)
+
+CSS_PROP_ALIAS(-webkit-transform,
+               _webkit_transform,
+               transform,
+               WebkitTransform,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-transform-origin,
+               _webkit_transform_origin,
+               transform_origin,
+               WebkitTransformOrigin,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-transform-style,
+               _webkit_transform_style,
+               transform_style,
+               WebkitTransformStyle,
+               WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-backface-visibility,
                _webkit_backface_visibility,
                backface_visibility,
                WebkitBackfaceVisibility,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-background-clip,
-               _webkit_background_clip,
-               background_clip,
-               WebkitBackgroundClip,
+CSS_PROP_ALIAS(-webkit-perspective,
+               _webkit_perspective,
+               perspective,
+               WebkitPerspective,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-background-origin,
-               _webkit_background_origin,
-               background_origin,
-               WebkitBackgroundOrigin,
+CSS_PROP_ALIAS(-webkit-perspective-origin,
+               _webkit_perspective_origin,
+               perspective_origin,
+               WebkitPerspectiveOrigin,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-background-size,
-               _webkit_background_size,
-               background_size,
-               WebkitBackgroundSize,
+
+CSS_PROP_ALIAS(-webkit-transition,
+               _webkit_transition,
+               transition,
+               WebkitTransition,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-border-bottom-left-radius,
-               _webkit_border_bottom_left_radius,
-               border_bottom_left_radius,
-               WebkitBorderBottomLeftRadius, // really no dom property
+CSS_PROP_ALIAS(-webkit-transition-delay,
+               _webkit_transition_delay,
+               transition_delay,
+               WebkitTransitionDelay,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-transition-duration,
+               _webkit_transition_duration,
+               transition_duration,
+               WebkitTransitionDuration,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-border-bottom-right-radius,
-               _webkit_border_bottom_right_radius,
-               border_bottom_right_radius,
-               WebkitBorderBottomRightRadius, // really no dom property
+CSS_PROP_ALIAS(-webkit-transition-property,
+               _webkit_transition_property,
+               transition_property,
+               WebkitTransitionProperty,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-border-image,
-               _webkit_border_image,
-               border_image,
-               WebkitBorderImage,
+CSS_PROP_ALIAS(-webkit-transition-timing-function,
+               _webkit_transition_timing_function,
+               transition_timing_function,
+               WebkitTransitionTimingFunction,
                WEBKIT_PREFIX_PREF)
+
 CSS_PROP_ALIAS(-webkit-border-radius,
                _webkit_border_radius,
                border_radius,
                WebkitBorderRadius,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-border-top-left-radius,
                _webkit_border_top_left_radius,
                border_top_left_radius,
                WebkitBorderTopLeftRadius, // really no dom property
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-border-top-right-radius,
                _webkit_border_top_right_radius,
                border_top_right_radius,
                WebkitBorderTopRightRadius, // really no dom property
                WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-border-bottom-left-radius,
+               _webkit_border_bottom_left_radius,
+               border_bottom_left_radius,
+               WebkitBorderBottomLeftRadius, // really no dom property
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-border-bottom-right-radius,
+               _webkit_border_bottom_right_radius,
+               border_bottom_right_radius,
+               WebkitBorderBottomRightRadius, // really no dom property
+               WEBKIT_PREFIX_PREF)
+
+CSS_PROP_ALIAS(-webkit-background-clip,
+               _webkit_background_clip,
+               background_clip,
+               WebkitBackgroundClip,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-background-origin,
+               _webkit_background_origin,
+               background_origin,
+               WebkitBackgroundOrigin,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-background-size,
+               _webkit_background_size,
+               background_size,
+               WebkitBackgroundSize,
+               WEBKIT_PREFIX_PREF)
+
+CSS_PROP_ALIAS(-webkit-border-image,
+               _webkit_border_image,
+               border_image,
+               WebkitBorderImage,
+               WEBKIT_PREFIX_PREF)
+
+CSS_PROP_ALIAS(-webkit-box-shadow,
+               _webkit_box_shadow,
+               box_shadow,
+               WebkitBoxShadow,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-box-sizing,
+               _webkit_box_sizing,
+               box_sizing,
+               WebkitBoxSizing,
+               WEBKIT_PREFIX_PREF)
 
 // Alias -webkit-box properties to their -moz-box equivalents.
 // (NOTE: Even though they're aliases, in practice these -webkit properties
 // will behave a bit differently from their -moz versions, if they're
 // accompanied by "display:-webkit-box", because we generate a different frame
 // for those two display values.)
-CSS_PROP_ALIAS(-webkit-box-align,
-               _webkit_box_align,
-               _moz_box_align,
-               WebkitBoxAlign,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-box-direction,
-               _webkit_box_direction,
-               _moz_box_direction,
-               WebkitBoxDirection,
-               WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-box-flex,
                _webkit_box_flex,
                _moz_box_flex,
                WebkitBoxFlex,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-box-ordinal-group,
                _webkit_box_ordinal_group,
                _moz_box_ordinal_group,
                WebkitBoxOrdinalGroup,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-box-orient,
                _webkit_box_orient,
                _moz_box_orient,
                WebkitBoxOrient,
                WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-box-direction,
+               _webkit_box_direction,
+               _moz_box_direction,
+               WebkitBoxDirection,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-box-align,
+               _webkit_box_align,
+               _moz_box_align,
+               WebkitBoxAlign,
+               WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-box-pack,
                _webkit_box_pack,
                _moz_box_pack,
                WebkitBoxPack,
                WEBKIT_PREFIX_PREF)
 
-CSS_PROP_ALIAS(-webkit-box-shadow,
-               _webkit_box_shadow,
-               box_shadow,
-               WebkitBoxShadow,
+// Alias -webkit-flex related properties to their unprefixed equivalents:
+// (Matching ordering at https://drafts.csswg.org/css-flexbox-1/#property-index )
+CSS_PROP_ALIAS(-webkit-flex-direction,
+               _webkit_flex_direction,
+               flex_direction,
+               WebkitFlexDirection,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-box-sizing,
-               _webkit_box_sizing,
-               box_sizing,
-               WebkitBoxSizing,
+CSS_PROP_ALIAS(-webkit-flex-wrap,
+               _webkit_flex_wrap,
+               flex_wrap,
+               WebkitFlexWrap,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-filter,
-               _webkit_filter,
-               filter,
-               WebkitFilter,
+CSS_PROP_ALIAS(-webkit-flex-flow,
+               _webkit_flex_flow,
+               flex_flow,
+               WebkitFlexFlow,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-order,
+               _webkit_order,
+               order,
+               WebkitOrder,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-flex,
                _webkit_flex,
                flex,
                WebkitFlex,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-flex-basis,
-               _webkit_flex_basis,
-               flex_basis,
-               WebkitFlexBasis,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-flex-direction,
-               _webkit_flex_direction,
-               flex_direction,
-               WebkitFlexDirection,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-flex-flow,
-               _webkit_flex_flow,
-               flex_flow,
-               WebkitFlexFlow,
-               WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-flex-grow,
                _webkit_flex_grow,
                flex_grow,
                WebkitFlexGrow,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-flex-shrink,
                _webkit_flex_shrink,
                flex_shrink,
                WebkitFlexShrink,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-flex-wrap,
-               _webkit_flex_wrap,
-               flex_wrap,
-               WebkitFlexWrap,
+CSS_PROP_ALIAS(-webkit-flex-basis,
+               _webkit_flex_basis,
+               flex_basis,
+               WebkitFlexBasis,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-justify-content,
                _webkit_justify_content,
                justify_content,
                WebkitJustifyContent,
                WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-align-items,
+               _webkit_align_items,
+               align_items,
+               WebkitAlignItems,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-align-self,
+               _webkit_align_self,
+               align_self,
+               WebkitAlignSelf,
+               WEBKIT_PREFIX_PREF)
+CSS_PROP_ALIAS(-webkit-align-content,
+               _webkit_align_content,
+               align_content,
+               WebkitAlignContent,
+               WEBKIT_PREFIX_PREF)
+
+CSS_PROP_ALIAS(-webkit-user-select,
+               _webkit_user_select,
+               _moz_user_select,
+               WebkitUserSelect,
+               WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-mask,
                _webkit_mask,
                mask,
                WebkitMask,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-mask-clip,
                _webkit_mask_clip,
                mask_clip,
@@ -525,80 +605,9 @@ CSS_PROP_ALIAS(-webkit-mask-repeat,
                mask_repeat,
                WebkitMaskRepeat,
                WEBKIT_PREFIX_PREF)
 CSS_PROP_ALIAS(-webkit-mask-size,
                _webkit_mask_size,
                mask_size,
                WebkitMaskSize,
                WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-order,
-               _webkit_order,
-               order,
-               WebkitOrder,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-perspective,
-               _webkit_perspective,
-               perspective,
-               WebkitPerspective,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-perspective-origin,
-               _webkit_perspective_origin,
-               perspective_origin,
-               WebkitPerspectiveOrigin,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-text-size-adjust,
-               _webkit_text_size_adjust,
-               _moz_text_size_adjust,
-               WebkitTextSizeAdjust,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transform,
-               _webkit_transform,
-               transform,
-               WebkitTransform,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transform-origin,
-               _webkit_transform_origin,
-               transform_origin,
-               WebkitTransformOrigin,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transform-style,
-               _webkit_transform_style,
-               transform_style,
-               WebkitTransformStyle,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transition,
-               _webkit_transition,
-               transition,
-               WebkitTransition,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transition-delay,
-               _webkit_transition_delay,
-               transition_delay,
-               WebkitTransitionDelay,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transition-duration,
-               _webkit_transition_duration,
-               transition_duration,
-               WebkitTransitionDuration,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transition-property,
-               _webkit_transition_property,
-               transition_property,
-               WebkitTransitionProperty,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-transition-timing-function,
-               _webkit_transition_timing_function,
-               transition_timing_function,
-               WebkitTransitionTimingFunction,
-               WEBKIT_PREFIX_PREF)
-CSS_PROP_ALIAS(-webkit-user-select,
-               _webkit_user_select,
-               _moz_user_select,
-               WebkitUserSelect,
-               WEBKIT_PREFIX_PREF)
 #undef WEBKIT_PREFIX_PREF
-
-CSS_PROP_ALIAS(word-wrap,
-               word_wrap,
-               overflow_wrap,
-               WordWrap,
-               "")
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -1665,16 +1665,25 @@ CSS_PROP_(
     hyphens,
     Hyphens,
     0,
     "",
     VARIANT_HK,
     kHyphensKTable,
     eStyleAnimType_Discrete)
 CSS_PROP_(
+    initial-letter,
+    initial_letter,
+    InitialLetter,
+    CSS_PROPERTY_PARSE_FUNCTION,
+    "layout.css.initial-letter.enabled",
+    0,
+    nullptr,
+    eStyleAnimType_Discrete)
+CSS_PROP_(
     image-orientation,
     image_orientation,
     ImageOrientation,
     CSS_PROPERTY_VALUE_PARSER_FUNCTION,
     "layout.css.image-orientation.enabled",
     0,
     kImageOrientationKTable,
     eStyleAnimType_Discrete)
@@ -1701,25 +1710,16 @@ CSS_PROP_(
     ime_mode,
     ImeMode,
     0,
     "",
     VARIANT_HK,
     kIMEModeKTable,
     eStyleAnimType_Discrete)
 CSS_PROP_(
-    initial-letter,
-    initial_letter,
-    InitialLetter,
-    CSS_PROPERTY_PARSE_FUNCTION,
-    "layout.css.initial-letter.enabled",
-    0,
-    nullptr,
-    eStyleAnimType_Discrete)
-CSS_PROP_(
     inline-size,
     inline_size,
     InlineSize,
     CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
     "",
     VARIANT_AHKLP | VARIANT_CALC,
     kWidthKTable,
     eStyleAnimType_None)
@@ -2378,25 +2378,16 @@ CSS_PROP_(
     overflow_clip_box_inline,
     OverflowClipBoxInline,
     CSS_PROPERTY_ENABLED_IN_UA_SHEETS,
     "layout.css.overflow-clip-box.enabled",
     VARIANT_HK,
     kOverflowClipBoxKTable,
     eStyleAnimType_Discrete)
 CSS_PROP_(
-    overflow-wrap,
-    overflow_wrap,
-    OverflowWrap,
-    0,
-    "",
-    VARIANT_HK,
-    kOverflowWrapKTable,
-    eStyleAnimType_Discrete)
-CSS_PROP_(
     overflow-x,
     overflow_x,
     OverflowX,
     0,
     "",
     VARIANT_HK,
     kOverflowSubKTable,
     eStyleAnimType_Discrete)
@@ -2405,40 +2396,16 @@ CSS_PROP_(
     overflow_y,
     OverflowY,
     0,
     "",
     VARIANT_HK,
     kOverflowSubKTable,
     eStyleAnimType_Discrete)
 CSS_PROP_SHORTHAND(
-    overscroll-behavior,
-    overscroll_behavior,
-    OverscrollBehavior,
-    CSS_PROPERTY_PARSE_FUNCTION,
-    "layout.css.overscroll-behavior.enabled")
-CSS_PROP_(
-    overscroll-behavior-x,
-    overscroll_behavior_x,
-    OverscrollBehaviorX,
-    0,
-    "layout.css.overscroll-behavior.enabled",
-    VARIANT_HK,
-    kOverscrollBehaviorKTable,
-    eStyleAnimType_Discrete)
-CSS_PROP_(
-    overscroll-behavior-y,
-    overscroll_behavior_y,
-    OverscrollBehaviorY,
-    0,
-    "layout.css.overscroll-behavior.enabled",
-    VARIANT_HK,
-    kOverscrollBehaviorKTable,
-    eStyleAnimType_Discrete)
-CSS_PROP_SHORTHAND(
     padding,
     padding,
     Padding,
     CSS_PROPERTY_PARSE_FUNCTION,
     "")
 CSS_PROP_(
     padding-block-end,
     padding_block_end,
@@ -2653,26 +2620,16 @@ CSS_PROP_(
     ruby-position,
     ruby_position,
     RubyPosition,
     0,
     "",
     VARIANT_HK,
     kRubyPositionKTable,
     eStyleAnimType_Discrete)
-CSS_PROP_(
-    scale,
-    scale,
-    Scale,
-    CSS_PROPERTY_PARSE_FUNCTION |
-        CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
-    "layout.css.individual-transform.enabled",
-    0,
-    nullptr,
-    eStyleAnimType_None)
 #ifndef CSS_PROP_LIST_ONLY_COMPONENTS_OF_ALL_SHORTHAND
 #ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_(
     -moz-script-level,
     _moz_script_level,
     ScriptLevel,
     // We only allow 'script-level' when unsafe rules are enabled, because
     // otherwise it could interfere with rulenode optimizations if used in
@@ -2712,16 +2669,40 @@ CSS_PROP_(
     scroll-behavior,
     scroll_behavior,
     ScrollBehavior,
     0,
     "layout.css.scroll-behavior.property-enabled",
     VARIANT_HK,
     kScrollBehaviorKTable,
     eStyleAnimType_Discrete)
+CSS_PROP_SHORTHAND(
+    overscroll-behavior,
+    overscroll_behavior,
+    OverscrollBehavior,
+    CSS_PROPERTY_PARSE_FUNCTION,
+    "layout.css.overscroll-behavior.enabled")
+CSS_PROP_(
+    overscroll-behavior-x,
+    overscroll_behavior_x,
+    OverscrollBehaviorX,
+    0,
+    "layout.css.overscroll-behavior.enabled",
+    VARIANT_HK,
+    kOverscrollBehaviorKTable,
+    eStyleAnimType_Discrete)
+CSS_PROP_(
+    overscroll-behavior-y,
+    overscroll_behavior_y,
+    OverscrollBehaviorY,
+    0,
+    "layout.css.overscroll-behavior.enabled",
+    VARIANT_HK,
+    kOverscrollBehaviorKTable,
+    eStyleAnimType_Discrete)
 CSS_PROP_(
     scroll-snap-coordinate,
     scroll_snap_coordinate,
     ScrollSnapCoordinate,
     CSS_PROPERTY_VALUE_PARSER_FUNCTION |
         CSS_PROPERTY_VALUE_LIST_USES_COMMAS,
     "layout.css.scroll-snap.enabled",
     0,
@@ -3136,16 +3117,26 @@ CSS_PROP_(
     _webkit_text_stroke_width,
     WebkitTextStrokeWidth,
     0,
     "layout.css.prefixes.webkit",
     VARIANT_HKL | VARIANT_CALC,
     kBorderWidthKTable,
     eStyleAnimType_Discrete)
 CSS_PROP_(
+    scale,
+    scale,
+    Scale,
+    CSS_PROPERTY_PARSE_FUNCTION |
+        CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
+    "layout.css.individual-transform.enabled",
+    0,
+    nullptr,
+    eStyleAnimType_None)
+CSS_PROP_(
     text-transform,
     text_transform,
     TextTransform,
     0,
     "",
     VARIANT_HK,
     kTextTransformKTable,
     eStyleAnimType_Discrete)
@@ -3396,54 +3387,51 @@ CSS_PROP_(
     CSS_PROP_DOMPROP_PREFIXED(WindowDragging),
     0,
     "",
     VARIANT_HK,
     kWindowDraggingKTable,
     eStyleAnimType_Discrete)
 #ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_(
-    -moz-window-opacity,
-    _moz_window_opacity,
-    CSS_PROP_DOMPROP_PREFIXED(WindowOpacity),
-    CSS_PROPERTY_INTERNAL |
-        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME,
-    "",
-    VARIANT_HN,
-    nullptr,
-    eStyleAnimType_float)
-CSS_PROP_(
     -moz-window-shadow,
     _moz_window_shadow,
     CSS_PROP_DOMPROP_PREFIXED(WindowShadow),
     CSS_PROPERTY_INTERNAL |
         CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME,
     "",
     VARIANT_HK,
     kWindowShadowKTable,
     eStyleAnimType_None)
 CSS_PROP_(
+    -moz-window-opacity,
+    _moz_window_opacity,
+    CSS_PROP_DOMPROP_PREFIXED(WindowOpacity),
+    CSS_PROPERTY_INTERNAL | 0,
+    "",
+    VARIANT_HN,
+    nullptr,
+    eStyleAnimType_float)
+CSS_PROP_(
     -moz-window-transform,
     _moz_window_transform,
     CSS_PROP_DOMPROP_PREFIXED(WindowTransform),
     CSS_PROPERTY_INTERNAL |
         CSS_PROPERTY_PARSE_FUNCTION |
-        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME |
         CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
     "",
     0,
     nullptr,
     eStyleAnimType_Custom)
 CSS_PROP_(
     -moz-window-transform-origin,
     _moz_window_transform_origin,
     CSS_PROP_DOMPROP_PREFIXED(WindowTransformOrigin),
     CSS_PROPERTY_INTERNAL |
         CSS_PROPERTY_PARSE_FUNCTION |
-        CSS_PROPERTY_ENABLED_IN_UA_SHEETS_AND_CHROME |
         CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
     "",
     0,
     kImageLayerPositionKTable,
     eStyleAnimType_Custom)
 #endif // CSS_PROP_LIST_EXCLUDE_INTERNAL
 CSS_PROP_(
     word-break,
@@ -3459,16 +3447,25 @@ CSS_PROP_(
     word_spacing,
     WordSpacing,
     0,
     "",
     VARIANT_HLP | VARIANT_NORMAL | VARIANT_CALC,
     nullptr,
     eStyleAnimType_Coord)
 CSS_PROP_(
+    overflow-wrap,
+    overflow_wrap,
+    OverflowWrap,
+    0,
+    "",
+    VARIANT_HK,
+    kOverflowWrapKTable,
+    eStyleAnimType_Discrete)
+CSS_PROP_(
     writing-mode,
     writing_mode,
     WritingMode,
     0,
     "",
     VARIANT_HK,
     kWritingModeKTable,
     eStyleAnimType_Discrete)
--- a/layout/style/nsCSSPropertyID.h
+++ b/layout/style/nsCSSPropertyID.h
@@ -10,41 +10,41 @@
 #define nsCSSPropertyID_h___
 
 #include <nsHashKeys.h>
 
 /*
    Declare the enum list using the magic of preprocessing
    enum values are "eCSSProperty_foo" (where foo is the property)
 
-   To change the list of properties, see ServoCSSPropList.h
+   To change the list of properties, see nsCSSPropList.h
 
  */
 enum nsCSSPropertyID {
   eCSSProperty_UNKNOWN = -1,
 
-  #define CSS_PROP_LONGHAND(name_, id_, ...) eCSSProperty_##id_,
-  #include "mozilla/ServoCSSPropList.h"
-  #undef CSS_PROP_LONGHAND
+  #define CSS_PROP(name_, id_, ...) eCSSProperty_##id_,
+  #include "nsCSSPropList.h"
+  #undef CSS_PROP
 
   eCSSProperty_COUNT_no_shorthands,
   // Make the count continue where it left off:
   eCSSProperty_COUNT_DUMMY = eCSSProperty_COUNT_no_shorthands - 1,
 
   #define CSS_PROP_SHORTHAND(name_, id_, ...) eCSSProperty_##id_,
-  #include "mozilla/ServoCSSPropList.h"
+  #include "nsCSSPropList.h"
   #undef CSS_PROP_SHORTHAND
 
   eCSSProperty_COUNT,
   // Make the count continue where it left off:
   eCSSProperty_COUNT_DUMMY2 = eCSSProperty_COUNT - 1,
 
   #define CSS_PROP_ALIAS(aliasname_, aliasid_, id_, method_, pref_) \
-    eCSSPropertyAlias_##aliasid_,
-  #include "mozilla/ServoCSSPropList.h"
+    eCSSPropertyAlias_##method_,
+  #include "nsCSSPropAliasList.h"
   #undef CSS_PROP_ALIAS
 
   eCSSProperty_COUNT_with_aliases,
   // Make the count continue where it left off:
   eCSSProperty_COUNT_DUMMY3 = eCSSProperty_COUNT_with_aliases - 1,
 
   // Some of the values below could probably overlap with each other
   // if we had a need for them to do so.
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -54,23 +54,25 @@ typedef nsCSSProps::KTableEntry KTableEn
 #include "nsCSSPropList.h"
 #undef CSS_PROP
 
 // required to make the symbol external, so that TestCSSPropertyLookup.cpp can link with it
 extern const char* const kCSSRawProperties[];
 
 // define an array of all CSS properties
 const char* const kCSSRawProperties[eCSSProperty_COUNT_with_aliases] = {
-#define CSS_PROP_LONGHAND(name_, ...) #name_,
-#define CSS_PROP_SHORTHAND(name_, ...) #name_,
-#define CSS_PROP_ALIAS(name_, ...) #name_,
-#include "mozilla/ServoCSSPropList.h"
+#define CSS_PROP(name_, ...) #name_,
+#include "nsCSSPropList.h"
+#undef CSS_PROP
+#define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) #name_,
+#include "nsCSSPropList.h"
+#undef CSS_PROP_SHORTHAND
+#define CSS_PROP_ALIAS(aliasname_, aliasid_, id_, method_, pref_) #aliasname_,
+#include "nsCSSPropAliasList.h"
 #undef CSS_PROP_ALIAS
-#undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_LONGHAND
 };
 
 using namespace mozilla;
 
 static int32_t gPropertyTableRefCount;
 static nsStaticCaseInsensitiveNameTable* gPropertyTable;
 static nsStaticCaseInsensitiveNameTable* gFontDescTable;
 static nsStaticCaseInsensitiveNameTable* gCounterDescTable;
@@ -121,17 +123,17 @@ static const char* const kCSSRawPredefin
 enum {
   eCSSAliasCount = eCSSProperty_COUNT_with_aliases - eCSSProperty_COUNT
 };
 
 // The names are in kCSSRawProperties.
 static nsCSSPropertyID gAliases[eCSSAliasCount != 0 ? eCSSAliasCount : 1] = {
 #define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, pref_)  \
   eCSSProperty_##propid_ ,
-#include "mozilla/ServoCSSPropList.h"
+#include "nsCSSPropAliasList.h"
 #undef CSS_PROP_ALIAS
 };
 
 static nsStaticCaseInsensitiveNameTable*
 CreateStaticTable(const char* const aRawTable[], int32_t aLength)
 {
   auto table = new nsStaticCaseInsensitiveNameTable(aRawTable, aLength);
 #ifdef DEBUG
@@ -140,104 +142,16 @@ CreateStaticTable(const char* const aRaw
     nsAutoCString temp(aRawTable[index]);
     MOZ_ASSERT(-1 == temp.FindChar('_'),
                "underscore char in case insensitive name table");
   }
 #endif
   return table;
 }
 
-#ifdef DEBUG
-static void
-CheckServoCSSPropList()
-{
-  struct PropData {
-    nsCSSPropertyID mID;
-    uint32_t mFlags;
-    const char* mPref;
-  };
-  const PropData sGeckoProps[eCSSProperty_COUNT_with_aliases] = {
-#define CSS_PROP(name_, id_, method_, flags_, pref_, ...) \
-    { eCSSProperty_##id_, flags_, pref_ },
-#include "nsCSSPropList.h"
-#undef CSS_PROP
-
-#define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
-    { eCSSProperty_##id_, flags_, pref_ },
-#include "nsCSSPropList.h"
-#undef CSS_PROP_SHORTHAND
-
-#define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, pref_) \
-    { eCSSPropertyAlias_##aliasid_, 0, pref_ },
-#include "nsCSSPropAliasList.h"
-#undef CSS_PROP_ALIAS
-  };
-  const PropData sServoProps[eCSSProperty_COUNT_with_aliases] = {
-#define CSS_PROP_LONGHAND(name_, id_, method_, flags_, pref_) \
-    { eCSSProperty_##id_, flags_, pref_ },
-#define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
-    { eCSSProperty_##id_, flags_, pref_ },
-#define CSS_PROP_ALIAS(name_, aliasid_, id_, method_, pref_) \
-    { eCSSPropertyAlias_##aliasid_, 0, pref_ },
-#include "mozilla/ServoCSSPropList.h"
-#undef CSS_PROP_ALIAS
-#undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_LONGHAND
-  };
-
-  const uint32_t kServoFlags =
-    CSS_PROPERTY_ENABLED_MASK | CSS_PROPERTY_INTERNAL |
-    CSS_PROPERTY_PARSE_INACCESSIBLE;
-  bool mismatch = false;
-  for (size_t i = 0; i < eCSSProperty_COUNT_with_aliases; i++) {
-    auto& geckoData = sGeckoProps[i];
-    auto& servoData = sServoProps[i];
-    const char* name = nsCSSProps::GetStringValue(geckoData.mID).get();
-    if (geckoData.mID != servoData.mID) {
-      printf_stderr("Order mismatches: gecko: %s, servo: %s\n",
-                    name, nsCSSProps::GetStringValue(servoData.mID).get());
-      mismatch = true;
-      continue;
-    }
-    if ((geckoData.mFlags & kServoFlags) != servoData.mFlags) {
-      printf_stderr("Enabled flags of %s mismatch\n", name);
-      mismatch = true;
-    }
-    if (strcmp(geckoData.mPref, servoData.mPref) != 0) {
-      printf_stderr("Pref of %s mismatches\n", name);
-      mismatch = true;
-    }
-  }
-
-  const nsCSSPropertyID sGeckoAliases[eCSSAliasCount] = {
-#define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, pref_) \
-    eCSSProperty_##propid_,
-#include "nsCSSPropAliasList.h"
-#undef CSS_PROP_ALIAS
-  };
-  const nsCSSPropertyID sServoAliases[eCSSAliasCount] = {
-#define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, pref_) \
-    eCSSProperty_##propid_,
-#include "mozilla/ServoCSSPropList.h"
-#undef CSS_PROP_ALIAS
-  };
-  for (size_t i = 0; i < eCSSAliasCount; i++) {
-    if (sGeckoAliases[i] == sServoAliases[i]) {
-      continue;
-    }
-    nsCSSPropertyID aliasid = nsCSSPropertyID(eCSSProperty_COUNT + i);
-    printf_stderr("Original property of alias %s mismatches\n",
-                  nsCSSProps::GetStringValue(aliasid).get());
-    mismatch = true;
-  }
-
-  MOZ_ASSERT(!mismatch);
-}
-#endif
-
 void
 nsCSSProps::AddRefTable(void)
 {
   if (0 == gPropertyTableRefCount++) {
     MOZ_ASSERT(!gPropertyTable, "pre existing array!");
     MOZ_ASSERT(!gFontDescTable, "pre existing array!");
     MOZ_ASSERT(!gCounterDescTable, "pre existing array!");
     MOZ_ASSERT(!gPropertyIDLNameTable, "pre existing array!");
@@ -252,40 +166,40 @@ nsCSSProps::AddRefTable(void)
     for (nsCSSPropertyID p = nsCSSPropertyID(0);
          size_t(p) < ArrayLength(kIDLNameTable);
          p = nsCSSPropertyID(p + 1)) {
       if (kIDLNameTable[p]) {
         gPropertyIDLNameTable->Put(nsDependentCString(kIDLNameTable[p]), p);
       }
     }
 
-#ifdef DEBUG
-    CheckServoCSSPropList();
-#endif
-
     static bool prefObserversInited = false;
     if (!prefObserversInited) {
       prefObserversInited = true;
 
       #define OBSERVE_PROP(pref_, id_)                                        \
         if (pref_[0]) {                                                       \
           Preferences::AddBoolVarCache(&gPropertyEnabled[id_],                \
                                        pref_);                                \
         }
 
-      #define CSS_PROP_LONGHAND(name_, id_, method_, flags_, pref_) \
+      #define CSS_PROP(name_, id_, method_, flags_, pref_, ...) \
         OBSERVE_PROP(pref_, eCSSProperty_##id_)
-      #define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
+      #include "nsCSSPropList.h"
+      #undef CSS_PROP
+
+      #define  CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
         OBSERVE_PROP(pref_, eCSSProperty_##id_)
-      #define CSS_PROP_ALIAS(name_, aliasid_, id_, method_, pref_) \
-        OBSERVE_PROP(pref_, eCSSPropertyAlias_##aliasid_)
-      #include "mozilla/ServoCSSPropList.h"
+      #include "nsCSSPropList.h"
+      #undef CSS_PROP_SHORTHAND
+
+      #define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, pref_)    \
+        OBSERVE_PROP(pref_, eCSSPropertyAlias_##aliasmethod_)
+      #include "nsCSSPropAliasList.h"
       #undef CSS_PROP_ALIAS
-      #undef CSS_PROP_SHORTHAND
-      #undef CSS_PROP_LONGHAND
 
       #undef OBSERVE_PROP
     }
 
 #ifdef DEBUG
     {
       // Assert that if CSS_PROPERTY_ENABLED_IN_UA_SHEETS or
       // CSS_PROPERTY_ENABLED_IN_CHROME is used on a shorthand property
@@ -2813,45 +2727,45 @@ nsCSSProps::kSubpropertyTable[eCSSProper
 /* static */ bool
 nsCSSProps::gPropertyEnabled[eCSSProperty_COUNT_with_aliases] = {
   // If the property has any "ENABLED_IN" flag set, it is disabled by
   // default. Note that, if a property has pref, whatever its default
   // value is, it will later be changed in nsCSSProps::AddRefTable().
   // If the property has "ENABLED_IN" flags but doesn't have a pref,
   // it is an internal property which is disabled elsewhere.
   #define IS_ENABLED_BY_DEFAULT(flags_) \
-    (!((flags_) & (CSS_PROPERTY_ENABLED_MASK | CSS_PROPERTY_PARSE_INACCESSIBLE)))
+    (!((flags_) & CSS_PROPERTY_ENABLED_MASK))
 
-  #define CSS_PROP_LONGHAND(name_, id_, method_, flags_, ...) \
-    IS_ENABLED_BY_DEFAULT(flags_),
-  #define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, ...) \
+  #define CSS_PROP(name_, id_, method_, flags_, ...) \
     IS_ENABLED_BY_DEFAULT(flags_),
-  #define CSS_PROP_ALIAS(...) true,
-  #include "mozilla/ServoCSSPropList.h"
+  #include "nsCSSPropList.h"
+  #undef CSS_PROP
+
+  #define  CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
+    IS_ENABLED_BY_DEFAULT(flags_),
+  #include "nsCSSPropList.h"
+  #undef CSS_PROP_SHORTHAND
+
+  #define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, pref_) \
+    true,
+  #include "nsCSSPropAliasList.h"
   #undef CSS_PROP_ALIAS
-  #undef CSS_PROP_SHORTHAND
-  #undef CSS_PROP_LONGHAND
 
   #undef IS_ENABLED_BY_DEFAULT
 };
 
 #include "../../dom/base/PropertyUseCounterMap.inc"
 
 /* static */ const UseCounter
 nsCSSProps::gPropertyUseCounter[eCSSProperty_COUNT_no_shorthands] = {
   #define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) privatename_
-  // Need an extra level of macro nesting to force expansion of method_
-  // params before they get pasted.
-  #define CSS_PROP_USE_COUNTER(method_) \
+  #define CSS_PROP(name_, id_, method_, ...) \
     static_cast<UseCounter>(USE_COUNTER_FOR_CSS_PROPERTY_##method_),
-  #define CSS_PROP_LONGHAND(name_, id_, method_, ...) \
-    CSS_PROP_USE_COUNTER(method_)
-  #include "mozilla/ServoCSSPropList.h"
-  #undef CSS_PROP_LONGHAND
-  #undef CSS_PROP_USE_COUNTER
+  #include "nsCSSPropList.h"
+  #undef CSS_PROP
   #undef CSS_PROP_PUBLIC_OR_PRIVATE
 };
 
 const uint32_t
 nsCSSProps::kParserVariantTable[eCSSProperty_COUNT_no_shorthands] = {
 #define CSS_PROP(name_, id_, method_, flags_, pref_, parsevariant_, ...) \
   parsevariant_,
 #include "nsCSSPropList.h"
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -7169,48 +7169,36 @@ nsComputedDOMStyle::GetComputedStyleMap(
   return &map;
 }
 
 /* static */ void
 nsComputedDOMStyle::RegisterPrefChangeCallbacks()
 {
   // Note that this will register callbacks for all properties with prefs, not
   // just those that are implemented on computed style objects, as it's not
-  // easy to grab specific property data from ServoCSSPropList.h based on the
+  // easy to grab specific property data from nsCSSPropList.h based on the
   // entries iterated in nsComputedDOMStylePropertyList.h.
   ComputedStyleMap* data = GetComputedStyleMap();
 #define REGISTER_CALLBACK(pref_)                                             \
   if (pref_[0]) {                                                            \
     Preferences::RegisterCallback(MarkComputedStyleMapDirty, pref_, data);   \
   }
-#define CSS_PROP_LONGHAND(prop_, id_, method_, flags_, pref_) \
-  REGISTER_CALLBACK(pref_)
-#define CSS_PROP_SHORTHAND(prop_, id_, method_, flags_, pref_) \
+#define CSS_PROP(prop_, id_, method_, flags_, pref_, ...) \
   REGISTER_CALLBACK(pref_)
-#define CSS_PROP_ALIAS(prop_, aliasid_, id_, method_, pref_) \
-  REGISTER_CALLBACK(pref_)
-#include "mozilla/ServoCSSPropList.h"
-#undef CSS_PROP_ALIAS
-#undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_LONGHAND
+#include "nsCSSPropList.h"
+#undef CSS_PROP
 #undef REGISTER_CALLBACK
 }
 
 /* static */ void
 nsComputedDOMStyle::UnregisterPrefChangeCallbacks()
 {
   ComputedStyleMap* data = GetComputedStyleMap();
 #define UNREGISTER_CALLBACK(pref_)                                             \
   if (pref_[0]) {                                                              \
     Preferences::UnregisterCallback(MarkComputedStyleMapDirty, pref_, data);   \
   }
-#define CSS_PROP_LONGHAND(prop_, id_, method_, flags_, pref_) \
-  UNREGISTER_CALLBACK(pref_)
-#define CSS_PROP_SHORTHAND(prop_, id_, method_, flags_, pref_) \
-  UNREGISTER_CALLBACK(pref_)
-#define CSS_PROP_ALIAS(prop_, aliasid_, id_, method_, pref_) \
+#define CSS_PROP(prop_, id_, method_, flags_, pref_, ...) \
   UNREGISTER_CALLBACK(pref_)
-#include "mozilla/ServoCSSPropList.h"
-#undef CSS_PROP_ALIAS
-#undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_LONGHAND
+#include "nsCSSPropList.h"
+#undef CSS_PROP
 #undef UNREGISTER_CALLBACK
 }
--- a/layout/style/nsDOMCSSDeclaration.h
+++ b/layout/style/nsDOMCSSDeclaration.h
@@ -78,38 +78,40 @@ public:
   NS_IMETHOD SetProperty(const nsAString& propertyName,
                          const nsAString& value,
                          const nsAString& priority,
                          nsIPrincipal* aSubjectPrincipal) override;
   uint32_t Length() override;
 
   // WebIDL interface for CSS2Properties
 #define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) publicname_
-#define CSS_PROP(id_, method_)                                               \
+#define CSS_PROP(name_, id_, method_, ...)                                   \
   void                                                                       \
   Get##method_(nsAString& aValue, mozilla::ErrorResult& rv)                  \
   {                                                                          \
     rv = GetPropertyValue(eCSSProperty_##id_, aValue);                       \
   }                                                                          \
                                                                              \
   void                                                                       \
   Set##method_(const nsAString& aValue, nsIPrincipal* aSubjectPrincipal,     \
                mozilla::ErrorResult& rv)                                     \
   {                                                                          \
     rv = SetPropertyValue(eCSSProperty_##id_, aValue, aSubjectPrincipal);    \
   }
 
 #define CSS_PROP_LIST_EXCLUDE_INTERNAL
-#define CSS_PROP_LONGHAND(name_, id_, method_, ...) CSS_PROP(id_, method_)
-#define CSS_PROP_SHORTHAND(name_, id_, method_, ...)  CSS_PROP(id_, method_)
-#define CSS_PROP_ALIAS(name_, aliasid_, id_, method_, ...) CSS_PROP(id_, method_)
-#include "mozilla/ServoCSSPropList.h"
+#define CSS_PROP_SHORTHAND(name_, id_, method_, ...)  CSS_PROP(name_, id_, method_, )
+#include "nsCSSPropList.h"
+
+#define CSS_PROP_ALIAS(aliasname_, aliasid_, propid_, aliasmethod_, ...)  \
+  CSS_PROP(X, propid_, aliasmethod_, )
+#include "nsCSSPropAliasList.h"
 #undef CSS_PROP_ALIAS
+
 #undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_LONGHAND
 #undef CSS_PROP_LIST_EXCLUDE_INTERNAL
 #undef CSS_PROP
 #undef CSS_PROP_PUBLIC_OR_PRIVATE
 
   virtual void IndexedGetter(uint32_t aIndex, bool& aFound, nsAString& aPropName) override;
 
   virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
--- a/layout/style/test/ListCSSProperties.cpp
+++ b/layout/style/test/ListCSSProperties.cpp
@@ -5,91 +5,97 @@
 
 /* build (from code) lists of all supported CSS properties */
 
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include "mozilla/ArrayUtils.h"
 
-// Need an extra level of macro nesting to force expansion of method_
-// params before they get pasted.
-#define STRINGIFY_METHOD(method_) #method_
-
 struct PropertyInfo {
     const char *propName;
     const char *domName;
     const char *pref;
 };
 
 const PropertyInfo gLonghandProperties[] = {
 
 #define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) publicname_
-#define CSS_PROP_LONGHAND(name_, id_, method_, flags_, pref_, ...) \
-    { #name_, STRINGIFY_METHOD(method_), pref_ },
+#define CSS_PROP(name_, id_, method_, flags_, pref_, ...) \
+    { #name_, #method_, pref_ },
 
-#include "mozilla/ServoCSSPropList.h"
+#include "nsCSSPropList.h"
 
-#undef CSS_PROP_LONGHAND
+#undef CSS_PROP
 #undef CSS_PROP_PUBLIC_OR_PRIVATE
 
 };
 
 /*
  * These are the properties for which domName in the above list should
  * be used.  They're in the same order as the above list, with some
  * items skipped.
  */
 const char* gLonghandPropertiesWithDOMProp[] = {
 
 #define CSS_PROP_LIST_EXCLUDE_INTERNAL
-#define CSS_PROP_LONGHAND(name_, ...) #name_,
+#define CSS_PROP(name_, ...) #name_,
 
-#include "mozilla/ServoCSSPropList.h"
+#include "nsCSSPropList.h"
 
-#undef CSS_PROP_LONGHAND
+#undef CSS_PROP
 #undef CSS_PROP_LIST_EXCLUDE_INTERNAL
 
 };
 
 const PropertyInfo gShorthandProperties[] = {
 
 #define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) publicname_
+// Need an extra level of macro nesting to force expansion of method_
+// params before they get pasted.
+#define LISTCSSPROPERTIES_INNER_MACRO(method_) #method_
 #define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_)	\
-    { #name_, STRINGIFY_METHOD(method_), pref_ },
+    { #name_, LISTCSSPROPERTIES_INNER_MACRO(method_), pref_ },
+
+#include "nsCSSPropList.h"
+
+#undef CSS_PROP_SHORTHAND
+#undef LISTCSSPROPERTIES_INNER_MACRO
+#undef CSS_PROP_PUBLIC_OR_PRIVATE
+
 #define CSS_PROP_ALIAS(name_, aliasid_, id_, method_, pref_) \
     { #name_, #method_, pref_ },
 
-#include "mozilla/ServoCSSPropList.h"
+#include "nsCSSPropAliasList.h"
 
 #undef CSS_PROP_ALIAS
-#undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_PUBLIC_OR_PRIVATE
 
 };
 
 /* see gLonghandPropertiesWithDOMProp */
 const char* gShorthandPropertiesWithDOMProp[] = {
 
 #define CSS_PROP_LIST_EXCLUDE_INTERNAL
 #define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_)	\
     #name_,
+
+#include "nsCSSPropList.h"
+
+#undef CSS_PROP_SHORTHAND
+#undef CSS_PROP_LIST_EXCLUDE_INTERNAL
+
 #define CSS_PROP_ALIAS(name_, aliasid_, id_, method_, pref_) \
     #name_,
 
-#include "mozilla/ServoCSSPropList.h"
+#include "nsCSSPropAliasList.h"
 
 #undef CSS_PROP_ALIAS
-#undef CSS_PROP_SHORTHAND
-#undef CSS_PROP_LIST_EXCLUDE_INTERNAL
 
 };
 
-#undef STRINGIFY_METHOD
-
 const char *gInaccessibleProperties[] = {
     // Don't print the properties that aren't accepted by the parser, per
     // CSSParserImpl::ParseProperty
     "-x-cols",
     "-x-lang",
     "-x-span",
     "-x-text-zoom",
     "-moz-context-properties",
--- a/layout/style/test/test_non_content_accessible_properties.html
+++ b/layout/style/test/test_non_content_accessible_properties.html
@@ -4,19 +4,21 @@
 <style id="sheet"></style>
 <div></div>
 <script>
 const NON_CONTENT_ACCESSIBLE_PROPERTIES = [
   "-x-span",
   "-x-lang",
   "-x-text-zoom",
   "-moz-window-shadow",
-  "-moz-window-opacity",
-  "-moz-window-transform",
-  "-moz-window-transform-origin",
+  // FIXME(bug 1419695): These should be hidden, but Gecko would refuse to
+  // transition them. We need to fix that.
+  // "-moz-window-opacity",
+  // "-moz-window-transform",
+  // "-moz-window-transform-origin",
   "-moz-top-layer",
   "-moz-script-size-multiplier",
   "-moz-script-level",
   "-moz-math-display",
   "-moz-math-variant",
   "-moz-script-min-size",
   "-moz-font-smoothing-background-color",
   "-moz-min-font-size-ratio",
--- a/servo/components/style/properties/build.py
+++ b/servo/components/style/properties/build.py
@@ -16,17 +16,17 @@ from mako.lookup import TemplateLookup
 from mako.template import Template
 
 import data
 
 RE_PYTHON_ADDR = re.compile(r'<.+? object at 0x[0-9a-fA-F]+>')
 
 
 def main():
-    usage = "Usage: %s [ servo | gecko ] [ style-crate | geckolib <template> | html ]" % sys.argv[0]
+    usage = "Usage: %s [ servo | gecko ] [ style-crate | html ]" % sys.argv[0]
     if len(sys.argv) < 3:
         abort(usage)
     product = sys.argv[1]
     output = sys.argv[2]
 
     if product not in ["servo", "gecko"] or output not in ["style-crate", "geckolib", "html"]:
         abort(usage)
 
@@ -34,22 +34,16 @@ def main():
     template = os.path.join(BASE, "properties.mako.rs")
     rust = render(template, product=product, data=properties, __file__=template)
     if output == "style-crate":
         write(os.environ["OUT_DIR"], "properties.rs", rust)
         if product == "gecko":
             template = os.path.join(BASE, "gecko.mako.rs")
             rust = render(template, data=properties)
             write(os.environ["OUT_DIR"], "gecko_properties.rs", rust)
-    elif output == "geckolib":
-        if len(sys.argv) < 4:
-            abort(usage)
-        template = sys.argv[3]
-        header = render(template, data=properties)
-        sys.stdout.write(header)
     elif output == "html":
         write_html(properties)
 
 
 def abort(message):
     sys.stderr.write(message + b"\n")
     sys.exit(1)
 
--- a/servo/components/style/properties/data.py
+++ b/servo/components/style/properties/data.py
@@ -380,17 +380,16 @@ class Shorthand(object):
         return "nsCSSPropertyID::eCSSProperty_%s" % self.ident
 
 
 class Alias(object):
     def __init__(self, name, original, gecko_pref):
         self.name = name
         self.ident = to_rust_ident(name)
         self.camel_case = to_camel_case(self.ident)
-        self.original = original
         self.enabled_in = original.enabled_in
         self.servo_pref = original.servo_pref
         self.gecko_pref = gecko_pref
         self.allowed_in_page_rule = original.allowed_in_page_rule
         self.allowed_in_keyframe_block = original.allowed_in_keyframe_block
 
     def experimental(self, product):
         if product == "gecko":
@@ -402,17 +401,17 @@ class Alias(object):
 
     def explicitly_enabled_in_chrome(self):
         return self.enabled_in == "chrome"
 
     def enabled_in_content(self):
         return self.enabled_in == "content"
 
     def nscsspropertyid(self):
-        return "nsCSSPropertyID::eCSSPropertyAlias_%s" % self.ident
+        return "nsCSSPropertyID::eCSSPropertyAlias_%s" % self.camel_case
 
 
 class Method(object):
     def __init__(self, name, return_type=None, arg_types=None, is_mut=False):
         self.name = name
         self.return_type = return_type
         self.arg_types = arg_types or []
         self.is_mut = is_mut