Bug 1490619 - Fall back to the computed value for overconstrained abspos / fixed pos. r=mats
authorEmilio Cobos Álvarez <emilio@crisal.io>
Mon, 04 Feb 2019 23:28:44 +0000
changeset 456745 06e188d40c8d9cfb3ac4e2eb351b4ac91ff209b9
parent 456744 bad9be613a20fd3d91f9155ec1e806a011f3ca8e
child 456746 dbda94af3d52aeecccfe8f12cf084d7ae1376ede
push id35504
push usercsabou@mozilla.com
push dateTue, 05 Feb 2019 21:57:12 +0000
treeherdermozilla-central@1e374e23c02f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmats
bugs1490619
milestone67.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 1490619 - Fall back to the computed value for overconstrained abspos / fixed pos. r=mats Differential Revision: https://phabricator.services.mozilla.com/D5667
layout/style/nsComputedDOMStyle.cpp
layout/style/nsComputedDOMStyle.h
testing/web-platform/meta/css/cssom/getComputedStyle-insets-absolute.html.ini
testing/web-platform/meta/css/cssom/getComputedStyle-insets-fixed.html.ini
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -2582,40 +2582,97 @@ already_AddRefed<CSSValue> nsComputedDOM
 already_AddRefed<CSSValue> nsComputedDOMStyle::GetOffsetWidthFor(
     mozilla::Side aSide) {
   const nsStyleDisplay* display = StyleDisplay();
 
   AssertFlushedPendingReflows();
 
   uint8_t position = display->mPosition;
   if (!mOuterFrame) {
-    // GetRelativeOffset and GetAbsoluteOffset don't handle elements
-    // without frames in any sensible way.  GetStaticOffset, however,
-    // is perfect for that case.
+    // GetNonStaticPositionOffset or GetAbsoluteOffset don't handle elements
+    // without frames in any sensible way. GetStaticOffset, however, is perfect
+    // for that case.
     position = NS_STYLE_POSITION_STATIC;
   }
 
   switch (position) {
     case NS_STYLE_POSITION_STATIC:
       return GetStaticOffset(aSide);
-    case NS_STYLE_POSITION_RELATIVE:
-      return GetRelativeOffset(aSide);
     case NS_STYLE_POSITION_STICKY:
-      return GetStickyOffset(aSide);
+      return GetNonStaticPositionOffset(
+          aSide, false, &nsComputedDOMStyle::GetScrollFrameContentWidth,
+          &nsComputedDOMStyle::GetScrollFrameContentHeight);
     case NS_STYLE_POSITION_ABSOLUTE:
     case NS_STYLE_POSITION_FIXED:
       return GetAbsoluteOffset(aSide);
+    case NS_STYLE_POSITION_RELATIVE:
+      return GetNonStaticPositionOffset(
+          aSide, true, &nsComputedDOMStyle::GetCBContentWidth,
+          &nsComputedDOMStyle::GetCBContentHeight);
     default:
-      NS_ERROR("Invalid position");
+      MOZ_ASSERT_UNREACHABLE("Invalid position");
       return nullptr;
   }
 }
 
