Garbage down left side of nytimes.com page (if subscriber)
https://bugs.webkit.org/show_bug.cgi?id=115839

Source/WebCore:

Reviewed by Antti Koivisto.

RenderLayer::backgroundIsKnownToBeOpaqueInRect() would incorrectly return true
for layers where the given rect wasn't contained in the background rect, but
where some child layer obscured the rect, even though clipping hid part
of that child layer.

So bail from RenderLayer::backgroundIsKnownToBeOpaqueInRect() if we have
any overflow clipping. This could be enhanced in future to test whether child
layers obscure the clipping rect, but that would be more expensive.

Test: compositing/contents-opaque/overflow-hidden-child-layers.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::backgroundIsKnownToBeOpaqueInRect):

LayoutTests:

Reviewed by Antti Koivisto.

* compositing/contents-opaque/overflow-hidden-child-layers-expected.txt: Added.
* compositing/contents-opaque/overflow-hidden-child-layers.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149914 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION (r143626): Element shows as garbage in image gallery
https://bugs.webkit.org/show_bug.cgi?id=115946

Source/WebCore:

Reviewed by Antti Koivisto.

RenderLayer::backgroundIsKnownToBeOpaqueInRect() used hasVisibleContent()
to check whether the layer's content was hidden via the visibility property.
However, this assumed that a passing hasVisibleContent() check meant that the
entire area was covered by the renderers and layers checked layer.

This is not always true. It's possible to have a visibility:hidden layer
with a non-covering visbility:visible child, or even a single RenderText
child that happens to have visibility:visible style. In these situations,
hasVisibleContent() returns true but the entire area is not painted.

So we have to fall back to on a more conservative check using the
visibility style, which will give is a reliable answer for the current layer.

Tests: compositing/contents-opaque/hidden-with-visible-child.html
       compositing/contents-opaque/hidden-with-visible-text.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::backgroundIsKnownToBeOpaqueInRect):

LayoutTests:

Reviewed by Antti Koivisto.

Test that dumps layers for a visibility:hidden element with a child text node,
and with a visibility:visible child. The resulting compositing layer should
not be marked as opaque.

* compositing/contents-opaque/hidden-with-visible-child-expected.txt: Added.
* compositing/contents-opaque/hidden-with-visible-child.html: Added.
* compositing/contents-opaque/hidden-with-visible-text-expected.txt: Added.
* compositing/contents-opaque/hidden-with-visible-text.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149915 268f45cc-cd09-0410-ab3c-d52691b4dbfc