OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
3 * Copyright (C) 2010 Google Inc. All rights reserved. | 3 * Copyright (C) 2010 Google Inc. All rights reserved. |
4 * Copyright (C) 2012 Samsung Electronics. All rights reserved. | 4 * Copyright (C) 2012 Samsung Electronics. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 RenderImage* image = toRenderImage(element().renderer()); | 129 RenderImage* image = toRenderImage(element().renderer()); |
130 if (!image) | 130 if (!image) |
131 return; | 131 return; |
132 image->updateAltText(); | 132 image->updateAltText(); |
133 } | 133 } |
134 | 134 |
135 void ImageInputType::srcAttributeChanged() | 135 void ImageInputType::srcAttributeChanged() |
136 { | 136 { |
137 if (!element().renderer()) | 137 if (!element().renderer()) |
138 return; | 138 return; |
139 element().imageLoader()->updateFromElement(ImageLoader::UpdateIgnorePrevious
Error); | 139 element().ensureImageLoader().updateFromElement(ImageLoader::UpdateIgnorePre
viousError); |
140 } | 140 } |
141 | 141 |
142 void ImageInputType::startResourceLoading() | 142 void ImageInputType::startResourceLoading() |
143 { | 143 { |
144 BaseButtonInputType::startResourceLoading(); | 144 BaseButtonInputType::startResourceLoading(); |
145 | 145 |
146 HTMLImageLoader* imageLoader = element().imageLoader(); | 146 HTMLImageLoader& imageLoader = element().ensureImageLoader(); |
147 imageLoader->updateFromElement(); | 147 imageLoader.updateFromElement(); |
148 | 148 |
149 RenderImage* renderer = toRenderImage(element().renderer()); | 149 RenderImage* renderer = toRenderImage(element().renderer()); |
150 if (!renderer) | 150 if (!renderer) |
151 return; | 151 return; |
152 | 152 |
153 RenderImageResource* imageResource = renderer->imageResource(); | 153 RenderImageResource* imageResource = renderer->imageResource(); |
154 imageResource->setImageResource(imageLoader->image()); | 154 imageResource->setImageResource(imageLoader.image()); |
155 | 155 |
156 // If we have no image at all because we have no src attribute, set | 156 // If we have no image at all because we have no src attribute, set |
157 // image height and width for the alt text instead. | 157 // image height and width for the alt text instead. |
158 if (!imageLoader->image() && !imageResource->cachedImage()) | 158 if (!imageLoader.image() && !imageResource->cachedImage()) |
159 renderer->setImageSizeForAltText(); | 159 renderer->setImageSizeForAltText(); |
160 } | 160 } |
161 | 161 |
162 bool ImageInputType::shouldRespectAlignAttribute() | 162 bool ImageInputType::shouldRespectAlignAttribute() |
163 { | 163 { |
164 return true; | 164 return true; |
165 } | 165 } |
166 | 166 |
167 bool ImageInputType::canBeSuccessfulSubmitButton() | 167 bool ImageInputType::canBeSuccessfulSubmitButton() |
168 { | 168 { |
(...skipping 14 matching lines...) Expand all Loading... |
183 { | 183 { |
184 RefPtrWillBeRawPtr<HTMLInputElement> element(this->element()); | 184 RefPtrWillBeRawPtr<HTMLInputElement> element(this->element()); |
185 | 185 |
186 if (!element->renderer()) { | 186 if (!element->renderer()) { |
187 // Check the attribute first for an explicit pixel value. | 187 // Check the attribute first for an explicit pixel value. |
188 unsigned height; | 188 unsigned height; |
189 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(heightAttr), h
eight)) | 189 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(heightAttr), h
eight)) |
190 return height; | 190 return height; |
191 | 191 |
192 // If the image is available, use its height. | 192 // If the image is available, use its height. |
193 if (element->hasImageLoader()) { | 193 HTMLImageLoader* imageLoader = element->imageLoader(); |
194 HTMLImageLoader* imageLoader = element->imageLoader(); | 194 if (imageLoader && imageLoader->image()) |
195 if (imageLoader->image()) | 195 return imageLoader->image()->imageSizeForRenderer(element->renderer(
), 1).height(); |
196 return imageLoader->image()->imageSizeForRenderer(element->rende
rer(), 1).height(); | |
197 } | |
198 } | 196 } |
199 | 197 |
200 element->document().updateLayout(); | 198 element->document().updateLayout(); |
201 | 199 |
202 RenderBox* box = element->renderBox(); | 200 RenderBox* box = element->renderBox(); |
203 return box ? adjustForAbsoluteZoom(box->contentHeight(), box) : 0; | 201 return box ? adjustForAbsoluteZoom(box->contentHeight(), box) : 0; |
204 } | 202 } |
205 | 203 |
206 unsigned ImageInputType::width() const | 204 unsigned ImageInputType::width() const |
207 { | 205 { |
208 RefPtrWillBeRawPtr<HTMLInputElement> element(this->element()); | 206 RefPtrWillBeRawPtr<HTMLInputElement> element(this->element()); |
209 | 207 |
210 if (!element->renderer()) { | 208 if (!element->renderer()) { |
211 // Check the attribute first for an explicit pixel value. | 209 // Check the attribute first for an explicit pixel value. |
212 unsigned width; | 210 unsigned width; |
213 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(widthAttr), wi
dth)) | 211 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(widthAttr), wi
dth)) |
214 return width; | 212 return width; |
215 | 213 |
216 // If the image is available, use its width. | 214 // If the image is available, use its width. |
217 if (element->hasImageLoader()) { | 215 HTMLImageLoader* imageLoader = element->imageLoader(); |
218 HTMLImageLoader* imageLoader = element->imageLoader(); | 216 if (imageLoader && imageLoader->image()) |
219 if (imageLoader->image()) | 217 return imageLoader->image()->imageSizeForRenderer(element->renderer(
), 1).width(); |
220 return imageLoader->image()->imageSizeForRenderer(element->rende
rer(), 1).width(); | |
221 } | |
222 } | 218 } |
223 | 219 |
224 element->document().updateLayout(); | 220 element->document().updateLayout(); |
225 | 221 |
226 RenderBox* box = element->renderBox(); | 222 RenderBox* box = element->renderBox(); |
227 return box ? adjustForAbsoluteZoom(box->contentWidth(), box) : 0; | 223 return box ? adjustForAbsoluteZoom(box->contentWidth(), box) : 0; |
228 } | 224 } |
229 | 225 |
230 bool ImageInputType::hasLegalLinkAttribute(const QualifiedName& name) const | 226 bool ImageInputType::hasLegalLinkAttribute(const QualifiedName& name) const |
231 { | 227 { |
232 return name == srcAttr || BaseButtonInputType::hasLegalLinkAttribute(name); | 228 return name == srcAttr || BaseButtonInputType::hasLegalLinkAttribute(name); |
233 } | 229 } |
234 | 230 |
235 const QualifiedName& ImageInputType::subResourceAttributeName() const | 231 const QualifiedName& ImageInputType::subResourceAttributeName() const |
236 { | 232 { |
237 return srcAttr; | 233 return srcAttr; |
238 } | 234 } |
239 | 235 |
240 } // namespace blink | 236 } // namespace blink |
OLD | NEW |