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

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

Issue 10441007: Merge 117376 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 7 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
« no previous file with comments | « Source/WebCore/loader/cache/CachedImage.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 , m_image(image) 68 , m_image(image)
69 , m_decodedDataDeletionTimer(this, &CachedImage::decodedDataDeletionTimerFir ed) 69 , m_decodedDataDeletionTimer(this, &CachedImage::decodedDataDeletionTimerFir ed)
70 , m_shouldPaintBrokenImage(true) 70 , m_shouldPaintBrokenImage(true)
71 { 71 {
72 setStatus(Cached); 72 setStatus(Cached);
73 setLoading(false); 73 setLoading(false);
74 } 74 }
75 75
76 CachedImage::~CachedImage() 76 CachedImage::~CachedImage()
77 { 77 {
78 clearImage();
78 } 79 }
79 80
80 void CachedImage::decodedDataDeletionTimerFired(Timer<CachedImage>*) 81 void CachedImage::decodedDataDeletionTimerFired(Timer<CachedImage>*)
81 { 82 {
82 ASSERT(!hasClients()); 83 ASSERT(!hasClients());
83 destroyDecodedData(); 84 destroyDecodedData();
84 } 85 }
85 86
86 void CachedImage::load(CachedResourceLoader* cachedResourceLoader, const Resourc eLoaderOptions& options) 87 void CachedImage::load(CachedResourceLoader* cachedResourceLoader, const Resourc eLoaderOptions& options)
87 { 88 {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 296
296 m_shouldPaintBrokenImage = m_loader->frameLoader()->client()->shouldPaintBro kenImage(m_resourceRequest.url()); 297 m_shouldPaintBrokenImage = m_loader->frameLoader()->client()->shouldPaintBro kenImage(m_resourceRequest.url());
297 } 298 }
298 299
299 void CachedImage::clear() 300 void CachedImage::clear()
300 { 301 {
301 destroyDecodedData(); 302 destroyDecodedData();
302 #if ENABLE(SVG) 303 #if ENABLE(SVG)
303 m_svgImageCache.clear(); 304 m_svgImageCache.clear();
304 #endif 305 #endif
305 m_image = 0; 306 clearImage();
306 setEncodedSize(0); 307 setEncodedSize(0);
307 } 308 }
308 309
309 inline void CachedImage::createImage() 310 inline void CachedImage::createImage()
310 { 311 {
311 // Create the image if it doesn't yet exist. 312 // Create the image if it doesn't yet exist.
312 if (m_image) 313 if (m_image)
313 return; 314 return;
314 #if USE(CG) && !USE(WEBKIT_IMAGE_DECODERS) 315 #if USE(CG) && !USE(WEBKIT_IMAGE_DECODERS)
315 if (m_response.mimeType() == "application/pdf") { 316 if (m_response.mimeType() == "application/pdf") {
316 m_image = PDFDocumentImage::create(); 317 m_image = PDFDocumentImage::create();
317 return; 318 return;
318 } 319 }
319 #endif 320 #endif
320 #if ENABLE(SVG) 321 #if ENABLE(SVG)
321 if (m_response.mimeType() == "image/svg+xml") { 322 if (m_response.mimeType() == "image/svg+xml") {
322 RefPtr<SVGImage> svgImage = SVGImage::create(this); 323 RefPtr<SVGImage> svgImage = SVGImage::create(this);
323 m_svgImageCache = SVGImageCache::create(svgImage.get()); 324 m_svgImageCache = SVGImageCache::create(svgImage.get());
324 m_image = svgImage.release(); 325 m_image = svgImage.release();
325 return; 326 return;
326 } 327 }
327 #endif 328 #endif
328 m_image = BitmapImage::create(this); 329 m_image = BitmapImage::create(this);
329 } 330 }
330 331
332 inline void CachedImage::clearImage()
333 {
334 // If our Image has an observer, it's always us so we need to clear the back pointer
335 // before dropping our reference.
336 if (m_image)
337 m_image->setImageObserver(0);
338 m_image.clear();
339 }
340
331 size_t CachedImage::maximumDecodedImageSize() 341 size_t CachedImage::maximumDecodedImageSize()
332 { 342 {
333 if (!m_loader || m_loader->reachedTerminalState()) 343 if (!m_loader || m_loader->reachedTerminalState())
334 return 0; 344 return 0;
335 Settings* settings = m_loader->frameLoader()->frame()->settings(); 345 Settings* settings = m_loader->frameLoader()->frame()->settings();
336 return settings ? settings->maximumDecodedImageSize() : 0; 346 return settings ? settings->maximumDecodedImageSize() : 0;
337 } 347 }
338 348
339 void CachedImage::data(PassRefPtr<SharedBuffer> data, bool allDataReceived) 349 void CachedImage::data(PassRefPtr<SharedBuffer> data, bool allDataReceived)
340 { 350 {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 // We have to update the cached ImageBuffers if the underlying content chang ed. 470 // We have to update the cached ImageBuffers if the underlying content chang ed.
461 if (image->isSVGImage()) { 471 if (image->isSVGImage()) {
462 m_svgImageCache->imageContentChanged(); 472 m_svgImageCache->imageContentChanged();
463 return; 473 return;
464 } 474 }
465 #endif 475 #endif
466 notifyObservers(&rect); 476 notifyObservers(&rect);
467 } 477 }
468 478
469 } // namespace WebCore 479 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/loader/cache/CachedImage.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698