| 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 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 if (m_preloadDiscoveryTime) { | 697 if (m_preloadDiscoveryTime) { |
| 698 int timeSinceDiscovery = static_cast<int>( | 698 int timeSinceDiscovery = static_cast<int>( |
| 699 1000 * (monotonicallyIncreasingTime() - m_preloadDiscoveryTime)); | 699 1000 * (monotonicallyIncreasingTime() - m_preloadDiscoveryTime)); |
| 700 DEFINE_STATIC_LOCAL(CustomCountHistogram, preloadDiscoveryHistogram, | 700 DEFINE_STATIC_LOCAL(CustomCountHistogram, preloadDiscoveryHistogram, |
| 701 ("PreloadScanner.ReferenceTime", 0, 10000, 50)); | 701 ("PreloadScanner.ReferenceTime", 0, 10000, 50)); |
| 702 preloadDiscoveryHistogram.count(timeSinceDiscovery); | 702 preloadDiscoveryHistogram.count(timeSinceDiscovery); |
| 703 } | 703 } |
| 704 } | 704 } |
| 705 if (!hasClientsOrObservers()) { | 705 if (!hasClientsOrObservers()) { |
| 706 m_isAlive = true; | 706 m_isAlive = true; |
| 707 memoryCache()->makeLive(this); | |
| 708 } | 707 } |
| 709 } | 708 } |
| 710 | 709 |
| 711 void Resource::addClient(ResourceClient* client, | 710 void Resource::addClient(ResourceClient* client, |
| 712 PreloadReferencePolicy policy) { | 711 PreloadReferencePolicy policy) { |
| 713 CHECK(!m_isAddRemoveClientProhibited); | 712 CHECK(!m_isAddRemoveClientProhibited); |
| 714 | 713 |
| 715 willAddClientOrObserver(policy); | 714 willAddClientOrObserver(policy); |
| 716 | 715 |
| 717 if (m_isRevalidating) { | 716 if (m_isRevalidating) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 748 | 747 |
| 749 if (m_clientsAwaitingCallback.isEmpty()) | 748 if (m_clientsAwaitingCallback.isEmpty()) |
| 750 ResourceCallback::callbackHandler().cancel(this); | 749 ResourceCallback::callbackHandler().cancel(this); |
| 751 | 750 |
| 752 didRemoveClientOrObserver(); | 751 didRemoveClientOrObserver(); |
| 753 } | 752 } |
| 754 | 753 |
| 755 void Resource::didRemoveClientOrObserver() { | 754 void Resource::didRemoveClientOrObserver() { |
| 756 if (!hasClientsOrObservers() && m_isAlive) { | 755 if (!hasClientsOrObservers() && m_isAlive) { |
| 757 m_isAlive = false; | 756 m_isAlive = false; |
| 758 memoryCache()->makeDead(this); | |
| 759 allClientsAndObserversRemoved(); | 757 allClientsAndObserversRemoved(); |
| 760 | 758 |
| 761 // RFC2616 14.9.2: | 759 // RFC2616 14.9.2: |
| 762 // "no-store: ... MUST make a best-effort attempt to remove the information | 760 // "no-store: ... MUST make a best-effort attempt to remove the information |
| 763 // from volatile storage as promptly as possible" | 761 // from volatile storage as promptly as possible" |
| 764 // "... History buffers MAY store such responses as part of their normal | 762 // "... History buffers MAY store such responses as part of their normal |
| 765 // operation." | 763 // operation." |
| 766 // We allow non-secure content to be reused in history, but we do not allow | 764 // We allow non-secure content to be reused in history, but we do not allow |
| 767 // secure content to be reused. | 765 // secure content to be reused. |
| 768 if (hasCacheControlNoStoreHeader() && url().protocolIs("https")) | 766 if (hasCacheControlNoStoreHeader() && url().protocolIs("https")) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 782 if (!hasClientsOrObservers() && m_loader) | 780 if (!hasClientsOrObservers() && m_loader) |
| 783 m_loader->cancel(); | 781 m_loader->cancel(); |
| 784 } | 782 } |
| 785 | 783 |
| 786 void Resource::setDecodedSize(size_t decodedSize) { | 784 void Resource::setDecodedSize(size_t decodedSize) { |
| 787 if (decodedSize == m_decodedSize) | 785 if (decodedSize == m_decodedSize) |
| 788 return; | 786 return; |
| 789 size_t oldSize = size(); | 787 size_t oldSize = size(); |
| 790 m_decodedSize = decodedSize; | 788 m_decodedSize = decodedSize; |
| 791 memoryCache()->update(this, oldSize, size()); | 789 memoryCache()->update(this, oldSize, size()); |
| 792 memoryCache()->updateDecodedResource(this, UpdateForPropertyChange); | |
| 793 } | 790 } |
| 794 | 791 |
| 795 void Resource::setEncodedSize(size_t encodedSize) { | 792 void Resource::setEncodedSize(size_t encodedSize) { |
| 796 if (encodedSize == m_encodedSize) | 793 if (encodedSize == m_encodedSize) |
| 797 return; | 794 return; |
| 798 size_t oldSize = size(); | 795 size_t oldSize = size(); |
| 799 m_encodedSize = encodedSize; | 796 m_encodedSize = encodedSize; |
| 800 memoryCache()->update(this, oldSize, size()); | 797 memoryCache()->update(this, oldSize, size()); |
| 801 } | 798 } |
| 802 | 799 |
| 803 void Resource::didAccessDecodedData() { | |
| 804 memoryCache()->updateDecodedResource(this, UpdateForAccess); | |
| 805 } | |
| 806 | |
| 807 void Resource::finishPendingClients() { | 800 void Resource::finishPendingClients() { |
| 808 // We're going to notify clients one by one. It is simple if the client does | 801 // We're going to notify clients one by one. It is simple if the client does |
| 809 // nothing. However there are a couple other things that can happen. | 802 // nothing. However there are a couple other things that can happen. |
| 810 // | 803 // |
| 811 // 1. Clients can be added during the loop. Make sure they are not processed. | 804 // 1. Clients can be added during the loop. Make sure they are not processed. |
| 812 // 2. Clients can be removed during the loop. Make sure they are always | 805 // 2. Clients can be removed during the loop. Make sure they are always |
| 813 // available to be removed. Also don't call removed clients or add them | 806 // available to be removed. Also don't call removed clients or add them |
| 814 // back. | 807 // back. |
| 815 // | 808 // |
| 816 // Handle case (1) by saving a list of clients to notify. A separate list also | 809 // Handle case (1) by saving a list of clients to notify. A separate list also |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1097 case Resource::TextTrack: | 1090 case Resource::TextTrack: |
| 1098 case Resource::Media: | 1091 case Resource::Media: |
| 1099 case Resource::Manifest: | 1092 case Resource::Manifest: |
| 1100 return false; | 1093 return false; |
| 1101 } | 1094 } |
| 1102 NOTREACHED(); | 1095 NOTREACHED(); |
| 1103 return false; | 1096 return false; |
| 1104 } | 1097 } |
| 1105 | 1098 |
| 1106 } // namespace blink | 1099 } // namespace blink |
| OLD | NEW |