| Index: Source/core/html/HTMLImageElement.cpp | 
| diff --git a/Source/core/html/HTMLImageElement.cpp b/Source/core/html/HTMLImageElement.cpp | 
| index a2ee16b6e691f0e11ccd83c4abb17a58ae05c37c..6d15b5bfb7b3f4a01e93be6e07a907d6cd1887bc 100644 | 
| --- a/Source/core/html/HTMLImageElement.cpp | 
| +++ b/Source/core/html/HTMLImageElement.cpp | 
| @@ -51,7 +51,6 @@ HTMLImageElement::HTMLImageElement(Document& document, HTMLFormElement* form) | 
| , m_compositeOperator(CompositeSourceOver) | 
| , m_imageDevicePixelRatio(1.0f) | 
| , m_formWasSetByParser(false) | 
| -    , m_effectiveSize(0) | 
| { | 
| ScriptWrappable::init(this); | 
| if (form && form->inDocument()) { | 
| @@ -156,18 +155,19 @@ void HTMLImageElement::parseAttribute(const QualifiedName& name, const AtomicStr | 
| if (name == altAttr) { | 
| if (renderer() && renderer()->isImage()) | 
| toRenderImage(renderer())->updateAltText(); | 
| -    } else if (name == srcAttr || name == srcsetAttr) { | 
| -        int effectiveSize = -1; // FIXME - hook up the real value from `sizes` | 
| +    } else if (name == srcAttr || name == srcsetAttr || name == sizesAttr) { | 
| +        int effectiveSize = 0; | 
| +        if (RuntimeEnabledFeatures::pictureSizesEnabled()) | 
| +            effectiveSize = SizesAttributeParser::findEffectiveSize(fastGetAttribute(sizesAttr), MediaValuesCached::create(document())); | 
| ImageCandidate candidate = bestFitSourceForImageAttributes(document().devicePixelRatio(), effectiveSize, fastGetAttribute(srcAttr), fastGetAttribute(srcsetAttr)); | 
| m_bestFitImageURL = candidate.toAtomicString(); | 
| float candidateScaleFactor = candidate.scaleFactor(); | 
| +        // FIXME: Make this ">0" part match the spec, once it settles. | 
| if (candidateScaleFactor > 0) | 
| m_imageDevicePixelRatio = 1 / candidateScaleFactor; | 
| if (renderer() && renderer()->isImage()) | 
| toRenderImage(renderer())->setImageDevicePixelRatio(m_imageDevicePixelRatio); | 
| m_imageLoader.updateFromElementIgnoringPreviousError(); | 
| -    } else if (RuntimeEnabledFeatures::pictureSizesEnabled() && name == sizesAttr) { | 
| -        m_effectiveSize = SizesAttributeParser::findEffectiveSize(value, MediaValuesCached::create(document())); | 
| } else if (name == usemapAttr) { | 
| setIsLink(!value.isNull()); | 
| } else if (name == compositeAttr) { | 
| @@ -313,6 +313,11 @@ int HTMLImageElement::naturalHeight() const | 
| return m_imageLoader.image()->imageSizeForRenderer(renderer(), 1.0f).height(); | 
| } | 
|  | 
| +const AtomicString& HTMLImageElement::currentSrc() const | 
| +{ | 
| +    return m_bestFitImageURL; | 
| +} | 
| + | 
| bool HTMLImageElement::isURLAttribute(const Attribute& attribute) const | 
| { | 
| return attribute.name() == srcAttr | 
|  |