| 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 | 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All |
| 7 rights reserved. | 7 rights reserved. |
| 8 | 8 |
| 9 This library is free software; you can redistribute it and/or | 9 This library is free software; you can redistribute it and/or |
| 10 modify it under the terms of the GNU Library General Public | 10 modify it under the terms of the GNU Library General Public |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 } | 388 } |
| 389 | 389 |
| 390 void Resource::setResourceBuffer(PassRefPtr<SharedBuffer> resourceBuffer) { | 390 void Resource::setResourceBuffer(PassRefPtr<SharedBuffer> resourceBuffer) { |
| 391 DCHECK(!m_isRevalidating); | 391 DCHECK(!m_isRevalidating); |
| 392 DCHECK(!errorOccurred()); | 392 DCHECK(!errorOccurred()); |
| 393 DCHECK_EQ(m_options.dataBufferingPolicy, BufferData); | 393 DCHECK_EQ(m_options.dataBufferingPolicy, BufferData); |
| 394 m_data = resourceBuffer; | 394 m_data = resourceBuffer; |
| 395 setEncodedSize(m_data->size()); | 395 setEncodedSize(m_data->size()); |
| 396 } | 396 } |
| 397 | 397 |
| 398 void Resource::clearData() { |
| 399 m_data.clear(); |
| 400 m_encodedSizeMemoryUsage = 0; |
| 401 } |
| 402 |
| 398 void Resource::setDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy) { | 403 void Resource::setDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy) { |
| 399 m_options.dataBufferingPolicy = dataBufferingPolicy; | 404 m_options.dataBufferingPolicy = dataBufferingPolicy; |
| 400 m_data.clear(); | 405 clearData(); |
| 401 setEncodedSize(0); | 406 setEncodedSize(0); |
| 402 } | 407 } |
| 403 | 408 |
| 404 void Resource::error(const ResourceError& error) { | 409 void Resource::error(const ResourceError& error) { |
| 405 DCHECK(!error.isNull()); | 410 DCHECK(!error.isNull()); |
| 406 m_error = error; | 411 m_error = error; |
| 407 m_isRevalidating = false; | 412 m_isRevalidating = false; |
| 408 | 413 |
| 409 if (m_error.isCancellation() || !isPreloaded()) | 414 if (m_error.isCancellation() || !isPreloaded()) |
| 410 memoryCache()->remove(this); | 415 memoryCache()->remove(this); |
| 411 | 416 |
| 412 if (!errorOccurred()) | 417 if (!errorOccurred()) |
| 413 setStatus(LoadError); | 418 setStatus(LoadError); |
| 414 DCHECK(errorOccurred()); | 419 DCHECK(errorOccurred()); |
| 415 m_data.clear(); | 420 clearData(); |
| 416 m_loader = nullptr; | 421 m_loader = nullptr; |
| 417 checkNotify(); | 422 checkNotify(); |
| 418 } | 423 } |
| 419 | 424 |
| 420 void Resource::finish(double loadFinishTime) { | 425 void Resource::finish(double loadFinishTime) { |
| 421 DCHECK(!m_isRevalidating); | 426 DCHECK(!m_isRevalidating); |
| 422 m_loadFinishTime = loadFinishTime; | 427 m_loadFinishTime = loadFinishTime; |
| 423 if (!errorOccurred()) | 428 if (!errorOccurred()) |
| 424 m_status = Cached; | 429 m_status = Cached; |
| 425 m_loader = nullptr; | 430 m_loader = nullptr; |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 | 798 |
| 794 void Resource::setEncodedSize(size_t encodedSize) { | 799 void Resource::setEncodedSize(size_t encodedSize) { |
| 795 if (encodedSize == m_encodedSize && encodedSize == m_encodedSizeMemoryUsage) | 800 if (encodedSize == m_encodedSize && encodedSize == m_encodedSizeMemoryUsage) |
| 796 return; | 801 return; |
| 797 size_t oldSize = size(); | 802 size_t oldSize = size(); |
| 798 m_encodedSize = encodedSize; | 803 m_encodedSize = encodedSize; |
| 799 m_encodedSizeMemoryUsage = encodedSize; | 804 m_encodedSizeMemoryUsage = encodedSize; |
| 800 memoryCache()->update(this, oldSize, size()); | 805 memoryCache()->update(this, oldSize, size()); |
| 801 } | 806 } |
| 802 | 807 |
| 803 void Resource::setEncodedSizeMemoryUsage(size_t encodedSize) { | |
| 804 m_encodedSizeMemoryUsage = encodedSize; | |
| 805 } | |
| 806 | |
| 807 void Resource::didAccessDecodedData() { | 808 void Resource::didAccessDecodedData() { |
| 808 memoryCache()->updateDecodedResource(this, UpdateForAccess); | 809 memoryCache()->updateDecodedResource(this, UpdateForAccess); |
| 809 } | 810 } |
| 810 | 811 |
| 811 void Resource::finishPendingClients() { | 812 void Resource::finishPendingClients() { |
| 812 // We're going to notify clients one by one. It is simple if the client does | 813 // We're going to notify clients one by one. It is simple if the client does |
| 813 // nothing. However there are a couple other things that can happen. | 814 // nothing. However there are a couple other things that can happen. |
| 814 // | 815 // |
| 815 // 1. Clients can be added during the loop. Make sure they are not processed. | 816 // 1. Clients can be added during the loop. Make sure they are not processed. |
| 816 // 2. Clients can be removed during the loop. Make sure they are always | 817 // 2. Clients can be removed during the loop. Make sure they are always |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 if (!shouldUpdateHeaderAfterRevalidation(header.key)) | 961 if (!shouldUpdateHeaderAfterRevalidation(header.key)) |
| 961 continue; | 962 continue; |
| 962 m_response.setHTTPHeaderField(header.key, header.value); | 963 m_response.setHTTPHeaderField(header.key, header.value); |
| 963 } | 964 } |
| 964 | 965 |
| 965 m_isRevalidating = false; | 966 m_isRevalidating = false; |
| 966 } | 967 } |
| 967 | 968 |
| 968 void Resource::revalidationFailed() { | 969 void Resource::revalidationFailed() { |
| 969 SECURITY_CHECK(m_redirectChain.isEmpty()); | 970 SECURITY_CHECK(m_redirectChain.isEmpty()); |
| 970 m_data.clear(); | 971 clearData(); |
| 971 m_cacheHandler.clear(); | 972 m_cacheHandler.clear(); |
| 972 destroyDecodedDataForFailedRevalidation(); | 973 destroyDecodedDataForFailedRevalidation(); |
| 973 m_isRevalidating = false; | 974 m_isRevalidating = false; |
| 974 } | 975 } |
| 975 | 976 |
| 976 bool Resource::canReuseRedirectChain() { | 977 bool Resource::canReuseRedirectChain() { |
| 977 for (auto& redirect : m_redirectChain) { | 978 for (auto& redirect : m_redirectChain) { |
| 978 if (!canUseResponse(redirect.m_redirectResponse, m_responseTimestamp)) | 979 if (!canUseResponse(redirect.m_redirectResponse, m_responseTimestamp)) |
| 979 return false; | 980 return false; |
| 980 if (redirect.m_request.cacheControlContainsNoCache() || | 981 if (redirect.m_request.cacheControlContainsNoCache() || |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1107 case Resource::TextTrack: | 1108 case Resource::TextTrack: |
| 1108 case Resource::Media: | 1109 case Resource::Media: |
| 1109 case Resource::Manifest: | 1110 case Resource::Manifest: |
| 1110 return false; | 1111 return false; |
| 1111 } | 1112 } |
| 1112 NOTREACHED(); | 1113 NOTREACHED(); |
| 1113 return false; | 1114 return false; |
| 1114 } | 1115 } |
| 1115 | 1116 |
| 1116 } // namespace blink | 1117 } // namespace blink |
| OLD | NEW |