Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Unified Diff: third_party/WebKit/Source/core/fetch/Resource.cpp

Issue 2249373002: Make Resource MemoryCoordinatorClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added comment Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/fetch/Resource.cpp
diff --git a/third_party/WebKit/Source/core/fetch/Resource.cpp b/third_party/WebKit/Source/core/fetch/Resource.cpp
index c582f1ee2d347ce4427ff2c2fd6ae31a6dc03b62..e8f1cb7c3fd42e76b9800e93b2483b28e9cbd73f 100644
--- a/third_party/WebKit/Source/core/fetch/Resource.cpp
+++ b/third_party/WebKit/Source/core/fetch/Resource.cpp
@@ -104,7 +104,7 @@ public:
DECLARE_VIRTUAL_TRACE();
void setCachedMetadata(unsigned, const char*, size_t, CacheType) override;
void clearCachedMetadata(CacheType) override;
- CachedMetadata* cachedMetadata(unsigned) const override;
+ PassRefPtr<CachedMetadata> cachedMetadata(unsigned) const override;
String encoding() const override;
// Sets the serialized metadata retrieved from the platform's cache.
void setSerializedCachedMetadata(const char*, size_t);
@@ -149,7 +149,7 @@ void Resource::CachedMetadataHandlerImpl::clearCachedMetadata(CachedMetadataHand
sendToPlatform();
}
-CachedMetadata* Resource::CachedMetadataHandlerImpl::cachedMetadata(unsigned dataTypeID) const
+PassRefPtr<CachedMetadata> Resource::CachedMetadataHandlerImpl::cachedMetadata(unsigned dataTypeID) const
{
if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID)
return nullptr;
@@ -319,6 +319,7 @@ Resource::Resource(const ResourceRequest& request, Type type, const ResourceLoad
// Currently we support the metadata caching only for HTTP family.
if (m_resourceRequest.url().protocolIsInHTTPFamily())
m_cacheHandler = CachedMetadataHandlerImpl::create(this);
+ MemoryCoordinator::instance().registerClient(this);
}
Resource::~Resource()
@@ -330,6 +331,7 @@ DEFINE_TRACE(Resource)
{
visitor->trace(m_loader);
visitor->trace(m_cacheHandler);
+ MemoryCoordinatorClient::trace(visitor);
}
void Resource::setLoader(ResourceLoader* loader)
@@ -810,6 +812,14 @@ void Resource::prune()
destroyDecodedDataIfPossible();
}
+void Resource::prepareToSuspend()
+{
+ prune();
+ if (!m_cacheHandler)
+ return;
+ m_cacheHandler->clearCachedMetadata(CachedMetadataHandler::CacheLocally);
+}
+
void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebProcessMemoryDump* memoryDump) const
{
static const size_t kMaxURLReportLength = 128;

Powered by Google App Engine
This is Rietveld 408576698