| 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 17 matching lines...) Expand all Loading... |
| 28 #include "core/dom/IncrementLoadEventDelayCount.h" | 28 #include "core/dom/IncrementLoadEventDelayCount.h" |
| 29 #include "core/dom/Microtask.h" | 29 #include "core/dom/Microtask.h" |
| 30 #include "core/events/Event.h" | 30 #include "core/events/Event.h" |
| 31 #include "core/events/EventSender.h" | 31 #include "core/events/EventSender.h" |
| 32 #include "core/fetch/FetchRequest.h" | 32 #include "core/fetch/FetchRequest.h" |
| 33 #include "core/fetch/MemoryCache.h" | 33 #include "core/fetch/MemoryCache.h" |
| 34 #include "core/fetch/ResourceFetcher.h" | 34 #include "core/fetch/ResourceFetcher.h" |
| 35 #include "core/frame/LocalFrame.h" | 35 #include "core/frame/LocalFrame.h" |
| 36 #include "core/html/HTMLImageElement.h" | 36 #include "core/html/HTMLImageElement.h" |
| 37 #include "core/html/parser/HTMLParserIdioms.h" | 37 #include "core/html/parser/HTMLParserIdioms.h" |
| 38 #include "core/layout/LayoutImage.h" |
| 38 #include "core/layout/LayoutVideo.h" | 39 #include "core/layout/LayoutVideo.h" |
| 39 #include "core/rendering/RenderImage.h" | |
| 40 #include "core/rendering/svg/RenderSVGImage.h" | 40 #include "core/rendering/svg/RenderSVGImage.h" |
| 41 #include "platform/Logging.h" | 41 #include "platform/Logging.h" |
| 42 #include "platform/weborigin/SecurityOrigin.h" | 42 #include "platform/weborigin/SecurityOrigin.h" |
| 43 #include "public/platform/WebURLRequest.h" | 43 #include "public/platform/WebURLRequest.h" |
| 44 | 44 |
| 45 namespace blink { | 45 namespace blink { |
| 46 | 46 |
| 47 static ImageEventSender& loadEventSender() | 47 static ImageEventSender& loadEventSender() |
| 48 { | 48 { |
| 49 DEFINE_STATIC_LOCAL(ImageEventSender, sender, (EventTypeNames::load)); | 49 DEFINE_STATIC_LOCAL(ImageEventSender, sender, (EventTypeNames::load)); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 errorEventSender().cancelEvent(this); | 173 errorEventSender().cancelEvent(this); |
| 174 m_hasPendingErrorEvent = false; | 174 m_hasPendingErrorEvent = false; |
| 175 } | 175 } |
| 176 m_imageComplete = true; | 176 m_imageComplete = true; |
| 177 if (newImage) | 177 if (newImage) |
| 178 newImage->addClient(this); | 178 newImage->addClient(this); |
| 179 if (oldImage) | 179 if (oldImage) |
| 180 oldImage->removeClient(this); | 180 oldImage->removeClient(this); |
| 181 } | 181 } |
| 182 | 182 |
| 183 if (RenderImageResource* imageResource = renderImageResource()) | 183 if (LayoutImageResource* imageResource = layoutImageResource()) |
| 184 imageResource->resetAnimation(); | 184 imageResource->resetAnimation(); |
| 185 } | 185 } |
| 186 | 186 |
| 187 static void configureRequest(FetchRequest& request, ImageLoader::BypassMainWorld
Behavior bypassBehavior, Element& element) | 187 static void configureRequest(FetchRequest& request, ImageLoader::BypassMainWorld
Behavior bypassBehavior, Element& element) |
| 188 { | 188 { |
| 189 if (bypassBehavior == ImageLoader::BypassMainWorldCSP) | 189 if (bypassBehavior == ImageLoader::BypassMainWorldCSP) |
| 190 request.setContentSecurityCheck(DoNotCheckContentSecurityPolicy); | 190 request.setContentSecurityCheck(DoNotCheckContentSecurityPolicy); |
| 191 | 191 |
| 192 AtomicString crossOriginMode = element.fastGetAttribute(HTMLNames::crossorig
inAttr); | 192 AtomicString crossOriginMode = element.fastGetAttribute(HTMLNames::crossorig
inAttr); |
| 193 if (!crossOriginMode.isNull()) | 193 if (!crossOriginMode.isNull()) |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 | 307 |
| 308 updateRenderer(); | 308 updateRenderer(); |
| 309 // If newImage exists and is cached, addClient() will result in the load
event | 309 // If newImage exists and is cached, addClient() will result in the load
event |
| 310 // being queued to fire. Ensure this happens after beforeload is dispatc
hed. | 310 // being queued to fire. Ensure this happens after beforeload is dispatc
hed. |
| 311 if (newImage) | 311 if (newImage) |
| 312 newImage->addClient(this); | 312 newImage->addClient(this); |
| 313 | 313 |
| 314 if (oldImage) | 314 if (oldImage) |
| 315 oldImage->removeClient(this); | 315 oldImage->removeClient(this); |
| 316 } else if (updateBehavior == UpdateSizeChanged && m_element->renderer() && m
_element->renderer()->isImage()) { | 316 } else if (updateBehavior == UpdateSizeChanged && m_element->renderer() && m
_element->renderer()->isImage()) { |
| 317 toRenderImage(m_element->renderer())->intrinsicSizeChanged(); | 317 toLayoutImage(m_element->renderer())->intrinsicSizeChanged(); |
| 318 } | 318 } |
| 319 | 319 |
| 320 if (RenderImageResource* imageResource = renderImageResource()) | 320 if (LayoutImageResource* imageResource = layoutImageResource()) |
| 321 imageResource->resetAnimation(); | 321 imageResource->resetAnimation(); |
| 322 | 322 |
| 323 // Only consider updating the protection ref-count of the Element immediatel
y before returning | 323 // Only consider updating the protection ref-count of the Element immediatel
y before returning |
| 324 // from this function as doing so might result in the destruction of this Im
ageLoader. | 324 // from this function as doing so might result in the destruction of this Im
ageLoader. |
| 325 updatedHasPendingEvent(); | 325 updatedHasPendingEvent(); |
| 326 } | 326 } |
| 327 | 327 |
| 328 void ImageLoader::updateFromElement(UpdateFromElementBehavior updateBehavior) | 328 void ImageLoader::updateFromElement(UpdateFromElementBehavior updateBehavior) |
| 329 { | 329 { |
| 330 AtomicString imageSourceURL = m_element->imageSourceURL(); | 330 AtomicString imageSourceURL = m_element->imageSourceURL(); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 if (resource->wasCanceled()) { | 419 if (resource->wasCanceled()) { |
| 420 m_hasPendingLoadEvent = false; | 420 m_hasPendingLoadEvent = false; |
| 421 // Only consider updating the protection ref-count of the Element immedi
ately before returning | 421 // Only consider updating the protection ref-count of the Element immedi
ately before returning |
| 422 // from this function as doing so might result in the destruction of thi
s ImageLoader. | 422 // from this function as doing so might result in the destruction of thi
s ImageLoader. |
| 423 updatedHasPendingEvent(); | 423 updatedHasPendingEvent(); |
| 424 return; | 424 return; |
| 425 } | 425 } |
| 426 loadEventSender().dispatchEventSoon(this); | 426 loadEventSender().dispatchEventSoon(this); |
| 427 } | 427 } |
| 428 | 428 |
| 429 RenderImageResource* ImageLoader::renderImageResource() | 429 LayoutImageResource* ImageLoader::layoutImageResource() |
| 430 { | 430 { |
| 431 LayoutObject* renderer = m_element->renderer(); | 431 LayoutObject* renderer = m_element->renderer(); |
| 432 | 432 |
| 433 if (!renderer) | 433 if (!renderer) |
| 434 return 0; | 434 return 0; |
| 435 | 435 |
| 436 // We don't return style generated image because it doesn't belong to the Im
ageLoader. | 436 // We don't return style generated image because it doesn't belong to the Im
ageLoader. |
| 437 // See <https://bugs.webkit.org/show_bug.cgi?id=42840> | 437 // See <https://bugs.webkit.org/show_bug.cgi?id=42840> |
| 438 if (renderer->isImage() && !static_cast<RenderImage*>(renderer)->isGenerated
Content()) | 438 if (renderer->isImage() && !static_cast<LayoutImage*>(renderer)->isGenerated
Content()) |
| 439 return toRenderImage(renderer)->imageResource(); | 439 return toLayoutImage(renderer)->imageResource(); |
| 440 | 440 |
| 441 if (renderer->isSVGImage()) | 441 if (renderer->isSVGImage()) |
| 442 return toRenderSVGImage(renderer)->imageResource(); | 442 return toRenderSVGImage(renderer)->imageResource(); |
| 443 | 443 |
| 444 if (renderer->isVideo()) | 444 if (renderer->isVideo()) |
| 445 return toLayoutVideo(renderer)->imageResource(); | 445 return toLayoutVideo(renderer)->imageResource(); |
| 446 | 446 |
| 447 return 0; | 447 return 0; |
| 448 } | 448 } |
| 449 | 449 |
| 450 void ImageLoader::updateRenderer() | 450 void ImageLoader::updateRenderer() |
| 451 { | 451 { |
| 452 RenderImageResource* imageResource = renderImageResource(); | 452 LayoutImageResource* imageResource = layoutImageResource(); |
| 453 | 453 |
| 454 if (!imageResource) | 454 if (!imageResource) |
| 455 return; | 455 return; |
| 456 | 456 |
| 457 // Only update the renderer if it doesn't have an image or if what we have | 457 // Only update the renderer if it doesn't have an image or if what we have |
| 458 // is a complete image. This prevents flickering in the case where a dynami
c | 458 // is a complete image. This prevents flickering in the case where a dynami
c |
| 459 // change is happening between two images. | 459 // change is happening between two images. |
| 460 ImageResource* cachedImage = imageResource->cachedImage(); | 460 ImageResource* cachedImage = imageResource->cachedImage(); |
| 461 if (m_image != cachedImage && (m_imageComplete || !cachedImage)) | 461 if (m_image != cachedImage && (m_imageComplete || !cachedImage)) |
| 462 imageResource->setImageResource(m_image.get()); | 462 imageResource->setImageResource(m_image.get()); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 #endif | 589 #endif |
| 590 } | 590 } |
| 591 | 591 |
| 592 #if ENABLE(OILPAN) | 592 #if ENABLE(OILPAN) |
| 593 ImageLoader::ImageLoaderClientRemover::~ImageLoaderClientRemover() | 593 ImageLoader::ImageLoaderClientRemover::~ImageLoaderClientRemover() |
| 594 { | 594 { |
| 595 m_loader.willRemoveClient(m_client); | 595 m_loader.willRemoveClient(m_client); |
| 596 } | 596 } |
| 597 #endif | 597 #endif |
| 598 } | 598 } |
| OLD | NEW |