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 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 if (!m_data->isLocked()) | 357 if (!m_data->isLocked()) |
358 return true; | 358 return true; |
359 | 359 |
360 if (!memoryCache()->contains(this) || hasClients() || m_handleCount > 1 || m
_proxyResource || m_resourceToRevalidate || !m_loadFinishTime || !isSafeToUnlock
()) | 360 if (!memoryCache()->contains(this) || hasClients() || m_handleCount > 1 || m
_proxyResource || m_resourceToRevalidate || !m_loadFinishTime || !isSafeToUnlock
()) |
361 return false; | 361 return false; |
362 | 362 |
363 m_data->unlock(); | 363 m_data->unlock(); |
364 return true; | 364 return true; |
365 } | 365 } |
366 | 366 |
| 367 bool Resource::hasRightHandleCountApartFromCache(unsigned targetCount) const |
| 368 { |
| 369 return m_handleCount == targetCount + memoryCache()->contains(this); |
| 370 } |
| 371 |
367 void Resource::responseReceived(const ResourceResponse& response) | 372 void Resource::responseReceived(const ResourceResponse& response) |
368 { | 373 { |
369 setResponse(response); | 374 setResponse(response); |
370 m_responseTimestamp = currentTime(); | 375 m_responseTimestamp = currentTime(); |
371 String encoding = response.textEncodingName(); | 376 String encoding = response.textEncodingName(); |
372 if (!encoding.isNull()) | 377 if (!encoding.isNull()) |
373 setEncoding(encoding); | 378 setEncoding(encoding); |
374 | 379 |
375 if (!m_resourceToRevalidate) | 380 if (!m_resourceToRevalidate) |
376 return; | 381 return; |
(...skipping 19 matching lines...) Expand all Loading... |
396 // Currently, only one type of cached metadata per resource is supported. | 401 // Currently, only one type of cached metadata per resource is supported. |
397 // If the need arises for multiple types of metadata per resource this could | 402 // If the need arises for multiple types of metadata per resource this could |
398 // be enhanced to store types of metadata in a map. | 403 // be enhanced to store types of metadata in a map. |
399 ASSERT(!m_cachedMetadata); | 404 ASSERT(!m_cachedMetadata); |
400 | 405 |
401 m_cachedMetadata = CachedMetadata::create(dataTypeID, data, size); | 406 m_cachedMetadata = CachedMetadata::create(dataTypeID, data, size); |
402 const Vector<char>& serializedData = m_cachedMetadata->serialize(); | 407 const Vector<char>& serializedData = m_cachedMetadata->serialize(); |
403 blink::Platform::current()->cacheMetadata(m_response.url(), m_response.respo
nseTime(), serializedData.data(), serializedData.size()); | 408 blink::Platform::current()->cacheMetadata(m_response.url(), m_response.respo
nseTime(), serializedData.data(), serializedData.size()); |
404 } | 409 } |
405 | 410 |
| 411 bool Resource::canDelete() const |
| 412 { |
| 413 return !hasClients() && !m_loader && !m_preloadCount && hasRightHandleCountA
partFromCache(0) |
| 414 && !m_protectorCount && !m_resourceToRevalidate && !m_proxyResource; |
| 415 } |
| 416 |
| 417 bool Resource::hasOneHandleApartFromCache() const |
| 418 { |
| 419 return hasRightHandleCountApartFromCache(1); |
| 420 } |
| 421 |
406 CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const | 422 CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const |
407 { | 423 { |
408 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) | 424 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) |
409 return 0; | 425 return 0; |
410 return m_cachedMetadata.get(); | 426 return m_cachedMetadata.get(); |
411 } | 427 } |
412 | 428 |
413 void Resource::setCacheLiveResourcePriority(CacheLiveResourcePriority priority) | 429 void Resource::setCacheLiveResourcePriority(CacheLiveResourcePriority priority) |
414 { | 430 { |
415 if (memoryCache()->contains(this) && memoryCache()->isInLiveDecodedResources
List(this) && cacheLiveResourcePriority() != static_cast<unsigned>(priority)) { | 431 if (memoryCache()->contains(this) && memoryCache()->isInLiveDecodedResources
List(this) && cacheLiveResourcePriority() != static_cast<unsigned>(priority)) { |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 | 780 |
765 if (m_resourceToRevalidate) | 781 if (m_resourceToRevalidate) |
766 m_handlesToRevalidate.remove(h); | 782 m_handlesToRevalidate.remove(h); |
767 | 783 |
768 if (!m_handleCount) { | 784 if (!m_handleCount) { |
769 if (deleteIfPossible()) | 785 if (deleteIfPossible()) |
770 return; | 786 return; |
771 unlock(); | 787 unlock(); |
772 } else if (m_handleCount == 1 && memoryCache()->contains(this)) { | 788 } else if (m_handleCount == 1 && memoryCache()->contains(this)) { |
773 unlock(); | 789 unlock(); |
| 790 if (!hasClients()) |
| 791 memoryCache()->prune(this); |
774 } | 792 } |
775 } | 793 } |
776 | 794 |
777 bool Resource::canReuseRedirectChain() const | 795 bool Resource::canReuseRedirectChain() const |
778 { | 796 { |
779 for (size_t i = 0; i < m_redirectChain.size(); ++i) { | 797 for (size_t i = 0; i < m_redirectChain.size(); ++i) { |
780 if (!canUseResponse(m_redirectChain[i].m_redirectResponse, m_responseTim
estamp)) | 798 if (!canUseResponse(m_redirectChain[i].m_redirectResponse, m_responseTim
estamp)) |
781 return false; | 799 return false; |
782 } | 800 } |
783 return true; | 801 return true; |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
974 return "Shader"; | 992 return "Shader"; |
975 case Resource::ImportResource: | 993 case Resource::ImportResource: |
976 return "ImportResource"; | 994 return "ImportResource"; |
977 } | 995 } |
978 ASSERT_NOT_REACHED(); | 996 ASSERT_NOT_REACHED(); |
979 return "Unknown"; | 997 return "Unknown"; |
980 } | 998 } |
981 #endif // !LOG_DISABLED | 999 #endif // !LOG_DISABLED |
982 | 1000 |
983 } | 1001 } |
OLD | NEW |