OLD | NEW |
---|---|
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, 2009, 2010 Apple Inc. All rights reserv ed. | 4 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010 Apple Inc. All rights reserv ed. |
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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
142 void ImageLoader::updateFromElement() | 142 void ImageLoader::updateFromElement() |
143 { | 143 { |
144 // If we're not making renderers for the page, then don't load images. We d on't want to slow | 144 // If we're not making renderers for the page, then don't load images. We d on't want to slow |
145 // down the raw HTML parsing case by loading images we don't intend to displ ay. | 145 // down the raw HTML parsing case by loading images we don't intend to displ ay. |
146 Document* document = m_element->document(); | 146 Document* document = m_element->document(); |
147 if (!document->renderer()) | 147 if (!document->renderer()) |
148 return; | 148 return; |
149 | 149 |
150 AtomicString attr = m_element->imageSourceURL(); | 150 AtomicString attr = m_element->imageSourceURL(); |
151 | 151 |
152 if (attr == m_failedLoadURL) | 152 if (!m_failedLoadURL.isEmpty() && attr == m_failedLoadURL) |
153 return; | 153 return; |
154 | 154 |
155 // Do not load any image if the 'src' attribute is missing or if it is | 155 // Do not load any image if the 'src' attribute is missing or if it is |
156 // an empty string. | 156 // an empty string. |
157 CachedResourceHandle<CachedImage> newImage = 0; | 157 CachedResourceHandle<CachedImage> newImage = 0; |
158 if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) { | 158 if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) { |
159 FetchRequest request(ResourceRequest(document->completeURL(sourceURI(att r))), element()->localName()); | 159 FetchRequest request(ResourceRequest(document->completeURL(sourceURI(att r))), element()->localName()); |
160 | 160 |
161 String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossori ginAttr); | 161 String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossori ginAttr); |
162 if (!crossOriginMode.isNull()) { | 162 if (!crossOriginMode.isNull()) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
209 if (m_hasPendingErrorEvent && newImage) { | 209 if (m_hasPendingErrorEvent && newImage) { |
210 errorEventSender().cancelEvent(this); | 210 errorEventSender().cancelEvent(this); |
211 m_hasPendingErrorEvent = false; | 211 m_hasPendingErrorEvent = false; |
212 } | 212 } |
213 | 213 |
214 m_image = newImage; | 214 m_image = newImage; |
215 m_hasPendingBeforeLoadEvent = !m_element->document()->isImageDocument() && newImage; | 215 m_hasPendingBeforeLoadEvent = !m_element->document()->isImageDocument() && newImage; |
216 m_hasPendingLoadEvent = newImage; | 216 m_hasPendingLoadEvent = newImage; |
217 m_imageComplete = !newImage; | 217 m_imageComplete = !newImage; |
218 | 218 |
219 if (newImage) { | 219 if (m_image.get()) { |
Nate Chapin
2013/07/25 21:00:31
Aren't m_image and newImage the same thing here? W
| |
220 if (!m_element->document()->isImageDocument()) { | 220 if (!m_element->document()->isImageDocument()) { |
221 if (!m_element->document()->hasListenerType(Document::BEFORELOAD _LISTENER)) | 221 if (!m_element->document()->hasListenerType(Document::BEFORELOAD _LISTENER)) |
222 dispatchPendingBeforeLoadEvent(); | 222 dispatchPendingBeforeLoadEvent(); |
223 else | 223 else |
224 beforeLoadEventSender().dispatchEventSoon(this); | 224 beforeLoadEventSender().dispatchEventSoon(this); |
225 } else | 225 } else |
226 updateRenderer(); | 226 updateRenderer(); |
227 | 227 |
228 // If newImage is cached, addClient() will result in the load event | 228 // If newImage is cached, addClient() will result in the load event |
229 // being queued to fire. Ensure this happens after beforeload is | 229 // being queued to fire. Ensure this happens after beforeload is |
230 // dispatched. | 230 // dispatched. |
231 newImage->addClient(this); | 231 m_image->addClient(this); |
232 } else { | |
233 updateRenderer(); | |
232 } | 234 } |
235 | |
233 if (oldImage) | 236 if (oldImage) |
234 oldImage->removeClient(this); | 237 oldImage->removeClient(this); |
235 } | 238 } |
236 | 239 |
237 if (RenderImageResource* imageResource = renderImageResource()) | 240 if (RenderImageResource* imageResource = renderImageResource()) |
238 imageResource->resetAnimation(); | 241 imageResource->resetAnimation(); |
239 | 242 |
240 // Only consider updating the protection ref-count of the Element immediatel y before returning | 243 // Only consider updating the protection ref-count of the Element immediatel y before returning |
241 // from this function as doing so might result in the destruction of this Im ageLoader. | 244 // from this function as doing so might result in the destruction of this Im ageLoader. |
242 updatedHasPendingEvent(); | 245 updatedHasPendingEvent(); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
443 clearFailedLoadURL(); | 446 clearFailedLoadURL(); |
444 setImage(0); | 447 setImage(0); |
445 } | 448 } |
446 | 449 |
447 inline void ImageLoader::clearFailedLoadURL() | 450 inline void ImageLoader::clearFailedLoadURL() |
448 { | 451 { |
449 m_failedLoadURL = AtomicString(); | 452 m_failedLoadURL = AtomicString(); |
450 } | 453 } |
451 | 454 |
452 } | 455 } |
OLD | NEW |