// http://picture.responsiveimages.org/#update-source-set ImageCandidate HTMLImageElement::findBestFitImageFromPictureParent() { ASSERT(isMainThread()); Node* parent = parentNode(); if (!parent || !isHTMLPictureElement(*parent)) return ImageCandidate(); for (Node* child = parent->firstChild(); child; child = child->nextSibling()) { if (child == this) return ImageCandidate(); if (!isHTMLSourceElement(*child)) continue; HTMLSourceElement* source = toHTMLSourceElement(child); if (!source->fastGetAttribute(srcAttr).isNull()) UseCounter::countDeprecation(document(), UseCounter::PictureSourceSrc); String srcset = source->fastGetAttribute(srcsetAttr); if (srcset.isEmpty()) continue; String type = source->fastGetAttribute(typeAttr); if (!type.isEmpty() && !supportedImageType(type)) continue; if (!source->mediaQueryMatches()) continue; ImageCandidate candidate = bestFitSourceForSrcsetAttribute(document().devicePixelRatio(), sourceSize(*source), source->fastGetAttribute(srcsetAttr), &document()); if (candidate.isEmpty()) continue; return candidate; } return ImageCandidate(); }
// http://picture.responsiveimages.org/#update-source-set ImageCandidate HTMLImageElement::findBestFitImageFromPictureParent() { ASSERT(isMainThread()); Node* parent = parentNode(); if (!parent || !isHTMLPictureElement(*parent)) return ImageCandidate(); for (Node* child = parent->firstChild(); child; child = child->nextSibling()) { if (child == this) return ImageCandidate(); if (!isHTMLSourceElement(*child)) continue; HTMLSourceElement* source = toHTMLSourceElement(child); String srcset = source->fastGetAttribute(srcsetAttr); if (srcset.isEmpty()) continue; String type = source->fastGetAttribute(typeAttr); if (!type.isEmpty() && !supportedImageType(type)) continue; String media = source->fastGetAttribute(mediaAttr); if (!media.isEmpty()) { RefPtrWillBeRawPtr<MediaQuerySet> mediaQueries = MediaQuerySet::create(media); if (!document().mediaQueryMatcher().evaluate(mediaQueries.get())) continue; } unsigned effectiveSize = SizesAttributeParser::findEffectiveSize(source->fastGetAttribute(sizesAttr), MediaValuesCached::create(document())); ImageCandidate candidate = bestFitSourceForSrcsetAttribute(document().devicePixelRatio(), effectiveSize, source->fastGetAttribute(srcsetAttr)); if (candidate.isEmpty()) continue; return candidate; } return ImageCandidate(); }