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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 97 class Resource::CachedMetadataHandlerImpl : public CachedMetadataHandler { | 97 class Resource::CachedMetadataHandlerImpl : public CachedMetadataHandler { |
| 98 public: | 98 public: |
| 99 static Resource::CachedMetadataHandlerImpl* create(Resource* resource) | 99 static Resource::CachedMetadataHandlerImpl* create(Resource* resource) |
| 100 { | 100 { |
| 101 return new CachedMetadataHandlerImpl(resource); | 101 return new CachedMetadataHandlerImpl(resource); |
| 102 } | 102 } |
| 103 ~CachedMetadataHandlerImpl() override {} | 103 ~CachedMetadataHandlerImpl() override {} |
| 104 DECLARE_VIRTUAL_TRACE(); | 104 DECLARE_VIRTUAL_TRACE(); |
| 105 void setCachedMetadata(unsigned, const char*, size_t, CacheType) override; | 105 void setCachedMetadata(unsigned, const char*, size_t, CacheType) override; |
| 106 void clearCachedMetadata(CacheType) override; | 106 void clearCachedMetadata(CacheType) override; |
| 107 CachedMetadata* cachedMetadata(unsigned) const override; | 107 PassRefPtr<CachedMetadata> cachedMetadata(unsigned) const override; |
| 108 String encoding() const override; | 108 String encoding() const override; |
| 109 // Sets the serialized metadata retrieved from the platform's cache. | 109 // Sets the serialized metadata retrieved from the platform's cache. |
| 110 void setSerializedCachedMetadata(const char*, size_t); | 110 void setSerializedCachedMetadata(const char*, size_t); |
| 111 | 111 |
| 112 protected: | 112 protected: |
| 113 explicit CachedMetadataHandlerImpl(Resource*); | 113 explicit CachedMetadataHandlerImpl(Resource*); |
| 114 virtual void sendToPlatform(); | 114 virtual void sendToPlatform(); |
| 115 const ResourceResponse& response() const { return m_resource->response(); } | 115 const ResourceResponse& response() const { return m_resource->response(); } |
| 116 | 116 |
| 117 RefPtr<CachedMetadata> m_cachedMetadata; | 117 RefPtr<CachedMetadata> m_cachedMetadata; |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 142 sendToPlatform(); | 142 sendToPlatform(); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void Resource::CachedMetadataHandlerImpl::clearCachedMetadata(CachedMetadataHand ler::CacheType cacheType) | 145 void Resource::CachedMetadataHandlerImpl::clearCachedMetadata(CachedMetadataHand ler::CacheType cacheType) |
| 146 { | 146 { |
| 147 m_cachedMetadata.clear(); | 147 m_cachedMetadata.clear(); |
| 148 if (cacheType == CachedMetadataHandler::SendToPlatform) | 148 if (cacheType == CachedMetadataHandler::SendToPlatform) |
| 149 sendToPlatform(); | 149 sendToPlatform(); |
| 150 } | 150 } |
| 151 | 151 |
| 152 CachedMetadata* Resource::CachedMetadataHandlerImpl::cachedMetadata(unsigned dat aTypeID) const | 152 PassRefPtr<CachedMetadata> Resource::CachedMetadataHandlerImpl::cachedMetadata(u nsigned dataTypeID) const |
| 153 { | 153 { |
| 154 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) | 154 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) |
| 155 return nullptr; | 155 return nullptr; |
| 156 return m_cachedMetadata.get(); | 156 return m_cachedMetadata.get(); |
|
hiroshige
2016/08/25 12:48:11
We can remove .get() here.
| |
| 157 } | 157 } |
| 158 | 158 |
| 159 String Resource::CachedMetadataHandlerImpl::encoding() const | 159 String Resource::CachedMetadataHandlerImpl::encoding() const |
| 160 { | 160 { |
| 161 return m_resource->encoding(); | 161 return m_resource->encoding(); |
| 162 } | 162 } |
| 163 | 163 |
| 164 void Resource::CachedMetadataHandlerImpl::setSerializedCachedMetadata(const char * data, size_t size) | 164 void Resource::CachedMetadataHandlerImpl::setSerializedCachedMetadata(const char * data, size_t size) |
| 165 { | 165 { |
| 166 // We only expect to receive cached metadata from the platform once. | 166 // We only expect to receive cached metadata from the platform once. |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 , m_responseTimestamp(currentTime()) | 312 , m_responseTimestamp(currentTime()) |
| 313 , m_cancelTimer(this, &Resource::cancelTimerFired) | 313 , m_cancelTimer(this, &Resource::cancelTimerFired) |
| 314 , m_resourceRequest(request) | 314 , m_resourceRequest(request) |
| 315 { | 315 { |
| 316 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum. | 316 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum. |
| 317 InstanceCounters::incrementCounter(InstanceCounters::ResourceCounter); | 317 InstanceCounters::incrementCounter(InstanceCounters::ResourceCounter); |
| 318 | 318 |
| 319 // Currently we support the metadata caching only for HTTP family. | 319 // Currently we support the metadata caching only for HTTP family. |
| 320 if (m_resourceRequest.url().protocolIsInHTTPFamily()) | 320 if (m_resourceRequest.url().protocolIsInHTTPFamily()) |
| 321 m_cacheHandler = CachedMetadataHandlerImpl::create(this); | 321 m_cacheHandler = CachedMetadataHandlerImpl::create(this); |
| 322 MemoryCoordinator::instance().registerClient(this); | |
| 322 } | 323 } |
| 323 | 324 |
| 324 Resource::~Resource() | 325 Resource::~Resource() |
| 325 { | 326 { |
| 326 InstanceCounters::decrementCounter(InstanceCounters::ResourceCounter); | 327 InstanceCounters::decrementCounter(InstanceCounters::ResourceCounter); |
| 327 } | 328 } |
| 328 | 329 |
| 329 DEFINE_TRACE(Resource) | 330 DEFINE_TRACE(Resource) |
| 330 { | 331 { |
| 331 visitor->trace(m_loader); | 332 visitor->trace(m_loader); |
| 332 visitor->trace(m_cacheHandler); | 333 visitor->trace(m_cacheHandler); |
| 334 MemoryCoordinatorClient::trace(visitor); | |
| 333 } | 335 } |
| 334 | 336 |
| 335 void Resource::setLoader(ResourceLoader* loader) | 337 void Resource::setLoader(ResourceLoader* loader) |
| 336 { | 338 { |
| 337 RELEASE_ASSERT(!m_loader); | 339 RELEASE_ASSERT(!m_loader); |
| 338 ASSERT(stillNeedsLoad()); | 340 ASSERT(stillNeedsLoad()); |
| 339 m_loader = loader; | 341 m_loader = loader; |
| 340 m_status = Pending; | 342 m_status = Pending; |
| 341 } | 343 } |
| 342 | 344 |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 803 | 805 |
| 804 // Prevent the case when there are clients waiting but no callback scheduled . | 806 // Prevent the case when there are clients waiting but no callback scheduled . |
| 805 ASSERT(m_clientsAwaitingCallback.isEmpty() || scheduled); | 807 ASSERT(m_clientsAwaitingCallback.isEmpty() || scheduled); |
| 806 } | 808 } |
| 807 | 809 |
| 808 void Resource::prune() | 810 void Resource::prune() |
| 809 { | 811 { |
| 810 destroyDecodedDataIfPossible(); | 812 destroyDecodedDataIfPossible(); |
| 811 } | 813 } |
| 812 | 814 |
| 815 void Resource::prepareToSuspend() | |
| 816 { | |
| 817 prune(); | |
| 818 if (!m_cacheHandler) | |
| 819 return; | |
| 820 m_cacheHandler->clearCachedMetadata(CachedMetadataHandler::CacheLocally); | |
| 821 } | |
| 822 | |
| 813 void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebProcess MemoryDump* memoryDump) const | 823 void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebProcess MemoryDump* memoryDump) const |
| 814 { | 824 { |
| 815 static const size_t kMaxURLReportLength = 128; | 825 static const size_t kMaxURLReportLength = 128; |
| 816 static const int kMaxResourceClientToShowInMemoryInfra = 10; | 826 static const int kMaxResourceClientToShowInMemoryInfra = 10; |
| 817 | 827 |
| 818 const String dumpName = getMemoryDumpName(); | 828 const String dumpName = getMemoryDumpName(); |
| 819 WebMemoryAllocatorDump* dump = memoryDump->createMemoryAllocatorDump(dumpNam e); | 829 WebMemoryAllocatorDump* dump = memoryDump->createMemoryAllocatorDump(dumpNam e); |
| 820 dump->addScalar("encoded_size", "bytes", m_encodedSize); | 830 dump->addScalar("encoded_size", "bytes", m_encodedSize); |
| 821 if (hasClientsOrObservers()) | 831 if (hasClientsOrObservers()) |
| 822 dump->addScalar("live_size", "bytes", m_encodedSize); | 832 dump->addScalar("live_size", "bytes", m_encodedSize); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1049 case Resource::TextTrack: | 1059 case Resource::TextTrack: |
| 1050 case Resource::Media: | 1060 case Resource::Media: |
| 1051 case Resource::Manifest: | 1061 case Resource::Manifest: |
| 1052 return false; | 1062 return false; |
| 1053 } | 1063 } |
| 1054 ASSERT_NOT_REACHED(); | 1064 ASSERT_NOT_REACHED(); |
| 1055 return false; | 1065 return false; |
| 1056 } | 1066 } |
| 1057 | 1067 |
| 1058 } // namespace blink | 1068 } // namespace blink |
| OLD | NEW |