+static_assert(eSideTop == 0 && eSideRight == 1 && eSideBottom == 2 &&
+                  eSideLeft == 3,
+              "box side constants not as expected for NS_OPPOSITE_SIDE");
+#define NS_OPPOSITE_SIDE(s_) mozilla::Side(((s_) + 2) & 3)
+
+already_AddRefed<CSSValue> nsComputedDOMStyle::GetNonStaticPositionOffset(
+    mozilla::Side aSide, bool aResolveAuto, PercentageBaseGetter aWidthGetter,
+    PercentageBaseGetter aHeightGetter) {
+  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
+
+  const nsStylePosition* positionData = StylePosition();
+  int32_t sign = 1;
+  nsStyleCoord coord = positionData->mOffset.Get(aSide);
+
+  NS_ASSERTION(coord.GetUnit() == eStyleUnit_Coord ||
+                   coord.GetUnit() == eStyleUnit_Percent ||
+                   coord.GetUnit() == eStyleUnit_Auto || coord.IsCalcUnit(),
+               "Unexpected unit");
+
+  if (coord.GetUnit() == eStyleUnit_Auto) {
+    if (!aResolveAuto) {
+      val->SetIdent(eCSSKeyword_auto);
+      return val.forget();
+    }
+    coord = positionData->mOffset.Get(NS_OPPOSITE_SIDE(aSide));
+    sign = -1;
+  }
+
+  PercentageBaseGetter baseGetter = (aSide == eSideLeft || aSide == eSideRight)
+                                        ? aWidthGetter
+                                        : aHeightGetter;
+
+  val->SetAppUnits(sign * StyleCoordToNSCoord(coord, baseGetter, 0, false));
+  return val.forget();
+}
+
 already_AddRefed<CSSValue> nsComputedDOMStyle::GetAbsoluteOffset(
     mozilla::Side aSide) {
+  const auto& offset = StylePosition()->mOffset;
+  const nsStyleCoord& coord = offset.Get(aSide);
+  const nsStyleCoord& oppositeCoord = offset.Get(NS_OPPOSITE_SIDE(aSide));
+
+  if (coord.GetUnit() == eStyleUnit_Auto ||
+      oppositeCoord.GetUnit() == eStyleUnit_Auto) {
+    RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
+    val->SetAppUnits(GetUsedAbsoluteOffset(aSide));
+    return val.forget();
+  }
+
+  return GetNonStaticPositionOffset(
+      aSide, false, &nsComputedDOMStyle::GetCBPaddingRectWidth,
+      &nsComputedDOMStyle::GetCBPaddingRectHeight);
+}
+
+nscoord nsComputedDOMStyle::GetUsedAbsoluteOffset(mozilla::Side aSide) {
   MOZ_ASSERT(mOuterFrame, "need a frame, so we can call GetContainingBlock()");
 
   nsIFrame* container = mOuterFrame->GetContainingBlock();
   nsMargin margin = mOuterFrame->GetUsedMargin();
   nsMargin border = container->GetUsedBorder();
   nsMargin scrollbarSizes(0, 0, 0, 0);
   nsRect rect = mOuterFrame->GetRect();
   nsRect containerRect = container->GetRect();
@@ -2658,79 +2715,17 @@ already_AddRefed<CSSValue> nsComputedDOM
       offset = rect.x - margin.left - border.left - scrollbarSizes.left;
 
       break;
     default:
       NS_ERROR("Invalid side");
       break;
   }
 
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-  val->SetAppUnits(offset);
-  return val.forget();
-}
-
-static_assert(eSideTop == 0 && eSideRight == 1 && eSideBottom == 2 &&
-                  eSideLeft == 3,
-              "box side constants not as expected for NS_OPPOSITE_SIDE");
-#define NS_OPPOSITE_SIDE(s_) mozilla::Side(((s_) + 2) & 3)
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::GetRelativeOffset(
-    mozilla::Side aSide) {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-
-  const nsStylePosition* positionData = StylePosition();
-  int32_t sign = 1;
-  nsStyleCoord coord = positionData->mOffset.Get(aSide);
-
-  NS_ASSERTION(coord.GetUnit() == eStyleUnit_Coord ||
-                   coord.GetUnit() == eStyleUnit_Percent ||
-                   coord.GetUnit() == eStyleUnit_Auto || coord.IsCalcUnit(),
-               "Unexpected unit");
-
-  if (coord.GetUnit() == eStyleUnit_Auto) {
-    coord = positionData->mOffset.Get(NS_OPPOSITE_SIDE(aSide));
-    sign = -1;
-  }
-  PercentageBaseGetter baseGetter;
-  if (aSide == eSideLeft || aSide == eSideRight) {
-    baseGetter = &nsComputedDOMStyle::GetCBContentWidth;
-  } else {
-    baseGetter = &nsComputedDOMStyle::GetCBContentHeight;
-  }
-
-  val->SetAppUnits(sign * StyleCoordToNSCoord(coord, baseGetter, 0, false));
-  return val.forget();
-}
-
-already_AddRefed<CSSValue> nsComputedDOMStyle::GetStickyOffset(
-    mozilla::Side aSide) {
-  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
-
-  const nsStylePosition* positionData = StylePosition();
-  nsStyleCoord coord = positionData->mOffset.Get(aSide);
-
-  NS_ASSERTION(coord.GetUnit() == eStyleUnit_Coord ||
-                   coord.GetUnit() == eStyleUnit_Percent ||
-                   coord.GetUnit() == eStyleUnit_Auto || coord.IsCalcUnit(),
-               "Unexpected unit");
-
-  if (coord.GetUnit() == eStyleUnit_Auto) {
-    val->SetIdent(eCSSKeyword_auto);
-    return val.forget();
-  }
-  PercentageBaseGetter baseGetter;
-  if (aSide == eSideLeft || aSide == eSideRight) {
-    baseGetter = &nsComputedDOMStyle::GetScrollFrameContentWidth;
-  } else {
-    baseGetter = &nsComputedDOMStyle::GetScrollFrameContentHeight;
-  }
-
-  val->SetAppUnits(StyleCoordToNSCoord(coord, baseGetter, 0, false));
-  return val.forget();
+  return offset;
 }
 
 already_AddRefed<CSSValue> nsComputedDOMStyle::GetStaticOffset(
     mozilla::Side aSide) {
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
   SetValueToCoord(val, StylePosition()->mOffset.Get(aSide), false);
   return val.forget();
 }
