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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 RenderImage* image = toRenderImage(element()->renderer()); | 112 RenderImage* image = toRenderImage(element()->renderer()); |
113 if (!image) | 113 if (!image) |
114 return; | 114 return; |
115 image->updateAltText(); | 115 image->updateAltText(); |
116 } | 116 } |
117 | 117 |
118 void ImageInputType::srcAttributeChanged() | 118 void ImageInputType::srcAttributeChanged() |
119 { | 119 { |
120 if (!element()->renderer()) | 120 if (!element()->renderer()) |
121 return; | 121 return; |
122 if (!m_imageLoader) | 122 element()->imageLoader()->updateFromElementIgnoringPreviousError(); |
123 m_imageLoader = adoptPtr(new HTMLImageLoader(element())); | |
124 m_imageLoader->updateFromElementIgnoringPreviousError(); | |
125 } | 123 } |
126 | 124 |
127 void ImageInputType::attach() | 125 void ImageInputType::attach() |
128 { | 126 { |
129 BaseButtonInputType::attach(); | 127 BaseButtonInputType::attach(); |
130 | 128 |
131 if (!m_imageLoader) | 129 HTMLImageLoader* imageLoader = element()->imageLoader(); |
132 m_imageLoader = adoptPtr(new HTMLImageLoader(element())); | 130 imageLoader->updateFromElement(); |
133 m_imageLoader->updateFromElement(); | |
134 | 131 |
135 RenderImage* renderer = toRenderImage(element()->renderer()); | 132 RenderImage* renderer = toRenderImage(element()->renderer()); |
136 if (!renderer) | 133 if (!renderer) |
137 return; | 134 return; |
138 | 135 |
139 if (m_imageLoader->hasPendingBeforeLoadEvent()) | 136 if (imageLoader->hasPendingBeforeLoadEvent()) |
140 return; | 137 return; |
141 | 138 |
142 RenderImageResource* imageResource = renderer->imageResource(); | 139 RenderImageResource* imageResource = renderer->imageResource(); |
143 imageResource->setCachedImage(m_imageLoader->image()); | 140 imageResource->setCachedImage(imageLoader->image()); |
144 | 141 |
145 // If we have no image at all because we have no src attribute, set | 142 // If we have no image at all because we have no src attribute, set |
146 // image height and width for the alt text instead. | 143 // image height and width for the alt text instead. |
147 if (!m_imageLoader->image() && !imageResource->cachedImage()) | 144 if (!imageLoader->image() && !imageResource->cachedImage()) |
148 renderer->setImageSizeForAltText(); | 145 renderer->setImageSizeForAltText(); |
149 } | 146 } |
150 | 147 |
151 void ImageInputType::willMoveToNewOwnerDocument() | |
152 { | |
153 BaseButtonInputType::willMoveToNewOwnerDocument(); | |
154 if (m_imageLoader) | |
155 m_imageLoader->elementDidMoveToNewDocument(); | |
156 } | |
157 | |
158 bool ImageInputType::shouldRespectAlignAttribute() | 148 bool ImageInputType::shouldRespectAlignAttribute() |
159 { | 149 { |
160 return true; | 150 return true; |
161 } | 151 } |
162 | 152 |
163 bool ImageInputType::canBeSuccessfulSubmitButton() | 153 bool ImageInputType::canBeSuccessfulSubmitButton() |
164 { | 154 { |
165 return true; | 155 return true; |
166 } | 156 } |
167 | 157 |
(...skipping 16 matching lines...) Expand all Loading... |
184 { | 174 { |
185 RefPtr<HTMLInputElement> element = this->element(); | 175 RefPtr<HTMLInputElement> element = this->element(); |
186 | 176 |
187 if (!element->renderer()) { | 177 if (!element->renderer()) { |
188 // Check the attribute first for an explicit pixel value. | 178 // Check the attribute first for an explicit pixel value. |
189 unsigned height; | 179 unsigned height; |
190 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(heightAttr), h
eight)) | 180 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(heightAttr), h
eight)) |
191 return height; | 181 return height; |
192 | 182 |
193 // If the image is available, use its height. | 183 // If the image is available, use its height. |
194 if (m_imageLoader && m_imageLoader->image()) | 184 if (element->hasImageLoader()) { |
195 return m_imageLoader->image()->imageSizeForRenderer(element->rendere
r(), 1).height(); | 185 HTMLImageLoader* imageLoader = element->imageLoader(); |
| 186 if (imageLoader->image()) |
| 187 return imageLoader->image()->imageSizeForRenderer(element->rende
rer(), 1).height(); |
| 188 } |
196 } | 189 } |
197 | 190 |
198 element->document()->updateLayout(); | 191 element->document()->updateLayout(); |
199 | 192 |
200 RenderBox* box = element->renderBox(); | 193 RenderBox* box = element->renderBox(); |
201 return box ? adjustForAbsoluteZoom(box->contentHeight(), box) : 0; | 194 return box ? adjustForAbsoluteZoom(box->contentHeight(), box) : 0; |
202 } | 195 } |
203 | 196 |
204 unsigned ImageInputType::width() const | 197 unsigned ImageInputType::width() const |
205 { | 198 { |
206 RefPtr<HTMLInputElement> element = this->element(); | 199 RefPtr<HTMLInputElement> element = this->element(); |
207 | 200 |
208 if (!element->renderer()) { | 201 if (!element->renderer()) { |
209 // Check the attribute first for an explicit pixel value. | 202 // Check the attribute first for an explicit pixel value. |
210 unsigned width; | 203 unsigned width; |
211 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(widthAttr), wi
dth)) | 204 if (parseHTMLNonNegativeInteger(element->fastGetAttribute(widthAttr), wi
dth)) |
212 return width; | 205 return width; |
213 | 206 |
214 // If the image is available, use its width. | 207 // If the image is available, use its width. |
215 if (m_imageLoader && m_imageLoader->image()) | 208 if (element->hasImageLoader()) { |
216 return m_imageLoader->image()->imageSizeForRenderer(element->rendere
r(), 1).width(); | 209 HTMLImageLoader* imageLoader = element->imageLoader(); |
| 210 if (imageLoader->image()) |
| 211 return imageLoader->image()->imageSizeForRenderer(element->rende
rer(), 1).width(); |
| 212 } |
217 } | 213 } |
218 | 214 |
219 element->document()->updateLayout(); | 215 element->document()->updateLayout(); |
220 | 216 |
221 RenderBox* box = element->renderBox(); | 217 RenderBox* box = element->renderBox(); |
222 return box ? adjustForAbsoluteZoom(box->contentWidth(), box) : 0; | 218 return box ? adjustForAbsoluteZoom(box->contentWidth(), box) : 0; |
223 } | 219 } |
224 | 220 |
225 } // namespace WebCore | 221 } // namespace WebCore |
OLD | NEW |