Skip to content
  • dino@apple.com's avatar
    Don't process filters if the input region is exceptionally large. · d458b69d
    dino@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=83317
    
    Reviewed by Simon Fraser.
    
    Source/WebCore:
    
    An extremely large element causes problems with filters, either by
    taking too long to compute the output or using too much memory. The
    filter engine already has some constants for maximum expected size.
    Make sure the render tree checks them before deciding to apply
    effects.
    
    Tests: css3/filters/huge-region-composited.html
           css3/filters/huge-region.html
    
    * platform/graphics/filters/FilterEffect.cpp:
    (WebCore::FilterEffect::apply):
    * rendering/FilterEffectRenderer.cpp:
    (WebCore):
    (WebCore::isFilterSizeValid):
    (WebCore::FilterEffectRenderer::build):
    (WebCore::FilterEffectRenderer::updateBackingStore):
    (WebCore::FilterEffectRendererHelper::beginFilterEffect):
    * rendering/FilterEffectRenderer.h:
    (FilterEffectRenderer):
    * rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::updateOrRemoveFilterEffect):
    
    LayoutTests:
    
    * css3/filters/huge-region-composited-expected.txt: Added.
    * css3/filters/huge-region-composited.html: Added.
    * css3/filters/huge-region-expected.txt: Added.
    * css3/filters/huge-region.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@114172 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d458b69d