void RenderSVGResource::markForLayoutAndParentResourceInvalidation(RenderObject* object, bool needsLayout) { ASSERT(object); ASSERT(object->document()); ASSERT(object->node()); if (needsLayout) object->setNeedsLayout(true); removeFromCacheAndInvalidateDependencies(object, needsLayout); // Invalidate resources in ancestor chain, if needed. RenderObject* current = object->parent(); while (current) { removeFromCacheAndInvalidateDependencies(current, needsLayout); if (current->isSVGResourceContainer()) { // This will process the rest of the ancestors. current->toRenderSVGResourceContainer()->removeAllClientsFromCache(); break; } current = current->parent(); } }
void LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(LayoutObject* object, bool needsLayout) { ASSERT(object); ASSERT(object->node()); if (needsLayout && !object->documentBeingDestroyed()) object->setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::SvgResourceInvalidated); removeFromCacheAndInvalidateDependencies(object, needsLayout); // Invalidate resources in ancestor chain, if needed. LayoutObject* current = object->parent(); while (current) { removeFromCacheAndInvalidateDependencies(current, needsLayout); if (current->isSVGResourceContainer()) { // This will process the rest of the ancestors. toLayoutSVGResourceContainer(current)->removeAllClientsFromCache(); break; } current = current->parent(); } }
void RenderSVGResource::markForLayoutAndParentResourceInvalidation(RenderObject& object, bool needsLayout) { ASSERT(object.node()); if (needsLayout && !object.documentBeingDestroyed()) object.setNeedsLayout(); if (is<RenderElement>(object)) removeFromCacheAndInvalidateDependencies(downcast<RenderElement>(object), needsLayout); // Invalidate resources in ancestor chain, if needed. auto current = object.parent(); while (current) { removeFromCacheAndInvalidateDependencies(*current, needsLayout); if (is<RenderSVGResourceContainer>(*current)) { // This will process the rest of the ancestors. downcast<RenderSVGResourceContainer>(*current).removeAllClientsFromCache(); break; } current = current->parent(); } }