Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: Source/core/html/HTMLImageElement.cpp

Issue 25105004: Use srcset's resource pixel density to determine intrinsic size (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@cleantests
Patch Set: Fixed expected test results Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights reserv ed. 4 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Apple Inc. All rights reserv ed.
5 * Copyright (C) 2010 Google Inc. All rights reserved. 5 * Copyright (C) 2010 Google Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 29 matching lines...) Expand all
40 40
41 namespace WebCore { 41 namespace WebCore {
42 42
43 using namespace HTMLNames; 43 using namespace HTMLNames;
44 44
45 HTMLImageElement::HTMLImageElement(const QualifiedName& tagName, Document& docum ent, HTMLFormElement* form) 45 HTMLImageElement::HTMLImageElement(const QualifiedName& tagName, Document& docum ent, HTMLFormElement* form)
46 : HTMLElement(tagName, document) 46 : HTMLElement(tagName, document)
47 , m_imageLoader(this) 47 , m_imageLoader(this)
48 , m_form(form) 48 , m_form(form)
49 , m_compositeOperator(CompositeSourceOver) 49 , m_compositeOperator(CompositeSourceOver)
50 , m_intrinsicSizeFactor(1.0f)
50 { 51 {
51 ASSERT(hasTagName(imgTag)); 52 ASSERT(hasTagName(imgTag));
52 ScriptWrappable::init(this); 53 ScriptWrappable::init(this);
53 if (form) 54 if (form)
54 form->registerImgElement(this); 55 form->registerImgElement(this);
55 } 56 }
56 57
57 PassRefPtr<HTMLImageElement> HTMLImageElement::create(Document& document) 58 PassRefPtr<HTMLImageElement> HTMLImageElement::create(Document& document)
58 { 59 {
59 return adoptRef(new HTMLImageElement(imgTag, document)); 60 return adoptRef(new HTMLImageElement(imgTag, document));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 return m_bestFitImageURL.isNull() ? fastGetAttribute(srcAttr) : m_bestFitIma geURL; 115 return m_bestFitImageURL.isNull() ? fastGetAttribute(srcAttr) : m_bestFitIma geURL;
115 } 116 }
116 117
117 void HTMLImageElement::parseAttribute(const QualifiedName& name, const AtomicStr ing& value) 118 void HTMLImageElement::parseAttribute(const QualifiedName& name, const AtomicStr ing& value)
118 { 119 {
119 if (name == altAttr) { 120 if (name == altAttr) {
120 if (renderer() && renderer()->isImage()) 121 if (renderer() && renderer()->isImage())
121 toRenderImage(renderer())->updateAltText(); 122 toRenderImage(renderer())->updateAltText();
122 } else if (name == srcAttr || name == srcsetAttr) { 123 } else if (name == srcAttr || name == srcsetAttr) {
123 if (RuntimeEnabledFeatures::srcsetEnabled()) 124 if (RuntimeEnabledFeatures::srcsetEnabled())
124 m_bestFitImageURL = bestFitSourceForImageAttributes(document().devic ePixelRatio(), fastGetAttribute(srcAttr), fastGetAttribute(srcsetAttr)); 125 m_bestFitImageURL = bestFitSourceForImageAttributes(document().devic ePixelRatio(), fastGetAttribute(srcAttr), fastGetAttribute(srcsetAttr), m_intrin sicSizeFactor);
125 m_imageLoader.updateFromElementIgnoringPreviousError(); 126 m_imageLoader.updateFromElementIgnoringPreviousError();
126 } 127 }
127 else if (name == usemapAttr) 128 else if (name == usemapAttr)
128 setIsLink(!value.isNull()); 129 setIsLink(!value.isNull());
129 else if (name == onbeforeloadAttr) 130 else if (name == onbeforeloadAttr)
130 setAttributeEventListener(EventNames::beforeload, createAttributeEventLi stener(this, name, value)); 131 setAttributeEventListener(EventNames::beforeload, createAttributeEventLi stener(this, name, value));
131 else if (name == compositeAttr) { 132 else if (name == compositeAttr) {
132 // FIXME: images don't support blend modes in their compositing attribut e. 133 // FIXME: images don't support blend modes in their compositing attribut e.
133 BlendMode blendOp = BlendModeNormal; 134 BlendMode blendOp = BlendModeNormal;
134 if (!parseCompositeAndBlendOperator(value, m_compositeOperator, blendOp) ) 135 if (!parseCompositeAndBlendOperator(value, m_compositeOperator, blendOp) )
(...skipping 14 matching lines...) Expand all
149 return alt; 150 return alt;
150 } 151 }
151 152
152 RenderObject* HTMLImageElement::createRenderer(RenderStyle* style) 153 RenderObject* HTMLImageElement::createRenderer(RenderStyle* style)
153 { 154 {
154 if (style->hasContent()) 155 if (style->hasContent())
155 return RenderObject::createObject(this, style); 156 return RenderObject::createObject(this, style);
156 157
157 RenderImage* image = new RenderImage(this); 158 RenderImage* image = new RenderImage(this);
158 image->setImageResource(RenderImageResource::create()); 159 image->setImageResource(RenderImageResource::create());
160 image->setIntrinsicSizeFactor(m_intrinsicSizeFactor);
pdr. 2013/10/11 05:17:33 I'm not sure this will work for dynamic changes. F
Yoav Weiss 2013/10/11 07:22:32 Good catch! Will fix.
159 return image; 161 return image;
160 } 162 }
161 163
162 bool HTMLImageElement::canStartSelection() const 164 bool HTMLImageElement::canStartSelection() const
163 { 165 {
164 if (shadow()) 166 if (shadow())
165 return HTMLElement::canStartSelection(); 167 return HTMLElement::canStartSelection();
166 168
167 return false; 169 return false;
168 } 170 }
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 379
378 Image* HTMLImageElement::imageContents() 380 Image* HTMLImageElement::imageContents()
379 { 381 {
380 if (!m_imageLoader.imageComplete()) 382 if (!m_imageLoader.imageComplete())
381 return 0; 383 return 0;
382 384
383 return m_imageLoader.image()->image(); 385 return m_imageLoader.image()->image();
384 } 386 }
385 387
386 } 388 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698