Chromium Code Reviews| OLD | NEW |
|---|---|
| 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, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. | 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 154 } | 154 } |
| 155 | 155 |
| 156 CachedResource::~CachedResource() | 156 CachedResource::~CachedResource() |
| 157 { | 157 { |
| 158 ASSERT(!m_resourceToRevalidate); // Should be true because canDelete() check s this. | 158 ASSERT(!m_resourceToRevalidate); // Should be true because canDelete() check s this. |
| 159 ASSERT(canDelete()); | 159 ASSERT(canDelete()); |
| 160 ASSERT(!inCache()); | 160 ASSERT(!inCache()); |
| 161 ASSERT(!m_deleted); | 161 ASSERT(!m_deleted); |
| 162 ASSERT(url().isNull() || memoryCache()->resourceForURL(KURL(ParsedURLString, url())) != this); | 162 ASSERT(url().isNull() || memoryCache()->resourceForURL(KURL(ParsedURLString, url())) != this); |
| 163 | 163 |
| 164 if (m_cancelTimer.isActive()) | |
| 165 m_cancelTimer.stop(); | |
|
abarth-chromium
2013/06/18 23:15:26
This doesn't happen automatically when the timer i
Nate Chapin
2013/06/18 23:24:48
Derp, I didn't look in Timer's base class :(
Will
| |
| 166 | |
| 164 #ifndef NDEBUG | 167 #ifndef NDEBUG |
| 165 m_deleted = true; | 168 m_deleted = true; |
| 166 cachedResourceLeakCounter.decrement(); | 169 cachedResourceLeakCounter.decrement(); |
| 167 #endif | 170 #endif |
| 168 } | 171 } |
| 169 | 172 |
| 170 void CachedResource::failBeforeStarting() | 173 void CachedResource::failBeforeStarting() |
| 171 { | 174 { |
| 172 // FIXME: What if resources in other frames were waiting for this revalidati on? | 175 // FIXME: What if resources in other frames were waiting for this revalidati on? |
| 173 LOG(ResourceLoading, "Cannot start loading '%s'", url().string().latin1().da ta()); | 176 LOG(ResourceLoading, "Cannot start loading '%s'", url().string().latin1().da ta()); |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 440 if (url().protocolIs("https")) | 443 if (url().protocolIs("https")) |
| 441 memoryCache()->remove(this); | 444 memoryCache()->remove(this); |
| 442 } else | 445 } else |
| 443 memoryCache()->prune(); | 446 memoryCache()->prune(); |
| 444 } | 447 } |
| 445 // This object may be dead here. | 448 // This object may be dead here. |
| 446 } | 449 } |
| 447 | 450 |
| 448 void CachedResource::allClientsRemoved() | 451 void CachedResource::allClientsRemoved() |
| 449 { | 452 { |
| 453 if (!m_loader) | |
| 454 return; | |
| 450 if (m_type == MainResource || m_type == RawResource) | 455 if (m_type == MainResource || m_type == RawResource) |
| 451 cancelTimerFired(&m_cancelTimer); | 456 cancelTimerFired(&m_cancelTimer); |
| 452 else if (!m_cancelTimer.isActive()) | 457 else if (!m_cancelTimer.isActive()) |
| 453 m_cancelTimer.startOneShot(0); | 458 m_cancelTimer.startOneShot(0); |
| 454 } | 459 } |
| 455 | 460 |
| 456 void CachedResource::cancelTimerFired(Timer<CachedResource>* timer) | 461 void CachedResource::cancelTimerFired(Timer<CachedResource>* timer) |
| 457 { | 462 { |
| 458 ASSERT_UNUSED(timer, timer == &m_cancelTimer); | 463 ASSERT_UNUSED(timer, timer == &m_cancelTimer); |
| 459 if (hasClients() || !m_loader) | 464 if (hasClients() || !m_loader) |
| 460 return; | 465 return; |
| 461 m_loader->cancelIfNotFinishing(); | 466 m_loader->cancelIfNotFinishing(); |
| 467 if (m_status != Cached) | |
| 468 memoryCache()->remove(this); | |
| 462 } | 469 } |
| 463 | 470 |
| 464 void CachedResource::destroyDecodedDataIfNeeded() | 471 void CachedResource::destroyDecodedDataIfNeeded() |
| 465 { | 472 { |
| 466 if (!m_decodedSize) | 473 if (!m_decodedSize) |
| 467 return; | 474 return; |
| 468 | 475 |
| 469 if (double interval = memoryCache()->deadDecodedDataDeletionInterval()) | 476 if (double interval = memoryCache()->deadDecodedDataDeletionInterval()) |
| 470 m_decodedDataDeletionTimer.startOneShot(interval); | 477 m_decodedDataDeletionTimer.startOneShot(interval); |
| 471 } | 478 } |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 882 info.addMember(m_proxyResource, "proxyResource"); | 889 info.addMember(m_proxyResource, "proxyResource"); |
| 883 info.addMember(m_handlesToRevalidate, "handlesToRevalidate"); | 890 info.addMember(m_handlesToRevalidate, "handlesToRevalidate"); |
| 884 info.addMember(m_options, "options"); | 891 info.addMember(m_options, "options"); |
| 885 info.addMember(m_decodedDataDeletionTimer, "decodedDataDeletionTimer"); | 892 info.addMember(m_decodedDataDeletionTimer, "decodedDataDeletionTimer"); |
| 886 info.ignoreMember(m_clientsAwaitingCallback); | 893 info.ignoreMember(m_clientsAwaitingCallback); |
| 887 | 894 |
| 888 if (m_purgeableData && !m_purgeableData->wasPurged()) | 895 if (m_purgeableData && !m_purgeableData->wasPurged()) |
| 889 info.addRawBuffer(m_purgeableData.get(), m_purgeableData->size(), "Purge ableData", "purgeableData"); | 896 info.addRawBuffer(m_purgeableData.get(), m_purgeableData->size(), "Purge ableData", "purgeableData"); |
| 890 } | 897 } |
| 891 } | 898 } |
| OLD | NEW |