Backed out changeset 5041ce453104
authorRobert O'Callahan <robert@ocallahan.org>
Thu, 08 Jan 2009 23:19:21 +1300
changeset 23468 582c495906ecee1266928c38b4f60d39166e978e
parent 23462 5041ce45310455ddecbe69b45fd7db46a2097966
child 23469 5b6ee66cccc02e6c00f59c6f4226ef94c8331746
push idunknown
push userunknown
push dateunknown
milestone1.9.2a1pre
backs out5041ce45310455ddecbe69b45fd7db46a2097966
Backed out changeset 5041ce453104
layout/base/nsCSSRendering.cpp
layout/base/nsCSSRenderingBorders.cpp
layout/base/nsCSSRenderingBorders.h
layout/reftests/bugs/456219-1-mask-wArA.png
layout/reftests/bugs/456219-1-mask-wArB.png
layout/reftests/bugs/456219-1-mask-wArC.png
layout/reftests/bugs/456219-1-mask-wArD.png
layout/reftests/bugs/456219-1-mask-wArE.png
layout/reftests/bugs/456219-1-mask-wBrA.png
layout/reftests/bugs/456219-1-mask-wBrB.png
layout/reftests/bugs/456219-1-mask-wBrC.png
layout/reftests/bugs/456219-1-mask-wBrD.png
layout/reftests/bugs/456219-1-mask-wBrE.png
layout/reftests/bugs/456219-1-mask-wCrA.png
layout/reftests/bugs/456219-1-mask-wCrB.png
layout/reftests/bugs/456219-1-mask-wCrC.png
layout/reftests/bugs/456219-1-mask-wCrD.png
layout/reftests/bugs/456219-1-mask-wCrE.png
layout/reftests/bugs/456219-1-mask-wDrA.png
layout/reftests/bugs/456219-1-mask-wDrB.png
layout/reftests/bugs/456219-1-mask-wDrC.png
layout/reftests/bugs/456219-1-mask-wDrD.png
layout/reftests/bugs/456219-1-mask-wDrE.png
layout/reftests/bugs/456219-1-mask-wErA.png
layout/reftests/bugs/456219-1-mask-wErB.png
layout/reftests/bugs/456219-1-mask-wErC.png
layout/reftests/bugs/456219-1-mask-wErD.png
layout/reftests/bugs/456219-1-mask-wErE.png
layout/reftests/bugs/456219-1-ref.html
layout/reftests/bugs/456219-1a.html
layout/reftests/bugs/456219-1b.html
layout/reftests/bugs/456219-1c.html
layout/reftests/bugs/456219-2-mask.png
layout/reftests/bugs/456219-2-ref.html
layout/reftests/bugs/456219-2.html
layout/reftests/bugs/reftest.list
--- a/layout/base/nsCSSRendering.cpp
+++ b/layout/base/nsCSSRendering.cpp
@@ -273,16 +273,24 @@ static void DrawBorderImageSide(gfxConte
                                 nsIDeviceContext* aDeviceContext,
                                 imgIContainer* aImage,
                                 gfxRect& aDestRect,
                                 gfxSize aInterSize,
                                 gfxRect& aSourceRect,
                                 PRUint8 aHFillType,
                                 PRUint8 aVFillType);
 
