We should clear mainResource in DocumentLoader::cancelMainResourceLoad.
https://bugs.webkit.org/show_bug.cgi?id=116119
Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2013-05-15
Reviewed by Oliver Hunt.
MainResourceLoader::clearResource() was left out in r146239 when moving MainResourceLoader::cancel()
to DocumentLoader::cancelMainResourceLoad(), we need to add it back to make sure m_mainResource is
cleared when we cancel the loader.
No new tests needed.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::~DocumentLoader):
(WebCore::DocumentLoader::continueAfterNavigationPolicy):
(WebCore::DocumentLoader::cancelMainResourceLoad):
(WebCore::DocumentLoader::clearMainResource):
(WebCore):
* loader/DocumentLoader.h: add helper method clearMainResource()
(DocumentLoader):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@150150 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 9547170..c4cb1eb 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,25 @@
+2013-05-15 Yongjun Zhang <yongjun_zhang@apple.com>
+
+ We should clear mainResource in DocumentLoader::cancelMainResourceLoad.
+ https://bugs.webkit.org/show_bug.cgi?id=116119
+
+ Reviewed by Oliver Hunt.
+
+ MainResourceLoader::clearResource() was left out in r146239 when moving MainResourceLoader::cancel()
+ to DocumentLoader::cancelMainResourceLoad(), we need to add it back to make sure m_mainResource is
+ cleared when we cancel the loader.
+
+ No new tests needed.
+
+ * loader/DocumentLoader.cpp:
+ (WebCore::DocumentLoader::~DocumentLoader):
+ (WebCore::DocumentLoader::continueAfterNavigationPolicy):
+ (WebCore::DocumentLoader::cancelMainResourceLoad):
+ (WebCore::DocumentLoader::clearMainResource):
+ (WebCore):
+ * loader/DocumentLoader.h: add helper method clearMainResource()
+ (DocumentLoader):
+
2013-05-15 Joe Mason <jmason@blackberry.com>
[BlackBerry] When HTTP auth fails, only purge credentials that match the failed credentials
diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp
index 3124d32..f714c78 100644
--- a/Source/WebCore/loader/DocumentLoader.cpp
+++ b/Source/WebCore/loader/DocumentLoader.cpp
@@ -143,10 +143,7 @@
m_iconDataCallback->invalidate();
m_cachedResourceLoader->clearDocumentLoader();
- if (m_mainResource) {
- m_mainResource->removeClient(this);
- m_mainResource = 0;
- }
+ clearMainResource();
}
PassRefPtr<ResourceBuffer> DocumentLoader::mainResourceData() const
@@ -546,10 +543,7 @@
RefPtr<ResourceLoader> resourceLoader = mainResourceLoader();
ASSERT(resourceLoader->shouldSendResourceLoadCallbacks());
resourceLoader->setSendCallbackPolicy(DoNotSendCallbacks);
- if (m_mainResource) {
- m_mainResource->removeClient(this);
- m_mainResource = 0;
- }
+ clearMainResource();
resourceLoader->setSendCallbackPolicy(SendCallbacks);
handleSubstituteDataLoadSoon();
}
@@ -1409,9 +1403,19 @@
if (mainResourceLoader())
mainResourceLoader()->cancel(error);
+ clearMainResource();
+
mainReceivedError(error);
}
+void DocumentLoader::clearMainResource()
+{
+ if (m_mainResource) {
+ m_mainResource->removeClient(this);
+ m_mainResource = 0;
+ }
+}
+
void DocumentLoader::subresourceLoaderFinishedLoadingOnePart(ResourceLoader* loader)
{
m_multipartSubresourceLoaders.add(loader);
diff --git a/Source/WebCore/loader/DocumentLoader.h b/Source/WebCore/loader/DocumentLoader.h
index e875c57..4bd2c7a 100644
--- a/Source/WebCore/loader/DocumentLoader.h
+++ b/Source/WebCore/loader/DocumentLoader.h
@@ -308,7 +308,9 @@
void deliverSubstituteResourcesAfterDelay();
void substituteResourceDeliveryTimerFired(Timer<DocumentLoader>*);
-
+
+ void clearMainResource();
+
Frame* m_frame;
RefPtr<CachedResourceLoader> m_cachedResourceLoader;