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

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

Issue 1926193002: Clean up ResourceLoader finish more, remove ConnectionState enum (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@finish_smaller
Patch Set: rebase 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/fetch/ResourceFetcher.cpp
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
index 0bef236280c7ee323f862731eabd72d4b418234b..4e1613a4a65ffb4344db104bd9657fa5be36555b 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
@@ -814,11 +814,6 @@ void ResourceFetcher::reloadImagesIfNotDeferred()
}
}
-void ResourceFetcher::didLoadResource(Resource* resource)
-{
- context().didLoadResource(resource);
-}
-
int ResourceFetcher::requestCount() const
{
return m_loaders ? m_loaders->size() : 0;
@@ -877,12 +872,19 @@ ArchiveResource* ResourceFetcher::createArchive(Resource* resource)
return m_archive ? m_archive->mainResource() : nullptr;
}
-void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, int64_t encodedDataLength)
+void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, int64_t encodedDataLength, DidFinishLoadingReason finishReason)
{
TRACE_EVENT_ASYNC_END0("blink.net", "Resource", resource);
- // The ResourceLoader might be in |m_nonBlockingLoaders| for multipart responses.
- ASSERT(resource);
- ASSERT(!(m_loaders && m_loaders->contains(resource->loader())));
+ DCHECK(resource);
+
+ // When loading a multipart resource, make the loader non-block when
+ // finishing loading the first part.
+ if (finishReason == DidFinishFirstPartInMultipart)
+ moveResourceLoaderToNonBlocking(resource->loader());
+ else
+ removeResourceLoader(resource->loader());
+ DCHECK(!m_loaders || !m_loaders->contains(resource->loader()));
+ DCHECK(finishReason == DidFinishFirstPartInMultipart || !m_nonBlockingLoaders || !m_nonBlockingLoaders->contains(resource->loader()));
if (OwnPtr<ResourceTimingInfo> info = m_resourceTimingInfoMap.take(resource)) {
if (resource->response().isHTTP() && resource->response().httpStatusCode() < 400) {
@@ -894,15 +896,20 @@ void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, in
}
}
context().dispatchDidFinishLoading(resource->identifier(), finishTime, encodedDataLength);
+ if (finishReason == DidFinishLoading)
+ resource->finish(finishTime);
+ context().didLoadResource(resource);
}
-void ResourceFetcher::didFailLoading(const Resource* resource, const ResourceError& error)
+void ResourceFetcher::didFailLoading(Resource* resource, const ResourceError& error)
{
TRACE_EVENT_ASYNC_END0("blink.net", "Resource", resource);
removeResourceLoader(resource->loader());
m_resourceTimingInfoMap.take(const_cast<Resource*>(resource));
bool isInternalRequest = resource->options().initiatorInfo.name == FetchInitiatorTypeNames::internal;
context().dispatchDidFail(resource->identifier(), error, isInternalRequest);
+ resource->error(error);
+ context().didLoadResource(resource);
}
void ResourceFetcher::didReceiveResponse(Resource* resource, const ResourceResponse& response)
« no previous file with comments | « third_party/WebKit/Source/core/fetch/ResourceFetcher.h ('k') | third_party/WebKit/Source/core/fetch/ResourceLoader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698