Bug 115840

Summary: REGRESSION (r145680): No box shadow rendered on element with positioned child that obscures it
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: Layout and RenderingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, esprehn+autocc, glenn, koivisto, mitz, simon.fraser, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Testcase
none
Patch
koivisto: review+
Alternative patch simon.fraser: review-

Description Simon Fraser (smfr) 2013-05-08 18:19:22 PDT
Created attachment 201125 [details]
Testcase

There should be a box shadow on the parent of the gray box in the testcase, but it's missing.
Comment 1 Radar WebKit Bug Importer 2013-05-08 18:19:48 PDT
<rdar://problem/13845025>
Comment 2 Simon Fraser (smfr) 2013-05-08 18:28:39 PDT
Regressed at http://trac.webkit.org/changeset/145680
Comment 3 Simon Fraser (smfr) 2013-05-08 21:57:22 PDT
Ah, there's a code path where paintFillLayer() paints the box shadow.
Comment 4 Simon Fraser (smfr) 2013-05-08 21:58:20 PDT
…which was done to fix bug 78728.
Comment 5 Simon Fraser (smfr) 2013-05-08 22:10:47 PDT
Created attachment 201134 [details]
Patch
Comment 6 Antti Koivisto 2013-05-08 22:27:33 PDT
Created attachment 201136 [details]
Alternative patch
Comment 7 Antti Koivisto 2013-05-08 22:31:25 PDT
The simpler approach might be better. I'm not sure if it is semantically correct to consider box shadow in background extent.
Comment 8 Simon Fraser (smfr) 2013-05-08 22:53:20 PDT
Comment on attachment 201136 [details]
Alternative patch

View in context: https://bugs.webkit.org/attachment.cgi?id=201136&action=review

> Source/WebCore/rendering/RenderBox.cpp:1151
> +    LayoutRect backgroundRect = pixelSnappedIntRect(style()->boxShadow() ? boxShadowExtent() : borderBoxRect());

I think it's confusing for a function called backgroundPaintedExtent() to return the box shadow extent, unless you rename it to boxDecorationExtent().

This patch also means that you'll always consult box shadows for obscuration, even when the background might be obscured and the shadow drawn separately. So I prefer my patch.
Comment 9 Simon Fraser (smfr) 2013-05-10 17:58:55 PDT
https://trac.webkit.org/r149918