@@ -2959,30 +2954,50 @@ nscoord nsComputedDOMStyle::StyleCoordTo
 
 bool nsComputedDOMStyle::GetCBContentWidth(nscoord& aWidth) {
   if (!mOuterFrame) {
     return false;
   }
 
   AssertFlushedPendingReflows();
 
-  nsIFrame* container = mOuterFrame->GetContainingBlock();
-  aWidth = container->GetContentRect().width;
+  aWidth = mOuterFrame->GetContainingBlock()->GetContentRect().width;
   return true;
 }
 
 bool nsComputedDOMStyle::GetCBContentHeight(nscoord& aHeight) {
   if (!mOuterFrame) {
     return false;
   }
 
   AssertFlushedPendingReflows();
 
-  nsIFrame* container = mOuterFrame->GetContainingBlock();
-  aHeight = container->GetContentRect().height;
+  aHeight = mOuterFrame->GetContainingBlock()->GetContentRect().height;
+  return true;
+}
+
+bool nsComputedDOMStyle::GetCBPaddingRectWidth(nscoord& aWidth) {
+  if (!mOuterFrame) {
+    return false;
+  }
+
+  AssertFlushedPendingReflows();
+
+  aWidth = mOuterFrame->GetContainingBlock()->GetPaddingRect().width;
+  return true;
+}
+
+bool nsComputedDOMStyle::GetCBPaddingRectHeight(nscoord& aHeight) {
+  if (!mOuterFrame) {
+    return false;
+  }
+
+  AssertFlushedPendingReflows();
+
+  aHeight = mOuterFrame->GetContainingBlock()->GetPaddingRect().height;
   return true;
 }
 
 bool nsComputedDOMStyle::GetScrollFrameContentWidth(nscoord& aWidth) {
   if (!mOuterFrame) {
     return false;
   }
 
--- a/layout/style/nsComputedDOMStyle.h
+++ b/layout/style/nsComputedDOMStyle.h
@@ -157,26 +157,32 @@ class nsComputedDOMStyle final : public 
 
 #define STYLE_STRUCT(name_)                \
   const nsStyle##name_* Style##name_() {   \
     return mComputedStyle->Style##name_(); \
   }
 #include "nsStyleStructList.h"
 #undef STYLE_STRUCT
 
+  /**
+   * A method to get a percentage base for a percentage value.  Returns true
+   * if a percentage base value was determined, false otherwise.
+   */
+  typedef bool (nsComputedDOMStyle::*PercentageBaseGetter)(nscoord&);
+
   already_AddRefed<CSSValue> GetEllipseRadii(const nsStyleCorners& aRadius,
                                              mozilla::Corner aFullCorner);
 
   already_AddRefed<CSSValue> GetOffsetWidthFor(mozilla::Side aSide);
 
