Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: Source/WebCore/loader/cache/CachedImage.cpp

Issue 12319101: Merge 142765 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1410/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org)
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 return errorOccurred() && m_shouldPaintBrokenImage; 157 return errorOccurred() && m_shouldPaintBrokenImage;
158 } 158 }
159 159
160 #if ENABLE(SVG) 160 #if ENABLE(SVG)
161 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject* re nderer) 161 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject* re nderer)
162 { 162 {
163 if (!m_image) 163 if (!m_image)
164 return 0; 164 return 0;
165 if (!m_image->isSVGImage()) 165 if (!m_image->isSVGImage())
166 return m_image.get(); 166 return m_image.get();
167 Image* useImage = m_svgImageCache->lookupOrCreateBitmapImageForRenderer(rend erer); 167 Image* useImage = m_svgImageCache->imageForRenderer(renderer);
168 if (useImage == Image::nullImage()) 168 if (useImage == Image::nullImage())
169 return m_image.get(); 169 return m_image.get();
170 return useImage; 170 return useImage;
171 } 171 }
172 #else 172 #else
173 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject*) 173 inline Image* CachedImage::lookupOrCreateImageForRenderer(const RenderObject*)
174 { 174 {
175 return m_image.get(); 175 return m_image.get();
176 } 176 }
177 #endif 177 #endif
(...skipping 30 matching lines...) Expand all
208 return lookupOrCreateImageForRenderer(renderer); 208 return lookupOrCreateImageForRenderer(renderer);
209 209
210 return Image::nullImage(); 210 return Image::nullImage();
211 } 211 }
212 212
213 void CachedImage::setContainerSizeForRenderer(const CachedImageClient* renderer, const IntSize& containerSize, float containerZoom) 213 void CachedImage::setContainerSizeForRenderer(const CachedImageClient* renderer, const IntSize& containerSize, float containerZoom)
214 { 214 {
215 if (containerSize.isEmpty()) 215 if (containerSize.isEmpty())
216 return; 216 return;
217 ASSERT(renderer); 217 ASSERT(renderer);
218 ASSERT(containerZoom);
218 if (!m_image) { 219 if (!m_image) {
219 m_pendingContainerSizeRequests.set(renderer, SizeAndZoom(containerSize, containerZoom)); 220 m_pendingContainerSizeRequests.set(renderer, SizeAndZoom(containerSize, containerZoom));
220 return; 221 return;
221 } 222 }
222 #if ENABLE(SVG) 223 #if ENABLE(SVG)
223 if (!m_image->isSVGImage()) { 224 if (!m_image->isSVGImage()) {
224 m_image->setContainerSize(containerSize); 225 m_image->setContainerSize(containerSize);
225 return; 226 return;
226 } 227 }
227 228
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 { 306 {
306 if (!m_loader || m_loader->reachedTerminalState()) 307 if (!m_loader || m_loader->reachedTerminalState())
307 return; 308 return;
308 309
309 m_shouldPaintBrokenImage = m_loader->frameLoader()->client()->shouldPaintBro kenImage(m_resourceRequest.url()); 310 m_shouldPaintBrokenImage = m_loader->frameLoader()->client()->shouldPaintBro kenImage(m_resourceRequest.url());
310 } 311 }
311 312
312 void CachedImage::clear() 313 void CachedImage::clear()
313 { 314 {
314 destroyDecodedData(); 315 destroyDecodedData();
315 #if ENABLE(SVG)
316 m_svgImageCache.clear();
317 #endif
318 clearImage(); 316 clearImage();
319 m_pendingContainerSizeRequests.clear(); 317 m_pendingContainerSizeRequests.clear();
320 setEncodedSize(0); 318 setEncodedSize(0);
321 } 319 }
322 320
323 inline void CachedImage::createImage() 321 inline void CachedImage::createImage()
324 { 322 {
325 // Create the image if it doesn't yet exist. 323 // Create the image if it doesn't yet exist.
326 if (m_image) 324 if (m_image)
327 return; 325 return;
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 { 475 {
478 if (!image || image != m_image) 476 if (!image || image != m_image)
479 return; 477 return;
480 notifyObservers(); 478 notifyObservers();
481 } 479 }
482 480
483 void CachedImage::changedInRect(const Image* image, const IntRect& rect) 481 void CachedImage::changedInRect(const Image* image, const IntRect& rect)
484 { 482 {
485 if (!image || image != m_image) 483 if (!image || image != m_image)
486 return; 484 return;
487 #if ENABLE(SVG)
488 // We have to update the cached ImageBuffers if the underlying content chang ed.
489 if (image->isSVGImage()) {
490 m_svgImageCache->imageContentChanged();
491 return;
492 }
493 #endif
494 notifyObservers(&rect); 485 notifyObservers(&rect);
495 } 486 }
496 487
497 void CachedImage::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 488 void CachedImage::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
498 { 489 {
499 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CachedResou rceImage); 490 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::CachedResou rceImage);
500 memoryObjectInfo->setClassName("CachedImage"); 491 memoryObjectInfo->setClassName("CachedImage");
501 CachedResource::reportMemoryUsage(memoryObjectInfo); 492 CachedResource::reportMemoryUsage(memoryObjectInfo);
502 info.addMember(m_pendingContainerSizeRequests, "pendingContainerSizeRequests "); 493 info.addMember(m_pendingContainerSizeRequests, "pendingContainerSizeRequests ");
503 info.addMember(m_image, "m_image"); 494 info.addMember(m_image, "m_image");
504 #if ENABLE(SVG) 495 #if ENABLE(SVG)
505 info.addMember(m_svgImageCache, "svgImageCache"); 496 info.addMember(m_svgImageCache, "svgImageCache");
506 #endif 497 #endif
507 } 498 }
508 499
509 bool CachedImage::currentFrameKnownToBeOpaque(const RenderObject* renderer) 500 bool CachedImage::currentFrameKnownToBeOpaque(const RenderObject* renderer)
510 { 501 {
511 Image* image = imageForRenderer(renderer); 502 Image* image = imageForRenderer(renderer);
512 if (image->isBitmapImage()) 503 if (image->isBitmapImage())
513 image->nativeImageForCurrentFrame(); // force decode 504 image->nativeImageForCurrentFrame(); // force decode
514 return image->currentFrameKnownToBeOpaque(); 505 return image->currentFrameKnownToBeOpaque();
515 } 506 }
516 507
517 } // namespace WebCore 508 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/WebCore.xcodeproj/project.pbxproj ('k') | Source/WebCore/svg/graphics/SVGImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698