REGRESSION (r135628-135632): Double box shadow failure to render
authorjunov <junov@google.com>
Fri, 22 Feb 2013 11:16:32 +0000 (12:16 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 28 Feb 2013 14:16:22 +0000 (15:16 +0100)
commit5ed26913a30b9484ef4b2394dd8f08e7509161ac
tree59e516a959c3aa7396f473055c04ab79e0d0150b
parent836b2f659d55b8197970adeeb0515a5a37293e84
REGRESSION (r135628-135632): Double box shadow failure to render

https://bugs.webkit.org/show_bug.cgi?id=107833

Reviewed by Simon Fraser.

Source/WebCore:

Regression caused by http://trac.webkit.org/changeset/135629
The regression was due to faulty occlusion logic that was assuming
that drawing the background color of a render box background layer
could be skipped when the same layer also has an opaque image attached.
In the case where the background color is drawn for the purpose of
rendering a box shadow, the shadow is typically not
completely occluded by the background image because of the shadow
blur and/or offset.  This patch fixes the problem by not culling a
background draw if it is used to draw a box shadow.

Test: fast/backgrounds/gradient-background-shadow.html

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::paintFillLayerExtended):
Changing occlusion culling test to never cull background color
draw if it is used to draw a box shadow. This is because box shadows
can draw outside the border fill region.

LayoutTests:

New ref test verifies that box shadow is drawn when
background is an opaque image. Test uses an blue gradient
as background image. Reference uses blue background color.

* fast/backgrounds/gradient-background-shadow-expected.html: Added.
* fast/backgrounds/gradient-background-shadow.html: Added.

Change-Id: I81e3271f1fdc312fd54dcd9de81903b12b1a9903
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141160 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderBoxModelObject.cpp