static RefPtr<StyleImage> loadPendingImage(Document& document, const StyleImage& image, const Element* element, LoadPolicy loadPolicy = LoadPolicy::Normal) { auto& pendingImage = downcast<StylePendingImage>(image); ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions(); options.setContentSecurityPolicyImposition(element && element->isInUserAgentShadowTree() ? ContentSecurityPolicyImposition::SkipPolicyCheck : ContentSecurityPolicyImposition::DoPolicyCheck); // FIXME: Why does shape-outside have different policy than other properties? if (loadPolicy == LoadPolicy::ShapeOutside) { options.mode = FetchOptions::Mode::Cors; options.setAllowCredentials(DoNotAllowStoredCredentials); } if (auto imageValue = pendingImage.cssImageValue()) return imageValue->cachedImage(document.cachedResourceLoader(), options); if (auto imageGeneratorValue = pendingImage.cssImageGeneratorValue()) { imageGeneratorValue->loadSubimages(document.cachedResourceLoader(), options); return StyleGeneratedImage::create(*imageGeneratorValue); } if (auto cursorImageValue = pendingImage.cssCursorImageValue()) return cursorImageValue->cachedImage(document.cachedResourceLoader(), options); #if ENABLE(CSS_IMAGE_SET) if (auto imageSetValue = pendingImage.cssImageSetValue()) return imageSetValue->cachedImageSet(document.cachedResourceLoader(), options); #endif return nullptr; }