Bug 1542178 - Serialize more non-problematic properties with Servo. r=heycam
authorEmilio Cobos Álvarez <emilio@crisal.io>
Wed, 10 Apr 2019 12:11:04 +0000
changeset 530663 3a101d5a14bb38c6f0234b6c393cb5d8065c4f9b
parent 530662 5ce09292f6bfd580d4a641ed8c00651dc0c7691e
child 530664 397a9577d91b77a4d2bfb46f09375345fb022df1
push id2082
push userffxbld-merge
push dateMon, 01 Jul 2019 08:34:18 +0000
treeherdermozilla-release@2fb19d0466d2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersheycam
bugs1542178
milestone68.0a1
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
Bug 1542178 - Serialize more non-problematic properties with Servo. r=heycam Differential Revision: https://phabricator.services.mozilla.com/D26786
layout/style/ServoCSSPropList.mako.py
layout/style/nsComputedDOMStyle.cpp
layout/style/nsComputedDOMStyle.h
layout/style/test/test_flexbox_flex_shorthand.html
testing/web-platform/meta/web-animations/animation-model/animation-types/accumulation-per-property.html.ini
testing/web-platform/meta/web-animations/animation-model/animation-types/addition-per-property.html.ini
testing/web-platform/meta/web-animations/animation-model/animation-types/interpolation-per-property.html.ini
--- a/layout/style/ServoCSSPropList.mako.py
+++ b/layout/style/ServoCSSPropList.mako.py
@@ -57,71 +57,40 @@ def method(prop):
     if prop.name == "float":
         return "CssFloat"
     if prop.name.startswith("-x-"):
         return prop.camel_case[1:]
     return prop.camel_case
 
 # TODO(emilio): Get this to zero.
 LONGHANDS_NOT_SERIALIZED_WITH_SERVO = [
-    "animation-delay",
-    "animation-duration",
-    "animation-iteration-count",
-    "animation-name",
-    "border-image-width",
+    # Servo serializes one value when both are the same, a few tests expect two.
     "border-spacing",
-    "border-image-width",
-    "column-count",
-    "column-gap",
+
+    # Resolved value should be zero when the column-rule-style is none.
     "column-rule-width",
-    "display",
-    "fill",
-    "filter",
-    "flex-basis",
-    "flex-grow",
-    "flex-shrink",
+
+    # Clamping (need to get rid of nsStyleCoord storage before removing these).
+    "row-gap",
+    "column-gap",
     "grid-auto-columns",
-    "grid-auto-flow",
     "grid-auto-rows",
-    "grid-column-end",
-    "grid-column-start",
-    "grid-row-end",
-    "grid-row-start",
-    "grid-template-areas",
-    "initial-letter",
-    "marker-end",
-    "marker-mid",
-    "marker-start",
+
+    # These resolve auto to zero in a few cases, but not all.
     "max-block-size",
     "max-height",
     "max-inline-size",
     "max-width",
     "min-block-size",
     "min-height",
     "min-inline-size",
     "min-width",
-    "-moz-binding",
-    "-moz-box-flex",
-    "-moz-force-broken-image-icon",
+
+    # resistfingerprinting stuff.
     "-moz-osx-font-smoothing",
-    "outline-width",
-    "paint-order",
-    "row-gap",
-    "scroll-snap-points-x",
-    "scroll-snap-points-y",
-    "stroke",
-    "text-emphasis-position",
-    "text-emphasis-style",
-    "text-overflow",
-    "transition-delay",
-    "transition-duration",
-    "transition-property",
-    "vertical-align",
-    "-webkit-text-stroke-width",
-    "will-change",
 ]
 
 def serialized_by_servo(prop):
     # If the property requires layout information, no such luck.
     if "GETCS_NEEDS_LAYOUT_FLUSH" in prop.flags:
         return False
     if prop.type() == "shorthand":
         # FIXME: Need to serialize a value interpolated with currentcolor
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -1009,30 +1009,16 @@ void nsComputedDOMStyle::IndexedGetter(u
     aFound = false;
   }
 
   ClearCurrentStyleSources();
 }
 
 // Property getters...
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetBinding() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-
-  const nsStyleDisplay* display = StyleDisplay();
-
-  if (display->mBinding && display->mBinding->GetURI()) {
-    val->SetURI(display->mBinding->GetURI());
-  } else {
-    val->SetIdent(eCSSKeyword_none);
-  }
-
-  return val.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetBottom() {
   return GetOffsetWidthFor(eSideBottom);
 }
 
 /* static */
 void nsComputedDOMStyle::SetToRGBAColor(nsROCSSPrimitiveValue* aValue,
                                         nscolor aColor) {
   nsAutoString string;
@@ -1040,30 +1026,16 @@ void nsComputedDOMStyle::SetToRGBAColor(
   aValue->SetString(string);
 }
 
 void nsComputedDOMStyle::SetValueFromComplexColor(
     nsROCSSPrimitiveValue* aValue, const mozilla::StyleColor& aColor) {
   SetToRGBAColor(aValue, aColor.CalcColor(*mComputedStyle));
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetColumnCount() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-
-  const nsStyleColumn* column = StyleColumn();
-
-  if (column->mColumnCount == nsStyleColumn::kColumnCountAuto) {
-    val->SetIdent(eCSSKeyword_auto);
-  } else {
-    val->SetNumber(column->mColumnCount);
-  }
-
-  return val.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetColumnRuleWidth() {
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
   val->SetAppUnits(StyleColumn()->GetComputedColumnRuleWidth());
   return val.forget();
 }
 
 static Position MaybeResolvePositionForTransform(const LengthPercentage& aX,
                                                  const LengthPercentage& aY,
@@ -1271,38 +1243,16 @@ void nsComputedDOMStyle::SetValueToURLVa
 
   nsAutoString url;
   url.AppendLiteral(u"url(");
   nsStyleUtil::AppendEscapedCSSString(source, url, '"');
   url.Append(')');
   aValue->SetString(url);
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridTemplateAreas() {
-  const css::GridTemplateAreasValue* areas =
-      StylePosition()->mGridTemplateAreas;
-  if (!areas) {
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    val->SetIdent(eCSSKeyword_none);
-    return val.forget();
-  }
-
-  MOZ_ASSERT(!areas->mTemplates.IsEmpty(),
-             "Unexpected empty array in GridTemplateAreasValue");
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-  for (uint32_t i = 0; i < areas->mTemplates.Length(); i++) {
-    nsAutoString str;
-    nsStyleUtil::AppendEscapedCSSString(areas->mTemplates[i], str);
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    val->SetString(str);
-    valueList->AppendCSSValue(val.forget());
-  }
-  return valueList.forget();
-}
-
 void nsComputedDOMStyle::AppendGridLineNames(
     nsString& aResult, const nsTArray<nsString>& aLineNames) {
   uint32_t numLines = aLineNames.Length();
   if (numLines == 0) {
     return;
   }
   for (uint32_t i = 0;;) {
     nsStyleUtil::AppendEscapedCSSIdent(aLineNames[i], aResult);
@@ -1627,26 +1577,16 @@ already_AddRefed<CSSValue> nsComputedDOM
                              aTrackList.mMaxTrackSizingFunctions[i]));
       }
     }
   }
 
   return valueList.forget();
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridAutoFlow() {
-  nsAutoString str;
-  nsStyleUtil::AppendBitmaskCSSValue(
-      nsCSSProps::kGridAutoFlowKTable, StylePosition()->mGridAutoFlow,
-      NS_STYLE_GRID_AUTO_FLOW_ROW, NS_STYLE_GRID_AUTO_FLOW_DENSE, str);
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetString(str);
-  return val.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridAutoColumns() {
   return GetGridTrackSize(StylePosition()->mGridAutoColumnsMin,
                           StylePosition()->mGridAutoColumnsMax);
 }
 
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridAutoRows() {
   return GetGridTrackSize(StylePosition()->mGridAutoRowsMin,
                           StylePosition()->mGridAutoRowsMax);
@@ -1709,32 +1649,16 @@ already_AddRefed<CSSValue> nsComputedDOM
     valueList->AppendCSSValue(lineName.forget());
   }
 
   NS_ASSERTION(valueList->Length() > 0,
                "Should have appended at least one value");
   return valueList.forget();
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridColumnStart() {
-  return GetGridLine(StylePosition()->mGridColumnStart);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridColumnEnd() {
-  return GetGridLine(StylePosition()->mGridColumnEnd);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridRowStart() {
-  return GetGridLine(StylePosition()->mGridRowStart);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetGridRowEnd() {
-  return GetGridLine(StylePosition()->mGridRowEnd);
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetColumnGap() {
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
   const auto& columnGap = StylePosition()->mColumnGap;
   if (columnGap.GetUnit() == eStyleUnit_Normal) {
     val->SetIdent(eCSSKeyword_normal);
   } else {
     SetValueToCoord(val, columnGap, true);
   }
@@ -1811,123 +1735,16 @@ already_AddRefed<CSSValue> nsComputedDOM
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetMarginLeftWidth() {
   return GetMarginWidthFor(eSideLeft);
 }
 
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetMarginRightWidth() {
   return GetMarginWidthFor(eSideRight);
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::GetScrollSnapPoints(
-    const nsStyleCoord& aCoord) {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  if (aCoord.GetUnit() == eStyleUnit_None) {
-    val->SetIdent(eCSSKeyword_none);
-  } else {
-    nsAutoString argumentString;
-    SetCssTextToCoord(argumentString, aCoord, true);
-    nsAutoString tmp;
-    tmp.AppendLiteral("repeat(");
-    tmp.Append(argumentString);
-    tmp.Append(')');
-    val->SetString(tmp);
-  }
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetScrollSnapPointsX() {
-  return GetScrollSnapPoints(StyleDisplay()->mScrollSnapPointsX);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetScrollSnapPointsY() {
-  return GetScrollSnapPoints(StyleDisplay()->mScrollSnapPointsY);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetOutlineWidth() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetAppUnits(StyleOutline()->GetOutlineWidth());
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::GetCSSShadowArray(
-    nsCSSShadowArray* aArray, bool aIsBoxShadow) {
-  if (!aArray) {
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    val->SetIdent(eCSSKeyword_none);
-    return val.forget();
-  }
-
-  static nscoord nsCSSShadowItem::*const shadowValuesNoSpread[] = {
-      &nsCSSShadowItem::mXOffset, &nsCSSShadowItem::mYOffset,
-      &nsCSSShadowItem::mRadius};
-
-  static nscoord nsCSSShadowItem::*const shadowValuesWithSpread[] = {
-      &nsCSSShadowItem::mXOffset, &nsCSSShadowItem::mYOffset,
-      &nsCSSShadowItem::mRadius, &nsCSSShadowItem::mSpread};
-
-  nscoord nsCSSShadowItem::*const* shadowValues;
-  uint32_t shadowValuesLength;
-  if (aIsBoxShadow) {
-    shadowValues = shadowValuesWithSpread;
-    shadowValuesLength = ArrayLength(shadowValuesWithSpread);
-  } else {
-    shadowValues = shadowValuesNoSpread;
-    shadowValuesLength = ArrayLength(shadowValuesNoSpread);
-  }
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  for (nsCSSShadowItem *item = aArray->ShadowAt(0),
-                       *item_end = item + aArray->Length();
-       item < item_end; ++item) {
-    RefPtr<nsDOMCSSValueList> itemList = GetROCSSValueList(false);
-
-    // Color is either the specified shadow color or the foreground color
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    SetValueFromComplexColor(val, item->mColor);
-    itemList->AppendCSSValue(val.forget());
-
-    // Set the offsets, blur radius, and spread if available
-    for (uint32_t i = 0; i < shadowValuesLength; ++i) {
-      val = new nsROCSSPrimitiveValue;
-      val->SetAppUnits(item->*(shadowValues[i]));
-      itemList->AppendCSSValue(val.forget());
-    }
-
-    if (item->mInset && aIsBoxShadow) {
-      // This is an inset box-shadow
-      val = new nsROCSSPrimitiveValue;
-      val->SetIdent(
-          nsCSSProps::ValueToKeywordEnum(uint8_t(StyleBoxShadowType::Inset),
-                                         nsCSSProps::kBoxShadowTypeKTable));
-      itemList->AppendCSSValue(val.forget());
-    }
-    valueList->AppendCSSValue(itemList.forget());
-  }
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetInitialLetter() {
-  const nsStyleTextReset* textReset = StyleTextReset();
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  if (textReset->mInitialLetterSink == 0) {
-    val->SetIdent(eCSSKeyword_normal);
-    return val.forget();
-  } else {
-    RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-    val->SetNumber(textReset->mInitialLetterSize);
-    valueList->AppendCSSValue(val.forget());
-    RefPtr<nsROCSSPrimitiveValue> second = new nsROCSSPrimitiveValue;
-    second->SetNumber(textReset->mInitialLetterSink);
-    valueList->AppendCSSValue(second.forget());
-    return valueList.forget();
-  }
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetLineHeight() {
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
 
   {
     nscoord lineHeight;
     if (GetLineHeightCoord(lineHeight)) {
       val->SetAppUnits(lineHeight);
       return val.forget();
@@ -1943,23 +1760,16 @@ already_AddRefed<CSSValue> nsComputedDOM
     val->SetIdent(eCSSKeyword__moz_block_height);
   } else {
     MOZ_ASSERT(lh.IsNormal());
     val->SetIdent(eCSSKeyword_normal);
   }
   return val.forget();
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetVerticalAlign() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  SetValueToCoord(val, StyleDisplay()->mVerticalAlign, false, nullptr,
-                  nsCSSProps::kVerticalAlignKTable);
-  return val.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTextDecoration() {
   const nsStyleTextReset* textReset = StyleTextReset();
 
   bool isInitialStyle =
       textReset->mTextDecorationStyle == NS_STYLE_TEXT_DECORATION_STYLE_SOLID;
   const mozilla::StyleColor& color = textReset->mTextDecorationColor;
 
   RefPtr<nsROCSSPrimitiveValue> textDecorationLine = new nsROCSSPrimitiveValue;
@@ -1999,120 +1809,16 @@ already_AddRefed<CSSValue> nsComputedDOM
 
   val->SetIdent(
       nsCSSProps::ValueToKeywordEnum(StyleTextReset()->mTextDecorationStyle,
                                      nsCSSProps::kTextDecorationStyleKTable));
 
   return val.forget();
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTextEmphasisPosition() {
-  auto position = StyleText()->mTextEmphasisPosition;
-
-  MOZ_ASSERT(!(position & NS_STYLE_TEXT_EMPHASIS_POSITION_OVER) !=
-             !(position & NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER));
-  RefPtr<nsROCSSPrimitiveValue> first = new nsROCSSPrimitiveValue;
-  first->SetIdent((position & NS_STYLE_TEXT_EMPHASIS_POSITION_OVER)
-                      ? eCSSKeyword_over
-                      : eCSSKeyword_under);
-
-  MOZ_ASSERT(!(position & NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT) !=
-             !(position & NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT));
-  RefPtr<nsROCSSPrimitiveValue> second = new nsROCSSPrimitiveValue;
-  second->SetIdent((position & NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT)
-                       ? eCSSKeyword_left
-                       : eCSSKeyword_right);
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-  valueList->AppendCSSValue(first.forget());
-  valueList->AppendCSSValue(second.forget());
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTextEmphasisStyle() {
-  auto style = StyleText()->mTextEmphasisStyle;
-  if (style == NS_STYLE_TEXT_EMPHASIS_STYLE_NONE) {
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    val->SetIdent(eCSSKeyword_none);
-    return val.forget();
-  }
-  if (style == NS_STYLE_TEXT_EMPHASIS_STYLE_STRING) {
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    nsAutoString tmp;
-    nsStyleUtil::AppendEscapedCSSString(StyleText()->mTextEmphasisStyleString,
-                                        tmp);
-    val->SetString(tmp);
-    return val.forget();
-  }
-
-  RefPtr<nsROCSSPrimitiveValue> fillVal = new nsROCSSPrimitiveValue;
-  if ((style & NS_STYLE_TEXT_EMPHASIS_STYLE_FILL_MASK) ==
-      NS_STYLE_TEXT_EMPHASIS_STYLE_FILLED) {
-    fillVal->SetIdent(eCSSKeyword_filled);
-  } else {
-    MOZ_ASSERT((style & NS_STYLE_TEXT_EMPHASIS_STYLE_FILL_MASK) ==
-               NS_STYLE_TEXT_EMPHASIS_STYLE_OPEN);
-    fillVal->SetIdent(eCSSKeyword_open);
-  }
-
-  RefPtr<nsROCSSPrimitiveValue> shapeVal = new nsROCSSPrimitiveValue;
-  shapeVal->SetIdent(nsCSSProps::ValueToKeywordEnum(
-      style & NS_STYLE_TEXT_EMPHASIS_STYLE_SHAPE_MASK,
-      nsCSSProps::kTextEmphasisStyleShapeKTable));
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-  valueList->AppendCSSValue(fillVal.forget());
-  valueList->AppendCSSValue(shapeVal.forget());
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTextOverflow() {
-  const nsStyleTextReset* style = StyleTextReset();
-  RefPtr<nsROCSSPrimitiveValue> first = new nsROCSSPrimitiveValue;
-  const nsStyleTextOverflowSide* side = style->mTextOverflow.GetFirstValue();
-  if (side->mType == NS_STYLE_TEXT_OVERFLOW_STRING) {
-    nsAutoString str;
-    nsStyleUtil::AppendEscapedCSSString(side->mString, str);
-    first->SetString(str);
-  } else {
-    first->SetIdent(nsCSSProps::ValueToKeywordEnum(
-        side->mType, nsCSSProps::kTextOverflowKTable));
-  }
-  side = style->mTextOverflow.GetSecondValue();
-  if (!side) {
-    return first.forget();
-  }
-  RefPtr<nsROCSSPrimitiveValue> second = new nsROCSSPrimitiveValue;
-  if (side->mType == NS_STYLE_TEXT_OVERFLOW_STRING) {
-    nsAutoString str;
-    nsStyleUtil::AppendEscapedCSSString(side->mString, str);
-    second->SetString(str);
-  } else {
-    second->SetIdent(nsCSSProps::ValueToKeywordEnum(
-        side->mType, nsCSSProps::kTextOverflowKTable));
-  }
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-  valueList->AppendCSSValue(first.forget());
-  valueList->AppendCSSValue(second.forget());
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetWebkitTextStrokeWidth() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetAppUnits(StyleText()->mWebkitTextStrokeWidth);
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetBoxFlex() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetNumber(StyleXUL()->mBoxFlex);
-  return val.forget();
-}
-
 /* Border image properties */
 
 void nsComputedDOMStyle::AppendFourSideCoordValues(
     nsDOMCSSValueList* aList, const nsStyleSides& aValues) {
   const nsStyleCoord& top = aValues.Get(eSideTop);
   const nsStyleCoord& right = aValues.Get(eSideRight);
   const nsStyleCoord& bottom = aValues.Get(eSideBottom);
   const nsStyleCoord& left = aValues.Get(eSideLeft);
@@ -2129,90 +1835,16 @@ void nsComputedDOMStyle::AppendFourSideC
       appendValue(bottom);
       if (right != left) {
         appendValue(left);
       }
     }
   }
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetBorderImageWidth() {
-  const nsStyleBorder* border = StyleBorder();
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-  AppendFourSideCoordValues(valueList, border->mBorderImageWidth);
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetFlexBasis() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-
-  // XXXdholbert We could make this more automagic and resolve percentages
-  // if we wanted, by passing in a PercentageBaseGetter instead of nullptr
-  // below.  Logic would go like this:
-  //   if (i'm a flex item) {
-  //     if (my flex container is horizontal) {
-  //       percentageBaseGetter = &nsComputedDOMStyle::GetCBContentWidth;
-  //     } else {
-  //       percentageBaseGetter = &nsComputedDOMStyle::GetCBContentHeight;
-  //     }
-  //   }
-
-  const auto& basis = StylePosition()->mFlexBasis;
-  if (basis.IsContent()) {
-    val->SetIdent(eCSSKeyword_content);
-    return val.forget();
-  }
-  SetValueToSize(val, basis.AsSize());
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetFlexGrow() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetNumber(StylePosition()->mFlexGrow);
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetFlexShrink() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetNumber(StylePosition()->mFlexShrink);
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetForceBrokenImageIcon() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetNumber(StyleUIReset()->mForceBrokenImageIcon);
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetDisplay() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetIdent(nsCSSProps::ValueToKeywordEnum(StyleDisplay()->mDisplay,
-                                               nsCSSProps::kDisplayKTable));
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetWillChange() {
-  const nsTArray<RefPtr<nsAtom>>& willChange = StyleDisplay()->mWillChange;
-
-  if (willChange.IsEmpty()) {
-    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-    val->SetIdent(eCSSKeyword_auto);
-    return val.forget();
-  }
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-  for (const nsAtom* ident : willChange) {
-    RefPtr<nsROCSSPrimitiveValue> property = new nsROCSSPrimitiveValue;
-    property->SetString(nsDependentAtomString(ident));
-    valueList->AppendCSSValue(property.forget());
-  }
-
-  return valueList.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetHeight() {
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
 
   bool calcHeight = false;
 
   if (mInnerFrame) {
     calcHeight = true;
 
@@ -2909,72 +2541,16 @@ bool nsComputedDOMStyle::GetFrameBorderR
   }
 
   AssertFlushedPendingReflows();
 
   aHeight = mInnerFrame->GetSize().height;
   return true;
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::GetFallbackValue(
-    const nsStyleSVGPaint* aPaint) {
-  RefPtr<nsROCSSPrimitiveValue> fallback = new nsROCSSPrimitiveValue;
-  if (aPaint->GetFallbackType() == eStyleSVGFallbackType_Color) {
-    SetToRGBAColor(fallback, aPaint->GetFallbackColor(mComputedStyle));
-  } else {
-    fallback->SetIdent(eCSSKeyword_none);
-  }
-  return fallback.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::GetSVGPaintFor(bool aFill) {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-
-  const nsStyleSVG* svg = StyleSVG();
-  const nsStyleSVGPaint* paint = aFill ? &svg->mFill : &svg->mStroke;
-
-  nsAutoString paintString;
-
-  switch (paint->Type()) {
-    case eStyleSVGPaintType_None:
-      val->SetIdent(eCSSKeyword_none);
-      break;
-    case eStyleSVGPaintType_Color:
-      SetToRGBAColor(val, paint->GetColor(mComputedStyle));
-      break;
-    case eStyleSVGPaintType_Server: {
-      SetValueToURLValue(paint->GetPaintServer(), val);
-      if (paint->GetFallbackType() != eStyleSVGFallbackType_NotSet) {
-        RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-        RefPtr<CSSValue> fallback = GetFallbackValue(paint);
-        valueList->AppendCSSValue(val.forget());
-        valueList->AppendCSSValue(fallback.forget());
-        return valueList.forget();
-      }
-      break;
-    }
-    case eStyleSVGPaintType_ContextFill:
-    case eStyleSVGPaintType_ContextStroke: {
-      val->SetIdent(paint->Type() == eStyleSVGPaintType_ContextFill
-                        ? eCSSKeyword_context_fill
-                        : eCSSKeyword_context_stroke);
-      if (paint->GetFallbackType() != eStyleSVGFallbackType_NotSet) {
-        RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-        RefPtr<CSSValue> fallback = GetFallbackValue(paint);
-        valueList->AppendCSSValue(val.forget());
-        valueList->AppendCSSValue(fallback.forget());
-        return valueList.forget();
-      }
-      break;
-    }
-  }
-
-  return val.forget();
-}
-
 /* If the property is "none", hand back "none" wrapped in a value.
  * Otherwise, compute the aggregate transform matrix and hands it back in a
  * "matrix" wrapper.
  */
 already_AddRefed<CSSValue> nsComputedDOMStyle::GetTransformValue(
     nsCSSValueSharedList* aSpecifiedTransform) {
   /* If there are no transforms, then we should construct a single-element
    * entry and hand it back.
@@ -3007,45 +2583,16 @@ already_AddRefed<CSSValue> nsComputedDOM
 
   gfx::Matrix4x4 matrix = nsStyleTransformMatrix::ReadTransforms(
       aSpecifiedTransform->mHead, refBox,
       float(mozilla::AppUnitsPerCSSPixel()));
 
   return MatrixToCSSValue(matrix);
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetFill() {
-  return GetSVGPaintFor(true);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetStroke() {
-  return GetSVGPaintFor(false);
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetMarkerEnd() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  SetValueToURLValue(StyleSVG()->mMarkerEnd, val);
-
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetMarkerMid() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  SetValueToURLValue(StyleSVG()->mMarkerMid, val);
-
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetMarkerStart() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  SetValueToURLValue(StyleSVG()->mMarkerStart, val);
-
-  return val.forget();
-}
-
 void nsComputedDOMStyle::BoxValuesToString(
     nsAString& aString, const nsTArray<nsStyleCoord>& aBoxValues,
     bool aClampNegativeCalc) {
   MOZ_ASSERT(aBoxValues.Length() == 4, "wrong number of box values");
   nsAutoString value1, value2, value3, value4;
   SetCssTextToCoord(value1, aBoxValues[0], aClampNegativeCalc);
   SetCssTextToCoord(value2, aBoxValues[1], aClampNegativeCalc);
   SetCssTextToCoord(value3, aBoxValues[2], aClampNegativeCalc);
@@ -3178,72 +2725,16 @@ nsComputedDOMStyle::CreatePrimitiveValue
 void nsComputedDOMStyle::SetCssTextToCoord(nsAString& aCssText,
                                            const nsStyleCoord& aCoord,
                                            bool aClampNegativeCalc) {
   RefPtr<nsROCSSPrimitiveValue> value = new nsROCSSPrimitiveValue;
   SetValueToCoord(value, aCoord, aClampNegativeCalc);
   value->GetCssText(aCssText);
 }
 
-already_AddRefed<CSSValue>
-nsComputedDOMStyle::CreatePrimitiveValueForStyleFilter(
-    const nsStyleFilter& aStyleFilter) {
-  RefPtr<nsROCSSPrimitiveValue> value = new nsROCSSPrimitiveValue;
-  // Handle url().
-  if (aStyleFilter.GetType() == NS_STYLE_FILTER_URL) {
-    MOZ_ASSERT(aStyleFilter.GetURL() && aStyleFilter.GetURL()->GetURI());
-    SetValueToURLValue(aStyleFilter.GetURL(), value);
-    return value.forget();
-  }
-
-  // Filter function name and opening parenthesis.
-  nsAutoString filterFunctionString;
-  AppendASCIItoUTF16(
-      nsCSSProps::ValueToKeyword(aStyleFilter.GetType(),
-                                 nsCSSProps::kFilterFunctionKTable),
-      filterFunctionString);
-  filterFunctionString.Append('(');
-
-  nsAutoString argumentString;
-  if (aStyleFilter.GetType() == NS_STYLE_FILTER_DROP_SHADOW) {
-    // Handle drop-shadow()
-    RefPtr<CSSValue> shadowValue =
-        GetCSSShadowArray(aStyleFilter.GetDropShadow(), false);
-    ErrorResult dummy;
-    shadowValue->GetCssText(argumentString, dummy);
-  } else {
-    // Filter function argument.
-    SetCssTextToCoord(argumentString, aStyleFilter.GetFilterParameter(), true);
-  }
-  filterFunctionString.Append(argumentString);
-
-  // Filter function closing parenthesis.
-  filterFunctionString.Append(')');
-
-  value->SetString(filterFunctionString);
-  return value.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetFilter() {
-  const nsTArray<nsStyleFilter>& filters = StyleEffects()->mFilters;
-
-  if (filters.IsEmpty()) {
-    RefPtr<nsROCSSPrimitiveValue> value = new nsROCSSPrimitiveValue;
-    value->SetIdent(eCSSKeyword_none);
-    return value.forget();
-  }
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(false);
-  for (uint32_t i = 0; i < filters.Length(); i++) {
-    RefPtr<CSSValue> value = CreatePrimitiveValueForStyleFilter(filters[i]);
-    valueList->AppendCSSValue(value.forget());
-  }
-  return valueList.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetMask() {
   const nsStyleSVGReset* svg = StyleSVGReset();
   const nsStyleImageLayers::Layer& firstLayer = svg->mMask.mLayers[0];
 
   // Mask is now a shorthand, but it used to be a longhand, so that we
   // need to support computed style for the cases where it used to be
   // a longhand.
   if (svg->mMask.mImageCount > 1 ||
@@ -3263,179 +2754,16 @@ already_AddRefed<CSSValue> nsComputedDOM
 
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
 
   SetValueToURLValue(firstLayer.mImage.GetURLValue(), val);
 
   return val.forget();
 }
 
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetPaintOrder() {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  nsAutoString string;
-  uint8_t paintOrder = StyleSVG()->mPaintOrder;
-  nsStyleUtil::AppendPaintOrderValue(paintOrder, string);
-  val->SetString(string);
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTransitionDelay() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mTransitionDelayCount > 0, "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleTransition* transition = &display->mTransitions[i];
-    RefPtr<nsROCSSPrimitiveValue> delay = new nsROCSSPrimitiveValue;
-    delay->SetTime((float)transition->GetDelay() / (float)PR_MSEC_PER_SEC);
-    valueList->AppendCSSValue(delay.forget());
-  } while (++i < display->mTransitionDelayCount);
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTransitionDuration() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mTransitionDurationCount > 0,
-             "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleTransition* transition = &display->mTransitions[i];
-    RefPtr<nsROCSSPrimitiveValue> duration = new nsROCSSPrimitiveValue;
-
-    duration->SetTime((float)transition->GetDuration() /
-                      (float)PR_MSEC_PER_SEC);
-    valueList->AppendCSSValue(duration.forget());
-  } while (++i < display->mTransitionDurationCount);
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetTransitionProperty() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mTransitionPropertyCount > 0,
-             "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleTransition* transition = &display->mTransitions[i];
-    RefPtr<nsROCSSPrimitiveValue> property = new nsROCSSPrimitiveValue;
-    nsCSSPropertyID cssprop = transition->GetProperty();
-    if (cssprop == eCSSPropertyExtra_all_properties)
-      property->SetIdent(eCSSKeyword_all);
-    else if (cssprop == eCSSPropertyExtra_no_properties)
-      property->SetIdent(eCSSKeyword_none);
-    else if (cssprop == eCSSProperty_UNKNOWN ||
-             cssprop == eCSSPropertyExtra_variable) {
-      nsAutoString escaped;
-      nsStyleUtil::AppendEscapedCSSIdent(
-          nsDependentAtomString(transition->GetUnknownProperty()), escaped);
-      property->SetString(escaped);  // really want SetIdent
-    } else
-      property->SetString(nsCSSProps::GetStringValue(cssprop));
-
-    valueList->AppendCSSValue(property.forget());
-  } while (++i < display->mTransitionPropertyCount);
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetAnimationName() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mAnimationNameCount > 0, "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleAnimation* animation = &display->mAnimations[i];
-    RefPtr<nsROCSSPrimitiveValue> property = new nsROCSSPrimitiveValue;
-
-    nsAtom* name = animation->GetName();
-    if (name == nsGkAtoms::_empty) {
-      property->SetIdent(eCSSKeyword_none);
-    } else {
-      nsDependentAtomString nameStr(name);
-      nsAutoString escaped;
-      nsStyleUtil::AppendEscapedCSSIdent(nameStr, escaped);
-      property->SetString(escaped);  // really want SetIdent
-    }
-    valueList->AppendCSSValue(property.forget());
-  } while (++i < display->mAnimationNameCount);
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetAnimationDelay() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mAnimationDelayCount > 0, "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleAnimation* animation = &display->mAnimations[i];
-    RefPtr<nsROCSSPrimitiveValue> delay = new nsROCSSPrimitiveValue;
-    delay->SetTime((float)animation->GetDelay() / (float)PR_MSEC_PER_SEC);
-    valueList->AppendCSSValue(delay.forget());
-  } while (++i < display->mAnimationDelayCount);
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetAnimationDuration() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mAnimationDurationCount > 0,
-             "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleAnimation* animation = &display->mAnimations[i];
-    RefPtr<nsROCSSPrimitiveValue> duration = new nsROCSSPrimitiveValue;
-
-    duration->SetTime((float)animation->GetDuration() / (float)PR_MSEC_PER_SEC);
-    valueList->AppendCSSValue(duration.forget());
-  } while (++i < display->mAnimationDurationCount);
-
-  return valueList.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::DoGetAnimationIterationCount() {
-  const nsStyleDisplay* display = StyleDisplay();
-
-  RefPtr<nsDOMCSSValueList> valueList = GetROCSSValueList(true);
-
-  MOZ_ASSERT(display->mAnimationIterationCountCount > 0,
-             "first item must be explicit");
-  uint32_t i = 0;
-  do {
-    const StyleAnimation* animation = &display->mAnimations[i];
-    RefPtr<nsROCSSPrimitiveValue> iterationCount = new nsROCSSPrimitiveValue;
-
-    float f = animation->GetIterationCount();
-    if (f == PositiveInfinity<float>()) {
-      iterationCount->SetIdent(eCSSKeyword_infinite);
-    } else {
-      iterationCount->SetNumber(f);
-    }
-    valueList->AppendCSSValue(iterationCount.forget());
-  } while (++i < display->mAnimationIterationCountCount);
-
-  return valueList.forget();
-}
-
 already_AddRefed<CSSValue> nsComputedDOMStyle::DummyGetter() {
   MOZ_CRASH("DummyGetter is not supposed to be invoked");
 }
 
 static void MarkComputedStyleMapDirty(const char* aPref,
                                       ComputedStyleMap* aData) {
   aData->MarkDirty();
 }
--- a/layout/style/nsComputedDOMStyle.h
+++ b/layout/style/nsComputedDOMStyle.h
@@ -183,20 +183,16 @@ class nsComputedDOMStyle final : public 
   already_AddRefed<CSSValue> GetBorderStyleFor(mozilla::Side aSide);
 
   already_AddRefed<CSSValue> GetBorderWidthFor(mozilla::Side aSide);
 
   already_AddRefed<CSSValue> GetBorderColorFor(mozilla::Side aSide);
 
   already_AddRefed<CSSValue> GetMarginWidthFor(mozilla::Side aSide);
 
-  already_AddRefed<CSSValue> GetFallbackValue(const nsStyleSVGPaint* aPaint);
-
-  already_AddRefed<CSSValue> GetSVGPaintFor(bool aFill);
-
   already_AddRefed<CSSValue> GetTransformValue(
       nsCSSValueSharedList* aSpecifiedTransform);
 
   // Appends all aLineNames (may be empty) space-separated to aResult.
   void AppendGridLineNames(nsString& aResult,
                            const nsTArray<nsString>& aLineNames);
   // Appends aLineNames as a CSSValue* to aValueList.  If aLineNames is empty
   // a value ("[]") is only appended if aSuppressEmptyList is false.
@@ -211,157 +207,91 @@ class nsComputedDOMStyle final : public 
                                               const nsStyleCoord& aMaxSize);
   already_AddRefed<CSSValue> GetGridTemplateColumnsRows(
       const nsStyleGridTemplate& aTrackList,
       const mozilla::ComputedGridTrackInfo* aTrackInfo);
   already_AddRefed<CSSValue> GetGridLine(const nsStyleGridLine& aGridLine);
 
   bool GetLineHeightCoord(nscoord& aCoord);
 
-  already_AddRefed<CSSValue> GetCSSShadowArray(nsCSSShadowArray* aArray,
-                                               bool aIsBoxShadow);
-
-  void GetCSSGradientString(const nsStyleGradient* aGradient,
-                            nsAString& aString);
-  void GetImageRectString(nsIURI* aURI, const nsStyleSides& aCropRect,
-                          nsString& aString);
-  already_AddRefed<CSSValue> GetScrollSnapPoints(const nsStyleCoord& aCoord);
-
   bool ShouldHonorMinSizeAutoInAxis(mozilla::PhysicalAxis aAxis);
 
   /* Properties queryable as CSSValues.
    * To avoid a name conflict with nsIDOM*CSS2Properties, these are all
    * DoGetXXX instead of GetXXX.
    */
 
   /* Box properties */
-  already_AddRefed<CSSValue> DoGetBoxFlex();
 
   already_AddRefed<CSSValue> DoGetWidth();
   already_AddRefed<CSSValue> DoGetHeight();
   already_AddRefed<CSSValue> DoGetMaxHeight();
   already_AddRefed<CSSValue> DoGetMaxWidth();
   already_AddRefed<CSSValue> DoGetMinHeight();
   already_AddRefed<CSSValue> DoGetMinWidth();
   already_AddRefed<CSSValue> DoGetLeft();
   already_AddRefed<CSSValue> DoGetTop();
   already_AddRefed<CSSValue> DoGetRight();
   already_AddRefed<CSSValue> DoGetBottom();
 
-  /* Color */
-
   /* Font properties */
   already_AddRefed<CSSValue> DoGetOsxFontSmoothing();
 
   /* Grid properties */
-  already_AddRefed<CSSValue> DoGetGridAutoFlow();
   already_AddRefed<CSSValue> DoGetGridAutoColumns();
   already_AddRefed<CSSValue> DoGetGridAutoRows();
-  already_AddRefed<CSSValue> DoGetGridTemplateAreas();
   already_AddRefed<CSSValue> DoGetGridTemplateColumns();
   already_AddRefed<CSSValue> DoGetGridTemplateRows();
-  already_AddRefed<CSSValue> DoGetGridColumnStart();
-  already_AddRefed<CSSValue> DoGetGridColumnEnd();
-  already_AddRefed<CSSValue> DoGetGridRowStart();
-  already_AddRefed<CSSValue> DoGetGridRowEnd();
 
   /* StyleImageLayer properties */
   already_AddRefed<CSSValue> DoGetImageLayerPosition(
       const nsStyleImageLayers& aLayers);
 
   /* Mask properties */
   already_AddRefed<CSSValue> DoGetMask();
 
   /* Padding properties */
   already_AddRefed<CSSValue> DoGetPaddingTop();
   already_AddRefed<CSSValue> DoGetPaddingBottom();
   already_AddRefed<CSSValue> DoGetPaddingLeft();
   already_AddRefed<CSSValue> DoGetPaddingRight();
 
   /* Table Properties */
   already_AddRefed<CSSValue> DoGetBorderSpacing();
-  already_AddRefed<CSSValue> DoGetVerticalAlign();
 
   /* Border Properties */
   already_AddRefed<CSSValue> DoGetBorderTopWidth();
   already_AddRefed<CSSValue> DoGetBorderBottomWidth();
   already_AddRefed<CSSValue> DoGetBorderLeftWidth();
   already_AddRefed<CSSValue> DoGetBorderRightWidth();
 
-  /* Border Image */
-  already_AddRefed<CSSValue> DoGetBorderImageWidth();
-
-  /* Box Shadow */
-
   /* Margin Properties */
   already_AddRefed<CSSValue> DoGetMarginTopWidth();
   already_AddRefed<CSSValue> DoGetMarginBottomWidth();
   already_AddRefed<CSSValue> DoGetMarginLeftWidth();
   already_AddRefed<CSSValue> DoGetMarginRightWidth();
 
-  /* Outline Properties */
-  already_AddRefed<CSSValue> DoGetOutlineWidth();
-
   /* Text Properties */
-  already_AddRefed<CSSValue> DoGetInitialLetter();
   already_AddRefed<CSSValue> DoGetLineHeight();
   already_AddRefed<CSSValue> DoGetTextDecoration();
   already_AddRefed<CSSValue> DoGetTextDecorationColor();
   already_AddRefed<CSSValue> DoGetTextDecorationStyle();
-  already_AddRefed<CSSValue> DoGetTextEmphasisPosition();
-  already_AddRefed<CSSValue> DoGetTextEmphasisStyle();
-  already_AddRefed<CSSValue> DoGetTextOverflow();
-  already_AddRefed<CSSValue> DoGetWebkitTextStrokeWidth();
 
   /* Display properties */
-  already_AddRefed<CSSValue> DoGetBinding();
-  already_AddRefed<CSSValue> DoGetDisplay();
-  already_AddRefed<CSSValue> DoGetWillChange();
   already_AddRefed<CSSValue> DoGetTransform();
   already_AddRefed<CSSValue> DoGetTransformOrigin();
   already_AddRefed<CSSValue> DoGetPerspectiveOrigin();
-  already_AddRefed<CSSValue> DoGetScrollSnapPointsX();
-  already_AddRefed<CSSValue> DoGetScrollSnapPointsY();
-
-  /* User interface properties */
-  already_AddRefed<CSSValue> DoGetForceBrokenImageIcon();
 
   /* Column properties */
-  already_AddRefed<CSSValue> DoGetColumnCount();
   already_AddRefed<CSSValue> DoGetColumnRuleWidth();
 
-  /* CSS Transitions */
-  already_AddRefed<CSSValue> DoGetTransitionProperty();
-  already_AddRefed<CSSValue> DoGetTransitionDuration();
-  already_AddRefed<CSSValue> DoGetTransitionDelay();
-
-  /* CSS Animations */
-  already_AddRefed<CSSValue> DoGetAnimationName();
-  already_AddRefed<CSSValue> DoGetAnimationDuration();
-  already_AddRefed<CSSValue> DoGetAnimationDelay();
-  already_AddRefed<CSSValue> DoGetAnimationIterationCount();
-
-  /* CSS Flexbox properties */
-  already_AddRefed<CSSValue> DoGetFlexBasis();
-  already_AddRefed<CSSValue> DoGetFlexGrow();
-  already_AddRefed<CSSValue> DoGetFlexShrink();
-
   /* CSS Box Alignment properties */
   already_AddRefed<CSSValue> DoGetColumnGap();
   already_AddRefed<CSSValue> DoGetRowGap();
 
-  /* SVG properties */
-  already_AddRefed<CSSValue> DoGetFill();
-  already_AddRefed<CSSValue> DoGetStroke();
-  already_AddRefed<CSSValue> DoGetMarkerEnd();
-  already_AddRefed<CSSValue> DoGetMarkerMid();
-  already_AddRefed<CSSValue> DoGetMarkerStart();
-
-  already_AddRefed<CSSValue> DoGetFilter();
-  already_AddRefed<CSSValue> DoGetPaintOrder();
 
   // For working around a MSVC bug. See related comment in
   // GenerateComputedDOMStyleGenerated.py.
   already_AddRefed<CSSValue> DummyGetter();
 
   /* Helper functions */
   void SetValueFromComplexColor(nsROCSSPrimitiveValue* aValue,
                                 const mozilla::StyleColor& aColor);
@@ -444,18 +374,16 @@ class nsComputedDOMStyle final : public 
   bool GetScrollFrameContentWidth(nscoord& aWidth);
   bool GetScrollFrameContentHeight(nscoord& aHeight);
   bool GetFrameBorderRectWidth(nscoord& aWidth);
   bool GetFrameBorderRectHeight(nscoord& aHeight);
 
   /* Helper functions for computing and serializing a nsStyleCoord. */
   void SetCssTextToCoord(nsAString& aCssText, const nsStyleCoord& aCoord,
                          bool aClampNegativeCalc);
-  already_AddRefed<CSSValue> CreatePrimitiveValueForStyleFilter(
-      const nsStyleFilter& aStyleFilter);
 
   template <typename ReferenceBox>
   already_AddRefed<CSSValue> CreatePrimitiveValueForShapeSource(
       const mozilla::UniquePtr<mozilla::StyleBasicShape>& aStyleBasicShape,
       ReferenceBox aReferenceBox, const KTableEntry aBoxKeywordTable[]);
 
   // Helper function for computing basic shape styles.
   already_AddRefed<CSSValue> CreatePrimitiveValueForBasicShape(
--- a/layout/style/test/test_flexbox_flex_shorthand.html
+++ b/layout/style/test/test_flexbox_flex_shorthand.html
@@ -101,17 +101,17 @@ let gFlexShorthandTestcases = [
     "flex-grow":   "1000",
   },
   {
     "flex":        "0.0000001",
     "flex-grow":   "1e-7"
   },
   {
     "flex":        "20000000",
-    "flex-grow":   "2e+7"
+    "flex-grow":   "20000000",
   },
 
   // One Value (length or other nonnumeric) --> sets flex-basis
   // ----------------------------------------------------------
   {
     "flex":        "0px",
     "flex-basis":  "0px",
   },
@@ -136,17 +136,17 @@ let gFlexShorthandTestcases = [
     "flex-basis":  "-moz-fit-content",
   },
   {
     "flex":        "calc(5px + 6px)",
     "flex-basis":  "11px",
   },
   {
     "flex":        "calc(15% + 30px)",
-    "flex-basis":  "calc(30px + 15%)",
+    "flex-basis":  "calc(15% + 30px)",
   },
 
   // Two Values (numeric) --> sets flex-grow, flex-shrink
   // ----------------------------------------------------
   {
     "flex":        "0 0",
     "flex-grow":   "0",
     "flex-shrink": "0",
@@ -207,17 +207,17 @@ let gFlexShorthandTestcases = [
   {
     "flex":        "5 -moz-fit-content",
     "flex-grow":   "5",
     "flex-basis":  "-moz-fit-content",
   },
   {
     "flex":        "calc(5% + 10px) 3",
     "flex-grow":   "3",
-    "flex-basis":  "calc(10px + 5%)",
+    "flex-basis":  "calc(5% + 10px)",
   },
 
   // Three Values --> Sets all three subproperties
   // ---------------------------------------------
   {
     "flex":        "0 0 0",
     "flex-grow":   "0",
     "flex-shrink": "0",
--- a/testing/web-platform/meta/web-animations/animation-model/animation-types/accumulation-per-property.html.ini
+++ b/testing/web-platform/meta/web-animations/animation-model/animation-types/accumulation-per-property.html.ini
@@ -1,21 +1,1 @@
 prefs: [layout.css.font-variations.enabled:true, layout.css.overflow-clip-box.enabled:true, layout.css.individual-transform.enabled:true]
-[accumulation-per-property.html]
-
-  [flex-basis: units "%" onto "px"]
-    expected: FAIL
-
-  [flex-basis: units "%" onto "rem"]
-    expected: FAIL
-
-  [flex-basis: units "px" onto "%"]
-    expected: FAIL
-
-  [flex-basis: calc]
-    expected: FAIL
-
-  [flex-basis: units "rem" onto "%"]
-    expected: FAIL
-
-  [flex-basis: units "calc" onto "px"]
-    expected: FAIL
-
--- a/testing/web-platform/meta/web-animations/animation-model/animation-types/addition-per-property.html.ini
+++ b/testing/web-platform/meta/web-animations/animation-model/animation-types/addition-per-property.html.ini
@@ -1,21 +1,1 @@
 prefs: [layout.css.font-variations.enabled:true, layout.css.overflow-clip-box.enabled:true, layout.css.individual-transform.enabled:true]
-[addition-per-property.html]
-
-  [flex-basis: units "px" onto "%"]
-    expected: FAIL
-
-  [flex-basis: units "%" onto "rem"]
-    expected: FAIL
-
-  [flex-basis: calc]
-    expected: FAIL
-
-  [flex-basis: units "rem" onto "%"]
-    expected: FAIL
-
-  [flex-basis: units "%" onto "px"]
-    expected: FAIL
-
-  [flex-basis: units "calc" onto "px"]
-    expected: FAIL
-
--- a/testing/web-platform/meta/web-animations/animation-model/animation-types/interpolation-per-property.html.ini
+++ b/testing/web-platform/meta/web-animations/animation-model/animation-types/interpolation-per-property.html.ini
@@ -1,18 +1,5 @@
 prefs: [layout.css.font-variations.enabled:true, layout.css.overflow-clip-box.enabled:true, layout.css.individual-transform.enabled:true]
 [interpolation-per-property.html]
   [filter: interpolate different length of filter-function-list with drop-shadow function]
     expected: FAIL
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1345709
-
-  [flex-basis supports animating as combination units "px" and "%"]
-    expected: FAIL
-
-  [flex-basis supports animating as combination units "px" and "calc"]
-    expected: FAIL
-
-  [flex-basis supports animating as a calc]
-    expected: FAIL
-
-  [flex-basis supports animating as combination units "%" and "em"]
-    expected: FAIL
-