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

Unified Diff: Source/core/fetch/ResourceLoader.cpp

Issue 138843009: Notify when resource with error code >= 400 is finished. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addressed comments Created 6 years, 11 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: Source/core/fetch/ResourceLoader.cpp
diff --git a/Source/core/fetch/ResourceLoader.cpp b/Source/core/fetch/ResourceLoader.cpp
index 0d2d6c42ed04fc51e7f457bb0548394533e55709..85f0f294b4345078f5039b6e8c4a2cf530ffb3e4 100644
--- a/Source/core/fetch/ResourceLoader.cpp
+++ b/Source/core/fetch/ResourceLoader.cpp
@@ -87,6 +87,10 @@ ResourceLoader::~ResourceLoader()
void ResourceLoader::releaseResources()
{
ASSERT(m_state != Terminated);
+ if (!m_notifiedLoadComplete) {
Nate Chapin 2014/02/03 18:01:50 I *think* it's impossible to get here without m_no
+ m_notifiedLoadComplete = true;
+ m_host->didFailLoading(m_resource, ResourceError::cancelledError(m_request.url()));
+ }
m_requestCountTracker.clear();
m_host->didLoadResource(m_resource);
if (m_state == Terminated)
@@ -247,7 +251,10 @@ void ResourceLoader::cancel(const ResourceError& error)
m_loader.clear();
}
- m_host->didFailLoading(m_resource, nonNullError);
+ if (!m_notifiedLoadComplete) {
+ m_notifiedLoadComplete = true;
+ m_host->didFailLoading(m_resource, nonNullError);
+ }
if (m_state == Finishing)
m_resource->error(Resource::LoadError);
@@ -353,6 +360,12 @@ void ResourceLoader::didReceiveResponse(blink::WebURLLoader*, const blink::WebUR
if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnoreHTTPStatusCodeErrors())
return;
m_state = Finishing;
+
+ if (!m_notifiedLoadComplete) {
+ m_notifiedLoadComplete = true;
+ m_host->didFailLoading(m_resource, ResourceError::cancelledError(m_request.url()));
+ }
+
m_resource->error(Resource::LoadError);
Nate Chapin 2014/02/03 18:01:50 Hmm...I wonder if cancel() could just take care of
cancel();
}
@@ -391,8 +404,8 @@ void ResourceLoader::didFinishLoading(blink::WebURLLoader*, double finishTime)
RefPtr<ResourceLoader> protect(this);
ResourcePtr<Resource> protectResource(m_resource);
m_state = Finishing;
- m_resource->finish(finishTime);
didFinishLoadingOnePart(finishTime);
+ m_resource->finish(finishTime);
// If the load has been cancelled by a delegate in response to didFinishLoad(), do not release
// the resources a second time, they have been released by cancel.
@@ -412,16 +425,17 @@ void ResourceLoader::didFail(blink::WebURLLoader*, const blink::WebURLError& err
ResourcePtr<Resource> protectResource(m_resource);
m_state = Finishing;
m_resource->setResourceError(error);
- m_resource->error(Resource::LoadError);
-
- if (m_state == Terminated)
- return;
if (!m_notifiedLoadComplete) {
m_notifiedLoadComplete = true;
m_host->didFailLoading(m_resource, error);
}
+ m_resource->error(Resource::LoadError);
+
+ if (m_state == Terminated)
+ return;
+
releaseResources();
}

Powered by Google App Engine
This is Rietveld 408576698