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))); } } }
void ElementStyleResources::loadPendingSVGDocuments(ComputedStyle* computedStyle) { if (!computedStyle->hasFilter() || m_pendingSVGDocuments.isEmpty()) return; FilterOperations::FilterOperationVector& filterOperations = computedStyle->mutableFilter().operations(); for (unsigned i = 0; i < filterOperations.size(); ++i) { RefPtrWillBeRawPtr<FilterOperation> filterOperation = filterOperations.at(i); if (filterOperation->type() == FilterOperation::REFERENCE) { ReferenceFilterOperation* referenceFilter = toReferenceFilterOperation(filterOperation.get()); CSSSVGDocumentValue* value = m_pendingSVGDocuments.get(referenceFilter); if (!value) continue; DocumentResource* resource = value->load(m_document); if (!resource) continue; // Stash the DocumentResource on the reference filter. ReferenceFilterBuilder::setDocumentResourceReference(referenceFilter, adoptPtr(new DocumentResourceReference(resource))); } } }