+static void PaintBackgroundColor(nsPresContext* aPresContext,
+                                 nsIRenderingContext& aRenderingContext,
+                                 nsIFrame* aForFrame,
+                                 const nsRect& aBgClipArea,
+                                 const nsStyleBackground& aColor,
+                                 const nsStyleBorder& aBorder,
+                                 PRBool aCanPaintNonWhite);
+
 static nscolor MakeBevelColor(PRIntn whichSide, PRUint8 style,
                               nscolor aBackgroundColor,
                               nscolor aBorderColor);
 
 static gfxRect GetTextDecorationRectInternal(const gfxPoint& aPt,
                                              const gfxSize& aLineSize,
                                              const gfxFloat aAscent,
                                              const gfxFloat aOffset,
@@ -1234,17 +1242,18 @@ IsSolidBorderEdge(const nsStyleBorder& a
 }
 
 /**
  * Returns true if all border edges are either missing or opaque.
  */
 static PRBool
 IsSolidBorder(const nsStyleBorder& aBorder)
 {
-  if (aBorder.mBorderColors)
+  if (aBorder.mBorderColors ||
+      nsLayoutUtils::HasNonZeroCorner(aBorder.mBorderRadius))
     return PR_FALSE;
   for (PRUint32 i = 0; i < 4; ++i) {
     if (!IsSolidBorderEdge(aBorder, i))
       return PR_FALSE;
   }
   return PR_TRUE;
 }
 
@@ -1257,197 +1266,86 @@ nsCSSRendering::PaintBackgroundWithSC(ns
                                       const nsStyleBackground& aColor,
                                       const nsStyleBorder& aBorder,
                                       PRBool aUsePrintSettings,
                                       nsRect* aBGClipRect)
 {
   NS_PRECONDITION(aForFrame,
                   "Frame is expected to be provided to PaintBackground");
 
+  PRBool canDrawBackgroundImage = PR_TRUE;
+  PRBool canDrawBackgroundColor = PR_TRUE;
+
+  if (aUsePrintSettings) {
+    canDrawBackgroundImage = aPresContext->GetBackgroundImageDraw();
+    canDrawBackgroundColor = aPresContext->GetBackgroundColorDraw();
+  }
+
   // Check to see if we have an appearance defined.  If so, we let the theme
   // renderer draw the background and bail out.
-  // XXXzw this ignores aBGClipRect.
   const nsStyleDisplay* displayData = aForFrame->GetStyleDisplay();
   if (displayData->mAppearance) {
     nsITheme *theme = aPresContext->GetTheme();
-    if (theme && theme->ThemeSupportsWidget(aPresContext, aForFrame,
-                                            displayData->mAppearance)) {
+    if (theme && theme->ThemeSupportsWidget(aPresContext, aForFrame, displayData->mAppearance)) {
       nsRect dirty;
       dirty.IntersectRect(aDirtyRect, aBorderArea);
       theme->DrawWidgetBackground(&aRenderingContext, aForFrame, 
                                   displayData->mAppearance, aBorderArea, dirty);
       return;
     }
   }
 
-  // Determine whether we are drawing background images and/or
-  // background colors.
-  PRBool drawBackgroundImage = PR_TRUE;
-  PRBool drawBackgroundColor = PR_TRUE;
-
-  if (aUsePrintSettings) {
-    drawBackgroundImage = aPresContext->GetBackgroundImageDraw();
-    drawBackgroundColor = aPresContext->GetBackgroundColorDraw();
-  }
-
-  if ((aColor.mBackgroundFlags & NS_STYLE_BG_IMAGE_NONE) ||
-      !aColor.mBackgroundImage) {
-    NS_ASSERTION((aColor.mBackgroundFlags & NS_STYLE_BG_IMAGE_NONE) &&
-                 !aColor.mBackgroundImage, "background flags/image mismatch");
-    drawBackgroundImage = PR_FALSE;
-  }
-
-  // If GetBackgroundColorDraw() is false, we are still expected to
-  // draw color in the background of any frame that's not completely
-  // transparent, but we are expected to use white instead of whatever
-  // color was specified.
-  nscolor bgColor;
-  if (drawBackgroundColor) {
-    bgColor = aColor.mBackgroundColor;
-    if (NS_GET_A(bgColor) == 0)
-      drawBackgroundColor = PR_FALSE;
-  } else {
-    bgColor = NS_RGB(255, 255, 255);
-    if (drawBackgroundImage || NS_GET_A(aColor.mBackgroundColor) > 0)
-      drawBackgroundColor = PR_TRUE;
+  // Same coordinate space as aBorderArea
+  nsRect bgClipArea;
+  if (aBGClipRect) {
+    bgClipArea = *aBGClipRect;
   }
-
-  // At this point, drawBackgroundImage and drawBackgroundColor are
-  // true if and only if we are actually supposed to paint an image or
-  // color into aDirtyRect, respectively.
-  if (!drawBackgroundImage && !drawBackgroundColor)
-    return;
-
-  // Compute the outermost boundary of the area that might be painted.
-  gfxContext *ctx = aRenderingContext.ThebesContext();
-  nscoord appUnitsPerPixel = aPresContext->AppUnitsPerDevPixel();
-
-  // Same coordinate space as aBorderArea & aBGClipRect
-  nsRect bgArea;
-  gfxCornerSizes bgRadii;
-  PRBool haveRoundedCorners;
-  PRBool radiiAreOuter = PR_TRUE;
-  {
-    nscoord radii[8];
-    haveRoundedCorners =
-      GetBorderRadiusTwips(aBorder.mBorderRadius, aForFrame->GetSize().width,
-                           radii);
-    if (haveRoundedCorners)
-      ComputePixelRadii(radii, aBorderArea, aForFrame->GetSkipSides(),
-                        appUnitsPerPixel, &bgRadii);
-  }
-  
-  // The background is rendered over the 'background-clip' area,
-  // which is normally equal to the border area but may be reduced
-  // to the padding area by CSS.  Also, if the border is solid, we
-  // don't need to draw outside the padding area.  In either case,
-  // if the borders are rounded, make sure we use the same inner
-  // radii as the border code will.
-  bgArea = aBorderArea;
-  if (aColor.mBackgroundClip != NS_STYLE_BG_CLIP_BORDER ||
-      IsSolidBorder(aBorder)) {
-    nsMargin border = aForFrame->GetUsedBorder();
-    aForFrame->ApplySkipSides(border);
-    bgArea.Deflate(border);
-    if (haveRoundedCorners) {
-      gfxCornerSizes outerRadii = bgRadii;
-      gfxFloat borderSizes[4] = {
-        border.top / appUnitsPerPixel, border.right / appUnitsPerPixel,
-        border.bottom / appUnitsPerPixel, border.left / appUnitsPerPixel
-      };
-      nsCSSBorderRenderer::ComputeInnerRadii(outerRadii, borderSizes,
-                                             &bgRadii);
-      radiiAreOuter = PR_FALSE;
+  else {
+    // The background is rendered over the 'background-clip' area.
+    bgClipArea = aBorderArea;
+    // If the border is solid, then clip the background to the padding-box
+    // so that we don't draw unnecessary tiles.
+    if (aColor.mBackgroundClip != NS_STYLE_BG_CLIP_BORDER ||
+        IsSolidBorder(aBorder)) {
+      nsMargin border = aForFrame->GetUsedBorder();
+      aForFrame->ApplySkipSides(border);
+      bgClipArea.Deflate(border);
     }
   }
 
-  // The 'bgClipArea' (used only by the image tiling logic, far below)
-  // is the caller-provided aBGClipRect if any, or else the bgArea
-  // computed above.  (Arguably it should be the intersection, but
-  // that breaks the table painter -- in particular, honoring the
-  // bgArea when we have aBGClipRect breaks reftests/bugs/403429-1[ab].)
-  // The dirtyRect is the intersection of that rectangle with the
-  // caller-provided aDirtyRect.  If the dirtyRect is empty there is
-  // nothing to draw.
+  gfxContext *ctx = aRenderingContext.ThebesContext();
 
-  nsRect bgClipArea;
-  if (aBGClipRect)
-    bgClipArea = *aBGClipRect;
-  else
-    bgClipArea = bgArea;
-
+  // The actual dirty rect is the intersection of the 'background-clip'
+  // area and the dirty rect we were given
   nsRect dirtyRect;
-  dirtyRect.IntersectRect(bgClipArea, aDirtyRect);
-
-  if (dirtyRect.IsEmpty())
-    return;
-
-  // Compute the Thebes equivalent of the dirtyRect.
-  gfxRect dirtyRectGfx(RectToGfxRect(dirtyRect, appUnitsPerPixel));
-  dirtyRectGfx.Round();
-  dirtyRectGfx.Condition();
-  if (dirtyRectGfx.IsEmpty()) {
-    NS_WARNING("converted dirty rect should not be empty");
+  if (!dirtyRect.IntersectRect(bgClipArea, aDirtyRect)) {
+    // Nothing to paint
     return;
   }
 
-  // If we have rounded corners, clip all subsequent drawing to the
-  // rounded rectangle defined by bgArea and bgRadii (we don't know
-  // whether the rounded corners intrude on the dirtyRect or not).
-  // Do not do this if we have a caller-provided clip rect --
-  // as above with bgArea, arguably a bug, but table painting seems
-  // to depend on it.
-
-  gfxContextAutoSaveRestore autoSR;
-  if (haveRoundedCorners && !aBGClipRect) {
-    gfxRect bgAreaGfx(RectToGfxRect(bgArea, appUnitsPerPixel));
-    bgAreaGfx.Round();
-    bgAreaGfx.Condition();
-    if (bgAreaGfx.IsEmpty()) {
-      NS_WARNING("converted background area should not be empty");
-      return;
-    }
-
-    autoSR.SetContext(ctx);
-    ctx->NewPath();
-    ctx->RoundedRectangle(bgAreaGfx, bgRadii, radiiAreOuter);
-    ctx->Clip();
+  // if there is no background image or background images are turned off, try a color.
+  if (!aColor.mBackgroundImage || !canDrawBackgroundImage) {
+    PaintBackgroundColor(aPresContext, aRenderingContext, aForFrame, bgClipArea,
+                         aColor, aBorder, canDrawBackgroundColor);
+    return;
   }
 
-  // If we might be using a background color, go ahead and set it now.
-  if (drawBackgroundColor)
-    ctx->SetColor(gfxRGBA(bgColor));
-
-  // If there is no background image, draw a color.  (If there is
-  // neither a background image nor a color, we wouldn't have gotten
-  // this far.)
-  if (!drawBackgroundImage) {
-    ctx->NewPath();
-    ctx->Rectangle(dirtyRectGfx);
-    ctx->Fill();
-    return;
-  }
+  // We have a background image
 
   // Lookup the image
   imgIRequest *req = aPresContext->LoadImage(aColor.mBackgroundImage,
                                              aForFrame);
 
   PRUint32 status = imgIRequest::STATUS_ERROR;
   if (req)
     req->GetImageStatus(&status);
 
-  // While waiting for the image, draw a color, if any.
-  if (!req ||
-      !(status & imgIRequest::STATUS_FRAME_COMPLETE) ||
-      !(status & imgIRequest::STATUS_SIZE_AVAILABLE)) {
-    if (drawBackgroundColor) {
-      ctx->NewPath();
-      ctx->Rectangle(dirtyRectGfx);
-      ctx->Fill();
-    }
+  if (!req || !(status & imgIRequest::STATUS_FRAME_COMPLETE) || !(status & imgIRequest::STATUS_SIZE_AVAILABLE)) {
+    PaintBackgroundColor(aPresContext, aRenderingContext, aForFrame, bgClipArea,
+                         aColor, aBorder, canDrawBackgroundColor);
     return;
   }
 
   nsCOMPtr<imgIContainer> image;
   req->GetImage(getter_AddRefs(image));
 
   nsSize imageSize;
   image->GetWidth(&imageSize.width);
@@ -1500,60 +1398,56 @@ nsCSSRendering::PaintBackgroundWithSC(ns
       nsMargin padding = geometryFrame->GetUsedPadding();
       geometryFrame->ApplySkipSides(padding);
       bgOriginRect.Deflate(padding);
       NS_ASSERTION(aColor.mBackgroundOrigin == NS_STYLE_BG_ORIGIN_CONTENT,
                    "unknown background-origin value");
     }
   }
 
+  PRBool  needBackgroundColor = NS_GET_A(aColor.mBackgroundColor) > 0;
   PRIntn  repeat = aColor.mBackgroundRepeat;
+
   switch (repeat) {
     case NS_STYLE_BG_REPEAT_X:
       break;
     case NS_STYLE_BG_REPEAT_Y:
       break;
     case NS_STYLE_BG_REPEAT_XY:
-      if (drawBackgroundColor) {
-        // If the image is completely opaque, we may not need to paint
-        // the background color.
+      if (needBackgroundColor) {
+        // If the image is completely opaque, we do not need to paint the
+        // background color
         nsCOMPtr<gfxIImageFrame> gfxImgFrame;
         image->GetCurrentFrame(getter_AddRefs(gfxImgFrame));
         if (gfxImgFrame) {
-          gfxImgFrame->GetNeedsBackground(&drawBackgroundColor);
-          if (!drawBackgroundColor) {
-            // If the current frame is smaller than its container, we
-            // need to paint the background color even if the frame
-            // itself is opaque.
-            nsSize iSize;
-            image->GetWidth(&iSize.width);
-            image->GetHeight(&iSize.height);
-            nsRect iframeRect;
-            gfxImgFrame->GetRect(iframeRect);
-            if (iSize.width != iframeRect.width ||
-                iSize.height != iframeRect.height) {
-              drawBackgroundColor = PR_TRUE;
-            }
+          gfxImgFrame->GetNeedsBackground(&needBackgroundColor);
+
+          /* check for tiling of a image where frame smaller than container */
+          nsSize iSize;
+          image->GetWidth(&iSize.width);
+          image->GetHeight(&iSize.height);
+          nsRect iframeRect;
+          gfxImgFrame->GetRect(iframeRect);
+          if (iSize.width != iframeRect.width ||
+              iSize.height != iframeRect.height) {
+            needBackgroundColor = PR_TRUE;
           }
         }
       }
       break;
     case NS_STYLE_BG_REPEAT_OFF:
     default:
-      NS_ASSERTION(repeat == NS_STYLE_BG_REPEAT_OFF,
-                   "unknown background-repeat value");
+      NS_ASSERTION(repeat == NS_STYLE_BG_REPEAT_OFF, "unknown background-repeat value");
       break;
   }
 
-  // The background color is rendered over the entire dirty area,
-  // even if the image isn't.
-  if (drawBackgroundColor) {
-    ctx->NewPath();
-    ctx->Rectangle(dirtyRectGfx);
-    ctx->Fill();
+  // The background color is rendered over the 'background-clip' area
+  if (needBackgroundColor) {
+    PaintBackgroundColor(aPresContext, aRenderingContext, aForFrame, bgClipArea,
+                         aColor, aBorder, canDrawBackgroundColor);
   }
 
   // Compute the anchor point.
   //
   // relative to aBorderArea.TopLeft() (which is where the top-left
   // of aForFrame's border-box will be rendered)
   nsPoint imageTopLeft, anchor;
   if (NS_STYLE_BG_ATTACHMENT_FIXED == aColor.mBackgroundAttachment) {
@@ -1600,30 +1494,54 @@ nsCSSRendering::PaintBackgroundWithSC(ns
     anchor += offset;
   } else {
     ComputeBackgroundAnchorPoint(aColor, bgOriginRect.Size(), imageSize,
                                  &imageTopLeft, &anchor);
     imageTopLeft += bgOriginRect.TopLeft();
     anchor += bgOriginRect.TopLeft();
   }
 
+  ctx->Save();
+
+  nscoord borderRadii[8];
+  PRBool haveRadius = GetBorderRadiusTwips(aBorder.mBorderRadius,
+                                           aForFrame->GetSize().width,
+                                           borderRadii);
+  if (haveRadius) {
+    nscoord appUnitsPerPixel = aPresContext->DevPixelsToAppUnits(1);
+    gfxCornerSizes radii;
+    ComputePixelRadii(borderRadii, bgClipArea,
+                      aForFrame ? aForFrame->GetSkipSides() : 0,
+                      appUnitsPerPixel, &radii);
+
+    gfxRect oRect(RectToGfxRect(bgClipArea, appUnitsPerPixel));
+    oRect.Round();
+    oRect.Condition();
+
+    ctx->NewPath();
+    ctx->RoundedRectangle(oRect, radii);
+    ctx->Clip();
+  }
+
   nsRect destArea(imageTopLeft + aBorderArea.TopLeft(), imageSize);
   nsRect fillArea = destArea;
   if (repeat & NS_STYLE_BG_REPEAT_X) {
     fillArea.x = bgClipArea.x;
     fillArea.width = bgClipArea.width;
   }
   if (repeat & NS_STYLE_BG_REPEAT_Y) {
     fillArea.y = bgClipArea.y;
     fillArea.height = bgClipArea.height;
   }
   fillArea.IntersectRect(fillArea, bgClipArea);
 
   nsLayoutUtils::DrawImage(&aRenderingContext, image,
       destArea, fillArea, anchor + aBorderArea.TopLeft(), dirtyRect);
+
+  ctx->Restore();
 }
 
 static void
 DrawBorderImage(nsPresContext* aPresContext,
                 nsIRenderingContext& aRenderingContext,
                 nsIFrame* aForFrame, const nsRect& aBorderArea,
                 const nsStyleBorder& aBorderStyle)
 {
@@ -2007,16 +1925,88 @@ DrawBorderImageSide(gfxContext *aThebesC
   aThebesContext->SetPattern(pattern);
   aThebesContext->NewPath();
   aThebesContext->Rectangle(gfxRect(renderOffset, rectSize));
   aThebesContext->SetOperator(gfxContext::OPERATOR_ADD);
   aThebesContext->Fill();
   aThebesContext->Restore();
 }
 
+static void
+PaintBackgroundColor(nsPresContext* aPresContext,
+                     nsIRenderingContext& aRenderingContext,
+                     nsIFrame* aForFrame,
+                     const nsRect& aBgClipArea,
+                     const nsStyleBackground& aColor,
+                     const nsStyleBorder& aBorder,
+                     PRBool aCanPaintNonWhite)
+{
+  // If we're only allowed to paint white, then don't bail out on transparent
+  // color if we're not completely transparent.  See the corresponding check
+  // for whether we're allowed to paint background images in
+  // PaintBackgroundWithSC before the first call to PaintBackgroundColor.
+  if (NS_GET_A(aColor.mBackgroundColor) == 0 &&
+      (aCanPaintNonWhite || aColor.IsTransparent())) {
+    // nothing to paint
+    return;
+  }
+
+  nscolor color = aColor.mBackgroundColor;
+  if (!aCanPaintNonWhite) {
+    color = NS_RGB(255, 255, 255);
+  }
+  aRenderingContext.SetColor(color);
+
+  if (!nsLayoutUtils::HasNonZeroCorner(aBorder.mBorderRadius)) {
+    aRenderingContext.FillRect(aBgClipArea);
+    return;
+  }
+
+  gfxContext *ctx = aRenderingContext.ThebesContext();
+
+  // needed for our border thickness
+  nscoord appUnitsPerPixel = aPresContext->AppUnitsPerDevPixel();
+
+  nscoord borderRadii[8];
+  GetBorderRadiusTwips(aBorder.mBorderRadius, aForFrame->GetSize().width,
+                       borderRadii);
+
+  // the bgClipArea is the outside
+  gfxRect oRect(RectToGfxRect(aBgClipArea, appUnitsPerPixel));
+  oRect.Round();
+  oRect.Condition();
+  if (oRect.IsEmpty())
+    return;
+
+  // convert the radii
+  gfxCornerSizes radii;
+  ComputePixelRadii(borderRadii, aBgClipArea,
+                    aForFrame ? aForFrame->GetSkipSides() : 0,
+                    appUnitsPerPixel, &radii);
+
+  // Add 1.0 to any border radii; if we don't, the border and background
+  // curves will combine to have fringing at the rounded corners.  Since
+  // alpha is used for coverage, we have problems because the border and
+  // background should have identical coverage, and the border should
+  // overlay the background exactly.  The way to avoid this is by using
+  // a supersampling scheme, but we don't have the mechanism in place to do
+  // this.  So, this will do for now.
+  for (int i = 0; i < 4; i++) {
+    if (radii[i].width > 0.0)
+      radii[i].width += 1.0;
+    if (radii[i].height > 0.0)
+      radii[i].height += 1.0;
+  }
+
+  ctx->NewPath();
+  ctx->RoundedRectangle(oRect, radii);
+  ctx->Fill();
+}
+
+
 // Begin table border-collapsing section
 // These functions were written to not disrupt the normal ones and yet satisfy some additional requirements
 // At some point, all functions should be unified to include the additional functionality that these provide
 
 static nscoord
 RoundIntToPixel(nscoord aValue, 
                 nscoord aTwipsPerPixel,
                 PRBool  aRoundDown = PR_FALSE)
--- a/layout/base/nsCSSRenderingBorders.cpp
+++ b/layout/base/nsCSSRenderingBorders.cpp
@@ -95,16 +95,20 @@
  *         |- DrawDashedSide || DrawBorderSides with one side
  */
 
 static void ComputeBorderCornerDimensions(const gfxRect& aOuterRect,
                                           const gfxRect& aInnerRect,
                                           const gfxCornerSizes& aRadii,
                                           gfxCornerSizes *aDimsResult);
 
+static void ComputeInnerRadii(const gfxCornerSizes& radii,
+                              const gfxFloat *borderSizes,
+                              gfxCornerSizes *innerRadii);
+
 // given a side index, get the previous and next side index
 #define NEXT_SIDE(_s) (((_s) + 1) & 3)
 #define PREV_SIDE(_s) (((_s) + 3) & 3)
 
 // from the given base color and the background color, turn
 // color into a color for the given border pattern style
 static gfxRGBA MakeBorderColor(const gfxRGBA& aColor,
                                const gfxRGBA& aBackgroundColor,
@@ -192,20 +196,20 @@ nsCSSBorderRenderer::nsCSSBorderRenderer
   mInnerRect.Inset(mBorderWidths[0], mBorderWidths[1], mBorderWidths[2], mBorderWidths[3]);
 
   ComputeBorderCornerDimensions(mOuterRect, mInnerRect, mBorderRadii, &mBorderCornerDimensions);
 
   mOneUnitBorder = CheckFourFloatsEqual(mBorderWidths, 1.0);
   mNoBorderRadius = AllCornersZeroSize(mBorderRadii);
 }
 
-/* static */ void
-nsCSSBorderRenderer::ComputeInnerRadii(const gfxCornerSizes& aRadii,
-                                       const gfxFloat *aBorderSizes,
-                                       gfxCornerSizes *aInnerRadiiRet)
+void
+ComputeInnerRadii(const gfxCornerSizes& aRadii,
+                  const gfxFloat *aBorderSizes,
+                  gfxCornerSizes *aInnerRadiiRet)
 {
   gfxCornerSizes& iRadii = *aInnerRadiiRet;
 
   iRadii[C_TL].width = PR_MAX(0.0, aRadii[C_TL].width - aBorderSizes[NS_SIDE_LEFT]);
   iRadii[C_TL].height = PR_MAX(0.0, aRadii[C_TL].height - aBorderSizes[NS_SIDE_TOP]);
 
   iRadii[C_TR].width = PR_MAX(0.0, aRadii[C_TR].width - aBorderSizes[NS_SIDE_RIGHT]);
   iRadii[C_TR].height = PR_MAX(0.0, aRadii[C_TR].height - aBorderSizes[NS_SIDE_TOP]);
--- a/layout/base/nsCSSRenderingBorders.h
+++ b/layout/base/nsCSSRenderingBorders.h
@@ -195,21 +195,16 @@ struct nsCSSBorderRenderer {
   // function used by the above to handle -moz-border-colors
   void DrawBorderSidesCompositeColors(PRIntn aSides, const nsBorderColors *compositeColors);
 
   // draw the given dashed side
   void DrawDashedSide (PRUint8 aSide);
 
   // draw the entire border
   void DrawBorders ();
-
-  // utility function used for background painting as well as borders
-  static void ComputeInnerRadii(const gfxCornerSizes& aRadii,
-                                const gfxFloat *aBorderSizes,
-                                gfxCornerSizes *aInnerRadiiRet);
 };
 
 #ifdef DEBUG_NEW_BORDERS
 #include <stdarg.h>
 
 static inline void S(const gfxPoint& p) {
   fprintf (stderr, "[%f,%f]", p.x, p.y);
 }
deleted file mode 100644
index f067dd69e673989e910540402b5091ee7ee1cfc5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 96770b9666a65fc6e9b33b83e29d7b6fd4dfe5da..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e1e6d7926f670d4b6eee2c0d761242721fd3c763..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 18aef7d91066b327aff0ef200507fc8dfdf9d940..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 38023b1a619032c90d6f8677030706860529906b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6c88fdfa841db4e29a1ed6e67d1c9fad65a6fc51..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6b25085d400d218b9b694949de027698398d0fb6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a5f0e3c0957a763e31936227a0d4a56e7b829ad6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b9f73723a6eaedc3f601df84cb1ebef0182efc5b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index d1224fd9a7b33e97b5a9eca491bd7dd5dbe6169c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ae00e2fa1a06edcdf65e32a8eb55d812de702aeb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c1218af8db0a0e6edf3ef127efc056c887fe45ce..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 914dc604b99ee252a05025cbdfa98ad200131e9d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index eac41e8d0b49a66781c8009a9af8fc8730b090d5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index eac41e8d0b49a66781c8009a9af8fc8730b090d5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0055025143279009fa647fdc03658bb8be264fb6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index cc67a180ae175897b72f11207669b37e049dfacd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 65d4e4a0c21121445c659eeb8df9139763779587..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index dab07aebd55442db49ae6e12570306baefa3b3a7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 40ef81096bf73953f732c106b8f2f540619ed16c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b871ced5a6a981574f5fff60f4fa810a4418c7a7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1db05a62f93147174b10800623888d7c79d7a36c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2094c425eab96e38edbd706024a6e72e0083b0ca..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0e4e271040fa477dc513f8b254afca7a94903fdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 497ae2dd3af8cb42f7d6666bb3264f1198b5b944..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
--- a/layout/reftests/bugs/456219-1-ref.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!doctype html>
-<html><head>
-<title>background-clip interaction with border-radius</title>
-<style>
-/* If you fix bug #466572, you can substantially simplify this test
-   case. */
-
-table { table-layout: fixed; width: 550px }
-td { width: 110px; height: 110px; text-align: center }
-div.i {
-   z-index: 0;
-   width: 70px;
-   height: 70px;
-   border-style: solid;
-   border-color: transparent;
-   background-color: green;
-}
-.rA div.i { -moz-border-radius: 10px; }
-.rB div.i { -moz-border-radius: 20px; }
-.rC div.i { -moz-border-radius: 30px; }
-.rD div.i { -moz-border-radius: 40px; }
-.rE div.i { -moz-border-radius: 50px; }
-
-.wA div.i { border-width: 10px 10px 10px 10px; }
-.wB div.i { border-width: 20px 20px 20px 20px; }
-.wC div.i { border-width: 5px 20px 5px 20px; }
-.wD div.i { border-width: 20px 20px 5px 5px; }
-.wE div.i { border-width: 5px 10px 15px 20px; }
-
-div.o {
-  display: inline-block;
-  position: relative;
-}
-img {
-  position: absolute; top: 0; left: 0;
-  z-index: 1;
-}
-</style>
-</head><body>
-<table>
-<tr class="wA">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wArA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wArB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wArC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wArD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wArE.png"></div></td>
-</tr>
-<tr class="wB">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrE.png"></div></td>
-</tr>
-<tr class="wC">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrE.png"></div></td>
-</tr>
-<tr class="wD">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrE.png"></div></td>
-</tr>
-<tr class="wE">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wErA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wErB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wErC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wErD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wErE.png"></div></td>
-</tr>
-</table>
-
-<p>Inside each green shape, there should be no white.</p>
-
-</body></html>
deleted file mode 100644
--- a/layout/reftests/bugs/456219-1a.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!doctype html>
-<html><head>
-<title>background-clip interaction with border-radius</title>
-<style>
-/* If you fix bug #466572, you can substantially simplify this test
-   case. */
-
-table { table-layout: fixed; width: 550px }
-td { width: 110px; height: 110px; text-align: center }
-div.i {
-   z-index: 0;
-   width: 70px;
-   height: 70px;
-   border-style: solid;
-   border-color: green;
-   -moz-background-clip: padding;
-   background-color: green;
-}
-.rA div.i { -moz-border-radius: 10px; }
-.rB div.i { -moz-border-radius: 20px; }
-.rC div.i { -moz-border-radius: 30px; }
-.rD div.i { -moz-border-radius: 40px; }
-.rE div.i { -moz-border-radius: 50px; }
-
-.wA div.i { border-width: 10px 10px 10px 10px; }
-.wB div.i { border-width: 20px 20px 20px 20px; }
-.wC div.i { border-width: 5px 20px 5px 20px; }
-.wD div.i { border-width: 20px 20px 5px 5px; }
-.wE div.i { border-width: 5px 10px 15px 20px; }
-
-div.o {
-  display: inline-block;
-  position: relative;
-}
-img {
-  position: absolute; top: 0; left: 0;
-  z-index: 1;
-}
-</style>
-</head><body>
-<table>
-<tr class="wA">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wArA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wArB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wArC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wArD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wArE.png"></div></td>
-</tr>
-<tr class="wB">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrE.png"></div></td>
-</tr>
-<tr class="wC">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrE.png"></div></td>
-</tr>
-<tr class="wD">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrE.png"></div></td>
-</tr>
-<tr class="wE">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wErA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wErB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wErC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wErD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wErE.png"></div></td>
-</tr>
-</table>
-
-<p>Inside each green shape, there should be no white.</p>
-
-</body></html>
deleted file mode 100644
--- a/layout/reftests/bugs/456219-1b.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!doctype html>
-<html><head>
-<title>background-clip interaction with border-radius</title>
-<style>
-/* If you fix bug #466572, you can substantially simplify this test
-   case. */
-
-table { table-layout: fixed; width: 550px }
-td { width: 110px; height: 110px; text-align: center }
-div.i {
-   z-index: 0;
-   width: 70px;
-   height: 70px;
-   border-style: solid;
-   border-color: green;
-   -moz-background-clip: padding;
-   background-image: url("data:image/gif;base64,R0lGODdhAQABAPAAAACAAAAAACwAAAAAAQABAAACAkQBADs=");
-}
-.rA div.i { -moz-border-radius: 10px; }
-.rB div.i { -moz-border-radius: 20px; }
-.rC div.i { -moz-border-radius: 30px; }
-.rD div.i { -moz-border-radius: 40px; }
-.rE div.i { -moz-border-radius: 50px; }
-
-.wA div.i { border-width: 10px 10px 10px 10px; }
-.wB div.i { border-width: 20px 20px 20px 20px; }
-.wC div.i { border-width: 5px 20px 5px 20px; }
-.wD div.i { border-width: 20px 20px 5px 5px; }
-.wE div.i { border-width: 5px 10px 15px 20px; }
-
-div.o {
-  display: inline-block;
-  position: relative;
-}
-img {
-  position: absolute; top: 0; left: 0;
-  z-index: 1;
-}
-</style>
-</head><body>
-<table>
-<tr class="wA">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wArA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wArB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wArC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wArD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wArE.png"></div></td>
-</tr>
-<tr class="wB">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrE.png"></div></td>
-</tr>
-<tr class="wC">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrE.png"></div></td>
-</tr>
-<tr class="wD">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrE.png"></div></td>
-</tr>
-<tr class="wE">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wErA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wErB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wErC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wErD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wErE.png"></div></td>
-</tr>
-</table>
-
-<p>Inside each green shape, there should be no white.</p>
-
-</body></html>
deleted file mode 100644
--- a/layout/reftests/bugs/456219-1c.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!doctype html>
-<html><head>
-<title>background-clip interaction with border-radius</title>
-<style>
-/* If you fix bug #466572, you can substantially simplify this test
-   case. */
-
-table { table-layout: fixed; width: 550px }
-td { width: 110px; height: 110px; text-align: center }
-div.i {
-   z-index: 0;
-   width: 70px;
-   height: 70px;
-   border-style: solid;
-   border-color: green;
-   -moz-background-clip: padding;
-   background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaAQMAAAACZtNBAAAAA1BMVEUAgACc+aWRAAAAEklEQVQYGWNgGAWjYBSMgsECAASSAAFZGYSDAAAAAElFTkSuQmCC");
-}
-.rA div.i { -moz-border-radius: 10px; }
-.rB div.i { -moz-border-radius: 20px; }
-.rC div.i { -moz-border-radius: 30px; }
-.rD div.i { -moz-border-radius: 40px; }
-.rE div.i { -moz-border-radius: 50px; }
-
-.wA div.i { border-width: 10px 10px 10px 10px; }
-.wB div.i { border-width: 20px 20px 20px 20px; }
-.wC div.i { border-width: 5px 20px 5px 20px; }
-.wD div.i { border-width: 20px 20px 5px 5px; }
-.wE div.i { border-width: 5px 10px 15px 20px; }
-
-div.o {
-  display: inline-block;
-  position: relative;
-}
-img {
-  position: absolute; top: 0; left: 0;
-  z-index: 1;
-}
-
-</style>
-</head><body>
-<table>
-<tr class="wA">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wArA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wArB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wArC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wArD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wArE.png"></div></td>
-</tr>
-<tr class="wB">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wBrE.png"></div></td>
-</tr>
-<tr class="wC">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wCrE.png"></div></td>
-</tr>
-<tr class="wD">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wDrE.png"></div></td>
-</tr>
-<tr class="wE">
-  <td class="rA"><div class="o"><div class="i"></div><img src="456219-1-mask-wErA.png"></div></td>
-  <td class="rB"><div class="o"><div class="i"></div><img src="456219-1-mask-wErB.png"></div></td>
-  <td class="rC"><div class="o"><div class="i"></div><img src="456219-1-mask-wErC.png"></div></td>
-  <td class="rD"><div class="o"><div class="i"></div><img src="456219-1-mask-wErD.png"></div></td>
-  <td class="rE"><div class="o"><div class="i"></div><img src="456219-1-mask-wErE.png"></div></td>
-</tr>
-</table>
-
-<p>Inside each green shape, there should be no white.</p>
-</body></html>
deleted file mode 100644
index cf513235ab5238db97d80f302cdcd010b49f4a71..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
--- a/layout/reftests/bugs/456219-2-ref.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title></title>
-<style type="text/css">
-/* If you fix bug #466572, you can remove the IMG
-   and related styling from this test case.  */
-body { background: white; color: black; margin: 0 }
-div {
-  background: aqua;
-  color: black;
-  height: 75px;
-  width: 75px;
-  padding: 15px;
-  border: 20px solid;
-  -moz-border-radius: 25px;
-  border-color: transparent;
-  -moz-background-clip: padding;
-}
-img {
-  position: absolute;
-  top: 20px;
-  left: 20px;
-}
-</style>
-</head>
-<body>
-<div></div>
-<img src="456219-2-mask.png">
-</body>
-</html>
deleted file mode 100644
--- a/layout/reftests/bugs/456219-2.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title></title>
-<style type="text/css">
-/* If you fix bug #466572, you can remove the IMG
-   and related styling from this test case.  */
-body { background: white; color: black; margin: 0 }
-div {
-  background: aqua;
-  color: black;
-  height: 75px;
-  width: 75px;
-  padding: 15px;
-  border: 20px solid;
-  -moz-border-radius: 25px;
-  border-color: white;
-}
-img {
-  position: absolute;
-  top: 20px;
-  left: 20px;
-}
-</style>
-</head>
-<body>
-<div></div>
-<img src="456219-2-mask.png">
-</body>
-</html>
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -963,21 +963,17 @@ random == 445004-1.html 445004-1-ref.htm
 == 451168-1.html 451168-1-ref.html
 == 452964-1.html 452964-1-ref.html
 == 454361.html about:blank
 == 455105-1.html 455105-ref.html
 == 455105-2.html 455105-ref.html
 == 455171-5.html 455171-5-ref.html
 == 455280-1.xhtml 455280-1-ref.xhtml
 == 455826-1.html 455826-1-ref.html
-fails-if(MOZ_WIDGET_TOOLKIT=="cocoa") == 456147.xul 456147-ref.html # bug 458047
-== 456219-1a.html 456219-1-ref.html
-== 456219-1b.html 456219-1-ref.html
-== 456219-1c.html 456219-1-ref.html
-== 456219-2.html 456219-2-ref.html
+fails-if(MOZ_WIDGET_TOOLKIT=="cocoa") == 456147.xul 456147-ref.html # bug 456147, but not caused by it
 == 456330-1.gif 456330-1-ref.png
 == 456484-1.html 456484-1-ref.html
 == 457398-1.html 457398-1-ref.html
 == 457398-2.html 457398-2-ref.html
 == 458296-1a.html 458296-1-ref.html
 == 458296-1b.html 458296-1-ref.html
 == 458296-1c.html 458296-1-ref.html
 == 458296-1d.html 458296-1-ref.html