void SVGResourcesCache::resourceDestroyed(RenderSVGResourceContainer& resource) { SVGResourcesCache* cache = resourcesCacheFromRenderObject(resource); // The resource itself may have clients, that need to be notified. cache->removeResourcesFromRenderer(resource); for (auto it = cache->m_cache.begin(), end = cache->m_cache.end(); it != end; ++it) { it->value->resourceDestroyed(resource); // Mark users of destroyed resources as pending resolution based on the id of the old resource. Element& resourceElement = resource.element(); Element* clientElement = toElement(it->key->node()); SVGDocumentExtensions* extensions = clientElement->document().accessSVGExtensions(); extensions->addPendingResource(resourceElement.getIdAttribute(), clientElement); } }
static void writeSVGPaintingResource(TextStream& ts, RenderSVGResource* resource) { if (resource->resourceType() == SolidColorResourceType) { ts << "[type=SOLID] [color=" << static_cast<RenderSVGResourceSolidColor*>(resource)->color() << "]"; return; } // All other resources derive from RenderSVGResourceContainer RenderSVGResourceContainer* container = static_cast<RenderSVGResourceContainer*>(resource); SVGElement& element = container->element(); if (resource->resourceType() == PatternResourceType) ts << "[type=PATTERN]"; else if (resource->resourceType() == LinearGradientResourceType) ts << "[type=LINEAR-GRADIENT]"; else if (resource->resourceType() == RadialGradientResourceType) ts << "[type=RADIAL-GRADIENT]"; ts << " [id=\"" << element.getIdAttribute() << "\"]"; }