Bug 1414036 - Make sure we paint nsDisplayButtonBorder's box shadow before early return of the empty border. r=kats draft
authorEthan Lin <ethlin@mozilla.com>
Fri, 03 Nov 2017 14:15:29 +0800
changeset 692476 cca3500d8ade3b7a555487796979296135516be1
parent 692424 6c14c8fa180552a91eee19829dc348503fe9e2b8
child 738771 3d79a517f6ab654dac812b2ab87823a8cf8691a4
push id87518
push userbmo:ethlin@mozilla.com
push dateFri, 03 Nov 2017 06:23:12 +0000
reviewerskats
bugs1414036
milestone58.0a1
Bug 1414036 - Make sure we paint nsDisplayButtonBorder's box shadow before early return of the empty border. r=kats MozReview-Commit-ID: AWevj7ls5SL
layout/forms/nsButtonFrameRenderer.cpp
--- a/layout/forms/nsButtonFrameRenderer.cpp
+++ b/layout/forms/nsButtonFrameRenderer.cpp
@@ -365,33 +365,33 @@ nsDisplayButtonBorder::CreateWebRenderCo
                                                mozilla::layers::WebRenderLayerManager* aManager,
                                                nsDisplayListBuilder* aDisplayListBuilder)
 {
   ContainerLayerParameters parameter;
   if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
     return false;
   }
 
-  if (!mBorderRenderer) {
-    // empty border, nothing to do
-    MOZ_ASSERT(mBorderIsEmpty);
-    return true;
-  }
-
   // This is really a combination of paint box shadow inner +
   // paint border.
   nsRect buttonRect = nsRect(ToReferenceFrame(), mFrame->GetSize());
   bool snap;
   nsRegion visible = GetBounds(aDisplayListBuilder, &snap);
   nsDisplayBoxShadowInner::CreateInsetBoxShadowWebRenderCommands(aBuilder,
                                                                  aSc,
                                                                  visible,
                                                                  mFrame,
                                                                  buttonRect);
-  mBorderRenderer->CreateWebRenderCommands(this, aBuilder, aResources, aSc);
+
+  if (mBorderRenderer) {
+    mBorderRenderer->CreateWebRenderCommands(this, aBuilder, aResources, aSc);
+  } else {
+    // empty border, nothing to do
+    MOZ_ASSERT(mBorderIsEmpty);
+  }
 
   return true;
 }
 
 void
 nsDisplayButtonBorder::ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
                                                  const nsDisplayItemGeometry* aGeometry,
                                                  nsRegion *aInvalidRegion) const