Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1244)

Unified Diff: Source/core/layout/svg/SVGResourcesCache.cpp

Issue 1288903003: Random clean up of SVGResourcesCache (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/core/svg/SVGDocumentExtensions.h » ('j') | Source/core/svg/SVGDocumentExtensions.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/layout/svg/SVGResourcesCache.cpp
diff --git a/Source/core/layout/svg/SVGResourcesCache.cpp b/Source/core/layout/svg/SVGResourcesCache.cpp
index d58b141e3e78a65a0e2c7808e9ab13784c6b63c9..b2ad428c7a5755ba1928de2d01a072deb87453e7 100644
--- a/Source/core/layout/svg/SVGResourcesCache.cpp
+++ b/Source/core/layout/svg/SVGResourcesCache.cpp
@@ -43,7 +43,7 @@ void SVGResourcesCache::addResourcesFromLayoutObject(LayoutObject* object, const
const SVGComputedStyle& svgStyle = style.svgStyle();
- // Build a list of all resources associated with the passed LayoutObject
+ // Build a list of all resources associated with the passed LayoutObject.
OwnPtr<SVGResources> newResources = SVGResources::buildResources(object, svgStyle);
if (!newResources)
return;
@@ -55,7 +55,7 @@ void SVGResourcesCache::addResourcesFromLayoutObject(LayoutObject* object, const
SVGResourcesCycleSolver solver(object, resources);
solver.resolveCycles();
- // Walk resources and register the layout object at each resources.
+ // Walk resources and register the layout object as a client of each resource.
HashSet<LayoutSVGResourceContainer*> resourceSet;
resources->buildSetOfResources(resourceSet);
@@ -69,7 +69,7 @@ void SVGResourcesCache::removeResourcesFromLayoutObject(LayoutObject* object)
if (!resources)
return;
- // Walk resources and register the layout object at each resources.
+ // Walk resources and unregister the layout object as a client of each resource.
HashSet<LayoutSVGResourceContainer*> resourceSet;
resources->buildSetOfResources(resourceSet);
@@ -77,26 +77,20 @@ void SVGResourcesCache::removeResourcesFromLayoutObject(LayoutObject* object)
resourceContainer->removeClient(object);
}
-static inline SVGResourcesCache* resourcesCacheFromLayoutObject(const LayoutObject* layoutObject)
+static inline SVGResourcesCache& resourcesCache(Document& document)
{
- Document& document = layoutObject->document();
-
- SVGDocumentExtensions& extensions = document.accessSVGExtensions();
- SVGResourcesCache* cache = extensions.resourcesCache();
- ASSERT(cache);
-
- return cache;
+ return document.accessSVGExtensions().resourcesCache();
}
SVGResources* SVGResourcesCache::cachedResourcesForLayoutObject(const LayoutObject* layoutObject)
{
ASSERT(layoutObject);
- return resourcesCacheFromLayoutObject(layoutObject)->m_cache.get(layoutObject);
+ return resourcesCache(layoutObject->document()).m_cache.get(layoutObject);
}
void SVGResourcesCache::clientLayoutChanged(LayoutObject* object)
{
- SVGResources* resources = SVGResourcesCache::cachedResourcesForLayoutObject(object);
+ SVGResources* resources = cachedResourcesForLayoutObject(object);
if (!resources)
return;
@@ -121,17 +115,20 @@ void SVGResourcesCache::clientStyleChanged(LayoutObject* layoutObject, StyleDiff
if (!diff.hasDifference() || !layoutObject->parent())
return;
- // In this case the proper SVGFE*Element will decide whether the modified CSS properties require a relayout or paintInvalidation.
+ // In this case the proper SVGFE*Element will decide whether the modified CSS properties require
+ // a relayout or paintInvalidation.
if (layoutObject->isSVGResourceFilterPrimitive() && !diff.needsLayout())
return;
- // Dynamic changes of CSS properties like 'clip-path' may require us to recompute the associated resources for a layoutObject.
- // FIXME: Avoid passing in a useless StyleDifference, but instead compare oldStyle/newStyle to see which resources changed
- // to be able to selectively rebuild individual resources, instead of all of them.
+ // Dynamic changes of CSS properties like 'clip-path' may require us to recompute the associated
+ // resources for a LayoutObject.
+ // TODO(fs): Avoid passing in a useless StyleDifference, but instead compare oldStyle/newStyle
+ // to see which resources changed to be able to selectively rebuild individual resources,
+ // instead of all of them.
if (layoutObjectCanHaveResources(layoutObject)) {
- SVGResourcesCache* cache = resourcesCacheFromLayoutObject(layoutObject);
- cache->removeResourcesFromLayoutObject(layoutObject);
- cache->addResourcesFromLayoutObject(layoutObject, newStyle);
+ SVGResourcesCache& cache = resourcesCache(layoutObject->document());
+ cache.removeResourcesFromLayoutObject(layoutObject);
+ cache.addResourcesFromLayoutObject(layoutObject, newStyle);
}
LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(layoutObject, false);
@@ -145,8 +142,8 @@ void SVGResourcesCache::clientWasAddedToTree(LayoutObject* layoutObject, const C
if (!layoutObjectCanHaveResources(layoutObject))
return;
- SVGResourcesCache* cache = resourcesCacheFromLayoutObject(layoutObject);
- cache->addResourcesFromLayoutObject(layoutObject, newStyle);
+ SVGResourcesCache& cache = resourcesCache(layoutObject->document());
+ cache.addResourcesFromLayoutObject(layoutObject, newStyle);
}
void SVGResourcesCache::clientWillBeRemovedFromTree(LayoutObject* layoutObject)
@@ -157,31 +154,30 @@ void SVGResourcesCache::clientWillBeRemovedFromTree(LayoutObject* layoutObject)
if (!layoutObjectCanHaveResources(layoutObject))
return;
- SVGResourcesCache* cache = resourcesCacheFromLayoutObject(layoutObject);
- cache->removeResourcesFromLayoutObject(layoutObject);
+ SVGResourcesCache& cache = resourcesCache(layoutObject->document());
+ cache.removeResourcesFromLayoutObject(layoutObject);
}
void SVGResourcesCache::clientDestroyed(LayoutObject* layoutObject)
{
ASSERT(layoutObject);
- SVGResources* resources = SVGResourcesCache::cachedResourcesForLayoutObject(layoutObject);
+ SVGResources* resources = cachedResourcesForLayoutObject(layoutObject);
if (resources)
resources->removeClientFromCache(layoutObject);
-
- SVGResourcesCache* cache = resourcesCacheFromLayoutObject(layoutObject);
- cache->removeResourcesFromLayoutObject(layoutObject);
+ SVGResourcesCache& cache = resourcesCache(layoutObject->document());
+ cache.removeResourcesFromLayoutObject(layoutObject);
}
void SVGResourcesCache::resourceDestroyed(LayoutSVGResourceContainer* resource)
{
ASSERT(resource);
- SVGResourcesCache* cache = resourcesCacheFromLayoutObject(resource);
+ SVGResourcesCache& cache = resourcesCache(resource->document());
// The resource itself may have clients, that need to be notified.
- cache->removeResourcesFromLayoutObject(resource);
+ cache.removeResourcesFromLayoutObject(resource);
- for (auto& objectResources : cache->m_cache) {
+ for (auto& objectResources : cache.m_cache) {
objectResources.value->resourceDestroyed(resource);
// Mark users of destroyed resources as pending resolution based on the id of the old resource.
« no previous file with comments | « no previous file | Source/core/svg/SVGDocumentExtensions.h » ('j') | Source/core/svg/SVGDocumentExtensions.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698