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

Unified Diff: third_party/WebKit/Source/core/inspector/NetworkResourcesData.cpp

Issue 1985033003: [DevTools] Use registerWeakMembers in NetworkResourcesData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased, removed more code Created 4 years, 7 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/inspector/NetworkResourcesData.cpp
diff --git a/third_party/WebKit/Source/core/inspector/NetworkResourcesData.cpp b/third_party/WebKit/Source/core/inspector/NetworkResourcesData.cpp
index b564caa170a1e97e814b2a546daaead42b648eb0..1e5f2c23f5bd380a2549c8d4d79fcd477f850f18 100644
--- a/third_party/WebKit/Source/core/inspector/NetworkResourcesData.cpp
+++ b/third_party/WebKit/Source/core/inspector/NetworkResourcesData.cpp
@@ -35,6 +35,11 @@
namespace blink {
+static bool isErrorStatusCode(int statusCode)
+{
+ return statusCode >= 400;
+}
+
XHRReplayData* XHRReplayData::create(ExecutionContext* executionContext, const AtomicString& method, const KURL& url, bool async, PassRefPtr<EncodedFormData> formData, bool includeCredentials)
{
return new XHRReplayData(executionContext, method, url, async, formData, includeCredentials);
@@ -61,8 +66,9 @@ DEFINE_TRACE(XHRReplayData)
}
// ResourceData
-NetworkResourcesData::ResourceData::ResourceData(const String& requestId, const String& loaderId, const KURL& requestedURL)
- : m_requestId(requestId)
+NetworkResourcesData::ResourceData::ResourceData(NetworkResourcesData* networkResourcesData, const String& requestId, const String& loaderId, const KURL& requestedURL)
+ : m_networkResourcesData(networkResourcesData)
+ , m_requestId(requestId)
, m_loaderId(loaderId)
, m_requestedURL(requestedURL)
, m_base64Encoded(false)
@@ -75,8 +81,9 @@ NetworkResourcesData::ResourceData::ResourceData(const String& requestId, const
DEFINE_TRACE(NetworkResourcesData::ResourceData)
{
+ visitor->trace(m_networkResourcesData);
visitor->trace(m_xhrReplayData);
- visitor->trace(m_cachedResource);
+ visitor->template registerWeakMembers<NetworkResourcesData::ResourceData, &NetworkResourcesData::ResourceData::clearWeakMembers>(this);
}
void NetworkResourcesData::ResourceData::setContent(const String& content, bool base64Encoded)
@@ -120,6 +127,26 @@ void NetworkResourcesData::ResourceData::setResource(Resource* cachedResource)
m_cachedResource = cachedResource;
}
+void NetworkResourcesData::ResourceData::clearWeakMembers(Visitor* visitor)
+{
+ if (!m_cachedResource || ThreadHeap::isHeapObjectAlive(m_cachedResource))
+ return;
+
+ // Mark loaded resources or resources without the buffer as loaded.
+ if (m_cachedResource->isLoaded() || !m_cachedResource->resourceBuffer()) {
+ if (!isErrorStatusCode(m_cachedResource->response().httpStatusCode())) {
+ String content;
+ bool base64Encoded;
+ if (InspectorPageAgent::cachedResourceContent(m_cachedResource, &content, &base64Encoded))
+ m_networkResourcesData->setResourceContent(requestId(), content, base64Encoded);
+ }
+ } else {
+ // We could be evicting resource being loaded, save the loaded part, the rest will be appended.
+ m_networkResourcesData->maybeAddResourceData(requestId(), m_cachedResource->resourceBuffer()->data(), m_cachedResource->resourceBuffer()->size());
+ }
+ m_cachedResource = nullptr;
+}
+
size_t NetworkResourcesData::ResourceData::dataLength() const
{
return m_dataBuffer ? m_dataBuffer->size() : 0;
@@ -164,7 +191,7 @@ DEFINE_TRACE(NetworkResourcesData)
void NetworkResourcesData::resourceCreated(const String& requestId, const String& loaderId, const KURL& requestedURL)
{
ensureNoDataForRequestId(requestId);
- m_requestIdToResourceDataMap.set(requestId, new ResourceData(requestId, loaderId, requestedURL));
+ m_requestIdToResourceDataMap.set(requestId, new ResourceData(this, requestId, loaderId, requestedURL));
}
void NetworkResourcesData::responseReceived(const String& requestId, const String& frameId, const ResourceResponse& response)
@@ -308,20 +335,6 @@ HeapVector<Member<NetworkResourcesData::ResourceData>> NetworkResourcesData::res
return result;
}
-Vector<String> NetworkResourcesData::removeResource(Resource* cachedResource)
-{
- Vector<String> result;
- for (auto& request : m_requestIdToResourceDataMap) {
- ResourceData* resourceData = request.value;
- if (resourceData->cachedResource() == cachedResource) {
- resourceData->setResource(0);
- result.append(request.key);
- }
- }
-
- return result;
-}
-
void NetworkResourcesData::clear(const String& preservedLoaderId)
{
if (!m_requestIdToResourceDataMap.size())

Powered by Google App Engine
This is Rietveld 408576698