diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-07 11:22:47 +0100 |
commit | cfd86b747d32ac22246a1aa908eaa720c63a88c1 (patch) | |
tree | 24d68c6f61c464ecba1e05670b80390ea3b0e50c /Source/WebCore/loader/SubresourceLoader.cpp | |
parent | 69d7c744c9de19d152dbe2d8e46eb7dfd4511d1a (diff) | |
download | qtwebkit-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.cpp | 11 |
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); } |