-  already_AddRefed<CSSValue> GetAbsoluteOffset(mozilla::Side aSide);
-
-  already_AddRefed<CSSValue> GetRelativeOffset(mozilla::Side aSide);
-
-  already_AddRefed<CSSValue> GetStickyOffset(mozilla::Side aSide);
+  already_AddRefed<CSSValue> GetAbsoluteOffset(mozilla::Side);
+  nscoord GetUsedAbsoluteOffset(mozilla::Side);
+  already_AddRefed<CSSValue> GetNonStaticPositionOffset(
+      mozilla::Side aSide, bool aResolveAuto, PercentageBaseGetter aWidthGetter,
+      PercentageBaseGetter aHeightGetter);
 
   already_AddRefed<CSSValue> GetStaticOffset(mozilla::Side aSide);
 
   already_AddRefed<CSSValue> GetPaddingWidthFor(mozilla::Side aSide);
 
   already_AddRefed<CSSValue> GetBorderStyleFor(mozilla::Side aSide);
 
   already_AddRefed<CSSValue> GetBorderWidthFor(mozilla::Side aSide);
@@ -399,22 +405,16 @@ class nsComputedDOMStyle final : public 
   void SetValueToPositionCoord(const mozilla::Position::Coord& aCoord,
                                nsROCSSPrimitiveValue* aValue);
   void SetValueToPosition(const mozilla::Position& aPosition,
                           nsDOMCSSValueList* aValueList);
   void SetValueToURLValue(const mozilla::css::URLValue* aURL,
                           nsROCSSPrimitiveValue* aValue);
 
   /**
-   * A method to get a percentage base for a percentage value.  Returns true
-   * if a percentage base value was determined, false otherwise.
-   */
-  typedef bool (nsComputedDOMStyle::*PercentageBaseGetter)(nscoord&);
-
-  /**
    * Method to set aValue to aCoord.  If aCoord is a percentage value and
    * aPercentageBaseGetter is not null, aPercentageBaseGetter is called.  If it
    * returns true, the percentage base it outputs in its out param is used
    * to compute an nscoord value.  If the getter is null or returns false,
    * the percent value of aCoord is set as a percent value on aValue.  aTable,
    * if not null, is the keyword table to handle eStyleUnit_Enumerated.  When
    * calling SetAppUnits on aValue (for coord or percent values), the value
    * passed in will be clamped to be no less than aMinAppUnits and no more than
@@ -442,17 +442,19 @@ class nsComputedDOMStyle final : public 
 
   /**
    * Append coord values from four sides. It omits values when possible.
    */
   void AppendFourSideCoordValues(nsDOMCSSValueList* aList,
                                  const nsStyleSides& aValues);
 
   bool GetCBContentWidth(nscoord& aWidth);
-  bool GetCBContentHeight(nscoord& aWidth);
+  bool GetCBContentHeight(nscoord& aHeight);
+  bool GetCBPaddingRectWidth(nscoord& aWidth);
+  bool GetCBPaddingRectHeight(nscoord& aHeight);
   bool GetScrollFrameContentWidth(nscoord& aWidth);
   bool GetScrollFrameContentHeight(nscoord& aHeight);
   bool GetFrameBoundsWidthForTransform(nscoord& aWidth);
   bool GetFrameBoundsHeightForTransform(nscoord& aHeight);
   bool GetFrameBorderRectWidth(nscoord& aWidth);
   bool GetFrameBorderRectHeight(nscoord& aHeight);
 
   /* Helper functions for computing and serializing a nsStyleCoord. */
deleted file mode 100644
--- a/testing/web-platform/meta/css/cssom/getComputedStyle-insets-absolute.html.ini
+++ /dev/null
@@ -1,217 +0,0 @@
-[getComputedStyle-insets-absolute.html]
-  [horizontal-tb rtl inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
deleted file mode 100644
--- a/testing/web-platform/meta/css/cssom/getComputedStyle-insets-fixed.html.ini
+++ /dev/null
@@ -1,217 +0,0 @@
-[getComputedStyle-insets-fixed.html]
-  [horizontal-tb rtl inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl rtl inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr ltr inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr ltr - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside horizontal-tb rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-lr rtl inside vertical-lr rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside vertical-lr ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [vertical-rl ltr inside vertical-rl rtl - Pixels resolve as-is when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl rtl - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb rtl inside horizontal-tb ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-
-  [horizontal-tb ltr inside vertical-rl ltr - Percentages absolutize the computed value when overconstrained]
-    expected: FAIL
-