Skip to content
  • simon.fraser@apple.com's avatar
    Source/WebCore: Fix repaint issue on "paints into ancestor" filtered layers · 840fcfdc
    simon.fraser@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=120780
    
    Reviewed by Tim Horton.
    
    When a repaint happened on a layer with a filter, and which paints into
    its compositing ancestor, we'd repaint the wrong layer (and assert).
    
    Fix by ensuring that RenderLayer::enclosingFilterLayer() takes paintsIntoCompositedAncestor()
    into account, by adding a function that we share between three callers who
    check isComposited() && !paintsIntoCompositedAncestor(). I didn't use a function
    on RenderLayer, because I wanted it to be inline but to not #include RenderLayerBacking
    in RenderLayer.h.
    
    Test: compositing/filters/opacity-change-on-filtered-paints-into-ancestor.html
    
    * dom/Node.cpp: Drive-by removal of #include "RenderLayer.h"
    * rendering/RenderLayer.cpp:
    (WebCore::compositedWithOwnBackingStore):
    (WebCore::RenderLayer::enclosingCompositingLayerForRepaint):
    (WebCore::RenderLayer::enclosingFilterRepaintLayer):
    (WebCore::RenderLayer::clippingRootForPainting):
    
    LayoutTests: Fix repaint issue on "paints into ancestor" filtered layers
    https://bugs.webkit.org/show_bug.cgi?id=120780
    <rdar://problem/14884148>
    
    Reviewed by Tim Horton.
    
    Ref test for opacity change on a filtered layer which paints into its compositing ancestor.
    
    * compositing/filters/opacity-change-on-filtered-paints-into-ancestor-expected.html: Added.
    * compositing/filters/opacity-change-on-filtered-paints-into-ancestor.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155131 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    840fcfdc