Chromium Code Reviews| 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 |