void StyleResourceLoader::loadPendingSVGDocuments(RenderStyle* renderStyle, const ElementStyleResources& elementStyleResources) { if (!renderStyle->hasFilter() || elementStyleResources.pendingSVGDocuments().isEmpty()) return; Vector<RefPtr<FilterOperation> >& filterOperations = renderStyle->mutableFilter().operations(); for (unsigned i = 0; i < filterOperations.size(); ++i) { RefPtr<FilterOperation> filterOperation = filterOperations.at(i); if (filterOperation->getOperationType() == FilterOperation::REFERENCE) { ReferenceFilterOperation* referenceFilter = static_cast<ReferenceFilterOperation*>(filterOperation.get()); CSSSVGDocumentValue* value = elementStyleResources.pendingSVGDocuments().get(referenceFilter); if (!value) continue; DocumentResource* resource = value->load(m_fetcher); if (!resource) continue; // Stash the DocumentResource on the reference filter. referenceFilter->setDocumentResourceReference(adoptPtr(new DocumentResourceReference(resource))); } } }