Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 500c16dfca9aef5d2fb07e80839e3e1fb00167e2
      
https://github.com/WebKit/WebKit/commit/500c16dfca9aef5d2fb07e80839e3e1fb00167e2
  Author: Said Abou-Hallawa <s...@apple.com>
  Date:   2025-03-25 (Tue, 25 Mar 2025)

  Changed paths:
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayer.h
    M Source/WebCore/rendering/RenderLayerModelObject.cpp
    M Source/WebCore/rendering/RenderLayerModelObject.h
    M Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp
    M Source/WebCore/rendering/svg/SVGRenderSupport.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceSolidColor.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp
    M Source/WebCore/rendering/svg/legacy/SVGResources.cpp
    M Source/WebCore/rendering/svg/legacy/SVGResources.h
    M Source/WebCore/rendering/svg/legacy/SVGResourcesCache.cpp

  Log Message:
  -----------
  A RELEASE_ASSERT() may fire because RenderLayer does nor clear its SVG 
clipPath data
https://bugs.webkit.org/show_bug.cgi?id=290363
rdar://147410341

Reviewed by Simon Fraser.

LegacyRenderSVGResourceClipper::applyClippingToContext() is called from
RenderLayer::setupClipPath(). This function adds a new entry for the
RenderLayer::renderer() in its m_clipperMap for caching the clipping data.

This HashMap entry never gets deleted. RenderLayer::~RenderLayer() needs to
clear its clipPath data to remove the entry that it added.

The caching and the invalidation methods of all the SVG resources need to be
renamed to allow removeClientFromCache() without having to invalidate it.

LegacyRenderSVGResource needs to define four abstract methods:

1. removeClientFromCache(): Removes the renderer from the cache.
2. removeClientFromCacheAndMarkForInvalidation(): Remove the renderer and mark
   it for invalidation.
3. removeAllClientsFromCache(): Clears the cache.
4. removeAllClientsFromCacheAndMarkForInvalidationIfNeeded: Clears the cache and
   mark all the renderers for invalidation.

* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::setupClipPath):
(WebCore::RenderLayer::clearLayerClipPath):
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::legacySVGClipperResourceFromStyle const):
* Source/WebCore/rendering/RenderLayerModelObject.h:
* Source/WebCore/rendering/svg/RenderSVGGradientStop.cpp:
(WebCore::RenderSVGGradientStop::styleDidChange):
* Source/WebCore/rendering/svg/SVGRenderSupport.cpp:
(WebCore::invalidateResourcesOfChildren):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp:
(WebCore::LegacyRenderSVGImage::imageChanged):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.cpp:
(WebCore::LegacyRenderSVGResource::removeAllClientsFromCacheAndMarkForInvalidation):
(WebCore::removeFromCacheAndInvalidateDependencies):
(WebCore::LegacyRenderSVGResource::markForLayoutAndParentResourceInvalidationIfNeeded):
(WebCore::LegacyRenderSVGResource::removeAllClientsFromCache): Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResource.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.cpp:
(WebCore::LegacyRenderSVGResourceClipper::removeAllClientsFromCache):
(WebCore::LegacyRenderSVGResourceClipper::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceClipper::removeAllClientsFromCacheIfNeeded): 
Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceClipper.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.cpp:
(WebCore::LegacyRenderSVGResourceContainer::idChanged):
(WebCore::LegacyRenderSVGResourceContainer::removeClientFromCacheAndMarkForInvalidation):
(WebCore::LegacyRenderSVGResourceContainer::removeAllClientsFromCacheAndMarkForInvalidationIfNeeded):
(WebCore::LegacyRenderSVGResourceContainer::markAllClientsForInvalidationIfNeeded):
(WebCore::LegacyRenderSVGResourceContainer::removeClient):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceContainer.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp:
(WebCore::LegacyRenderSVGResourceFilter::removeAllClientsFromCache):
(WebCore::LegacyRenderSVGResourceFilter::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceFilter::postApplyResource):
(WebCore::LegacyRenderSVGResourceFilter::markFilterForRebuild):
(WebCore::LegacyRenderSVGResourceFilter::removeAllClientsFromCacheIfNeeded): 
Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.cpp:
(WebCore::LegacyRenderSVGResourceGradient::removeAllClientsFromCache):
(WebCore::LegacyRenderSVGResourceGradient::removeAllClientsFromCacheAndMarkForInvalidationIfNeeded):
(WebCore::LegacyRenderSVGResourceGradient::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceGradient::gradientDataForRenderer):
(WebCore::LegacyRenderSVGResourceGradient::removeAllClientsFromCacheIfNeeded): 
Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceGradient.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.cpp:
(WebCore::LegacyRenderSVGResourceMarker::removeAllClientsFromCacheIfNeeded): 
Deleted.
(WebCore::LegacyRenderSVGResourceMarker::removeClientFromCache): Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMarker.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp:
(WebCore::LegacyRenderSVGResourceMasker::removeAllClientsFromCache):
(WebCore::LegacyRenderSVGResourceMasker::removeClientFromCache):
(WebCore::LegacyRenderSVGResourceMasker::removeAllClientsFromCacheIfNeeded): 
Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.cpp:
(WebCore::LegacyRenderSVGResourcePattern::removeAllClientsFromCache):
(WebCore::LegacyRenderSVGResourcePattern::removeAllClientsFromCacheAndMarkForInvalidationIfNeeded):
(WebCore::LegacyRenderSVGResourcePattern::removeClientFromCache):
(WebCore::LegacyRenderSVGResourcePattern::buildPattern):
(WebCore::LegacyRenderSVGResourcePattern::removeAllClientsFromCacheIfNeeded): 
Deleted.
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourcePattern.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceSolidColor.h:
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGRoot.cpp:
(WebCore::LegacyRenderSVGRoot::layout):
* Source/WebCore/rendering/svg/legacy/SVGResources.cpp:
(WebCore::SVGResources::removeClientFromCacheAndMarkForInvalidation const):
(WebCore::SVGResources::resourceDestroyed):
(WebCore::SVGResources::removeClientFromCache const): Deleted.
* Source/WebCore/rendering/svg/legacy/SVGResources.h:
* Source/WebCore/rendering/svg/legacy/SVGResourcesCache.cpp:
(WebCore::SVGResourcesCache::clientLayoutChanged):
(WebCore::SVGResourcesCache::clientDestroyed):

Canonical link: https://commits.webkit.org/292667@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to