summaryrefslogtreecommitdiff
path: root/Source/WebCore/loader/SubresourceLoader.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-07 11:22:47 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-07 11:22:47 +0100
commitcfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch)
tree24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebCore/loader/SubresourceLoader.cpp
parent69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff)
downloadqtwebkit-cfd86b747d32ac22246a1aa908eaa720c63a88c1.tar.gz
Imported WebKit commit 20271caf2e2c016d5cef40184cddeefeac4f1876 (http://svn.webkit.org/repository/webkit/trunk@133733)
New snapshot that contains all previous fixes as well as build fix for latest QtMultimedia API changes.
Diffstat (limited to 'Source/WebCore/loader/SubresourceLoader.cpp')
-rw-r--r--Source/WebCore/loader/SubresourceLoader.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/Source/WebCore/loader/SubresourceLoader.cpp b/Source/WebCore/loader/SubresourceLoader.cpp
index e57017126..e67f1027a 100644
--- a/Source/WebCore/loader/SubresourceLoader.cpp
+++ b/Source/WebCore/loader/SubresourceLoader.cpp
@@ -128,6 +128,7 @@ void SubresourceLoader::willSendRequest(ResourceRequest& newRequest, const Resou
{
// Store the previous URL because the call to ResourceLoader::willSendRequest will modify it.
KURL previousURL = request().url();
+ RefPtr<SubresourceLoader> protect(this);
ASSERT(!newRequest.isNull());
if (!previousURL.isNull() && previousURL != newRequest.url()) {
@@ -146,6 +147,8 @@ void SubresourceLoader::willSendRequest(ResourceRequest& newRequest, const Resou
return;
ResourceLoader::willSendRequest(newRequest, redirectResponse);
+ if (newRequest.isNull())
+ cancel();
}
void SubresourceLoader::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
@@ -182,7 +185,9 @@ void SubresourceLoader::didReceiveResponse(const ResourceResponse& response)
return;
ResourceLoader::didReceiveResponse(response);
- if (response.isMultipart()) {
+ // FIXME: Main resources have a different set of rules for multipart than images do.
+ // Hopefully we can merge those 2 paths.
+ if (response.isMultipart() && m_resource->type() != CachedResource::MainResource) {
m_loadingMultipartContent = true;
// We don't count multiParts in a CachedResourceLoader's request count
@@ -283,13 +288,14 @@ void SubresourceLoader::didFail(const ResourceError& error)
RefPtr<SubresourceLoader> protect(this);
CachedResourceHandle<CachedResource> protectResource(m_resource);
m_state = Finishing;
+ m_resource->setResourceError(error);
m_resource->error(CachedResource::LoadError);
if (!m_resource->isPreloaded())
memoryCache()->remove(m_resource);
ResourceLoader::didFail(error);
}
-void SubresourceLoader::willCancel(const ResourceError&)
+void SubresourceLoader::willCancel(const ResourceError& error)
{
if (m_state != Initialized)
return;
@@ -300,6 +306,7 @@ void SubresourceLoader::willCancel(const ResourceError&)
m_state = Finishing;
if (m_resource->resourceToRevalidate())
memoryCache()->revalidationFailed(m_resource);
+ m_resource->setResourceError(error);
memoryCache()->remove(m_resource);
}