diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-23 09:28:44 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-23 09:28:44 +0200 |
commit | 815f1ed417bd26fbe2abbdf20ac5d3423b30796c (patch) | |
tree | 923c9a9e2834ccab60f5caecfb8f0ac410c1dd9e /Source/WebCore/loader | |
parent | b4ad5d9d2b96baacd0180ead50de5195ca78af2d (diff) | |
download | qtwebkit-815f1ed417bd26fbe2abbdf20ac5d3423b30796c.tar.gz |
Imported WebKit commit e65cbc5b6ac32627c797e7fc7f46eb7794410c92 (http://svn.webkit.org/repository/webkit/trunk@123308)
New snapshot with better configure tests
Diffstat (limited to 'Source/WebCore/loader')
-rw-r--r-- | Source/WebCore/loader/ImageLoader.cpp | 19 | ||||
-rw-r--r-- | Source/WebCore/loader/ImageLoader.h | 2 | ||||
-rw-r--r-- | Source/WebCore/loader/MainResourceLoader.cpp | 6 | ||||
-rw-r--r-- | Source/WebCore/loader/archive/ArchiveFactory.cpp | 3 |
4 files changed, 24 insertions, 6 deletions
diff --git a/Source/WebCore/loader/ImageLoader.cpp b/Source/WebCore/loader/ImageLoader.cpp index f4d1209f0..e897f8a4e 100644 --- a/Source/WebCore/loader/ImageLoader.cpp +++ b/Source/WebCore/loader/ImageLoader.cpp @@ -125,6 +125,15 @@ inline Document* ImageLoader::document() void ImageLoader::setImage(CachedImage* newImage) { + setImageWithoutConsideringPendingLoadEvent(newImage); + + // Only consider updating the protection ref-count of the Element immediately before returning + // from this function as doing so might result in the destruction of this ImageLoader. + updatedHasPendingLoadEvent(); +} + +void ImageLoader::setImageWithoutConsideringPendingLoadEvent(CachedImage* newImage) +{ ASSERT(m_failedLoadURL.isEmpty()); CachedImage* oldImage = m_image.get(); if (newImage != oldImage) { @@ -150,10 +159,6 @@ void ImageLoader::setImage(CachedImage* newImage) if (RenderImageResource* imageResource = renderImageResource()) imageResource->resetAnimation(); - - // Only consider updating the protection ref-count of the Element immediately before returning - // from this function as doing so might result in the destruction of this ImageLoader. - updatedHasPendingLoadEvent(); } void ImageLoader::updateFromElement() @@ -263,7 +268,7 @@ void ImageLoader::notifyFinished(CachedResource* resource) && !document()->securityOrigin()->canRequest(image()->response().url()) && !resource->passesAccessControlCheck(document()->securityOrigin())) { - setImage(0); + setImageWithoutConsideringPendingLoadEvent(0); m_hasPendingErrorEvent = true; errorEventSender().dispatchEventSoon(this); @@ -272,6 +277,10 @@ void ImageLoader::notifyFinished(CachedResource* resource) document()->addConsoleMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, consoleMessage); ASSERT(!m_hasPendingLoadEvent); + + // Only consider updating the protection ref-count of the Element immediately before returning + // from this function as doing so might result in the destruction of this ImageLoader. + updatedHasPendingLoadEvent(); return; } diff --git a/Source/WebCore/loader/ImageLoader.h b/Source/WebCore/loader/ImageLoader.h index 269fa67be..178807198 100644 --- a/Source/WebCore/loader/ImageLoader.h +++ b/Source/WebCore/loader/ImageLoader.h @@ -91,6 +91,8 @@ private: RenderImageResource* renderImageResource(); void updateRenderer(); + void setImageWithoutConsideringPendingLoadEvent(CachedImage*); + ImageLoaderClient* m_client; CachedResourceHandle<CachedImage> m_image; AtomicString m_failedLoadURL; diff --git a/Source/WebCore/loader/MainResourceLoader.cpp b/Source/WebCore/loader/MainResourceLoader.cpp index 6093652d0..fe7d1f9f2 100644 --- a/Source/WebCore/loader/MainResourceLoader.cpp +++ b/Source/WebCore/loader/MainResourceLoader.cpp @@ -266,7 +266,11 @@ void MainResourceLoader::continueAfterContentPolicy(PolicyAction contentPolicy, switch (contentPolicy) { case PolicyUse: { // Prevent remote web archives from loading because they can claim to be from any domain and thus avoid cross-domain security checks (4120255). - bool isRemoteWebArchive = (equalIgnoringCase("application/x-webarchive", mimeType) || equalIgnoringCase("multipart/related", mimeType)) + bool isRemoteWebArchive = (equalIgnoringCase("application/x-webarchive", mimeType) +#if PLATFORM(GTK) + || equalIgnoringCase("message/rfc822", mimeType) +#endif + || equalIgnoringCase("multipart/related", mimeType)) && !m_substituteData.isValid() && !SchemeRegistry::shouldTreatURLSchemeAsLocal(url.protocol()); if (!frameLoader()->client()->canShowMIMEType(mimeType) || isRemoteWebArchive) { frameLoader()->policyChecker()->cannotShowMIMEType(r); diff --git a/Source/WebCore/loader/archive/ArchiveFactory.cpp b/Source/WebCore/loader/archive/ArchiveFactory.cpp index 521deb1d7..f6970aa53 100644 --- a/Source/WebCore/loader/archive/ArchiveFactory.cpp +++ b/Source/WebCore/loader/archive/ArchiveFactory.cpp @@ -68,6 +68,9 @@ static ArchiveMIMETypesMap& archiveMIMETypes() #endif #if ENABLE(MHTML) mimeTypes.set("multipart/related", archiveFactoryCreate<MHTMLArchive>); +#if PLATFORM(GTK) + mimeTypes.set("message/rfc822", archiveFactoryCreate<MHTMLArchive>); +#endif #endif initialized = true; |