[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

antti at apple.com antti at apple.com
Wed Dec 22 16:33:37 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 02cdd03cf5f5feab66718269e825519c8e50633b
Author: antti at apple.com <antti at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Nov 25 20:29:37 2010 +0000

    https://bugs.webkit.org/show_bug.cgi?id=50078
    Simplify CachedResource error handling code by getting rid of the m_httpStatusCodeErrorOccurred boolean.
    
    Reviewed by Dan Bernstein.
    
    * loader/cache/CachedImage.cpp:
    (WebCore::CachedImage::CachedImage):
    * loader/cache/CachedImage.h:
    (WebCore::CachedImage::shouldIgnoreHTTPStatusCodeErrors):
    * loader/cache/CachedResource.h:
    (WebCore::CachedResource::shouldIgnoreHTTPStatusCodeErrors):
    (WebCore::CachedResource::httpStatusCodeErrorOccurred):
    * loader/loader.cpp:
    (WebCore::Loader::didReceiveData):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72743 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index d9f2b0c..281c51f 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2010-11-25  Antti Koivisto  <antti at apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        https://bugs.webkit.org/show_bug.cgi?id=50078
+        Simplify CachedResource error handling code by getting rid of the m_httpStatusCodeErrorOccurred boolean.
+
+        * loader/cache/CachedImage.cpp:
+        (WebCore::CachedImage::CachedImage):
+        * loader/cache/CachedImage.h:
+        (WebCore::CachedImage::shouldIgnoreHTTPStatusCodeErrors):
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::shouldIgnoreHTTPStatusCodeErrors):
+        (WebCore::CachedResource::httpStatusCodeErrorOccurred):
+        * loader/loader.cpp:
+        (WebCore::Loader::didReceiveData):
+
 2010-11-25  Andreas Kling  <kling at webkit.org>
 
         Reviewed by Tor Arne Vestbø.
diff --git a/WebCore/html/HTMLImageLoader.cpp b/WebCore/html/HTMLImageLoader.cpp
index f620542..a1a3b26 100644
--- a/WebCore/html/HTMLImageLoader.cpp
+++ b/WebCore/html/HTMLImageLoader.cpp
@@ -48,7 +48,7 @@ HTMLImageLoader::~HTMLImageLoader()
 void HTMLImageLoader::dispatchLoadEvent()
 {
     bool errorOccurred = image()->errorOccurred();
-    if (!errorOccurred && image()->httpStatusCodeErrorOccurred())
+    if (!errorOccurred && image()->response().httpStatusCode() >= 400)
         errorOccurred = element()->hasTagName(HTMLNames::objectTag); // An <object> considers a 404 to be an error and should fire onerror.
     element()->dispatchEvent(Event::create(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false));
 }
@@ -65,8 +65,9 @@ void HTMLImageLoader::notifyFinished(CachedResource*)
     Element* elem = element();
     ImageLoader::notifyFinished(cachedImage);
 
+    bool loadError = cachedImage->errorOccurred() || cachedImage->response().httpStatusCode() >= 400;
 #if USE(JSC)
-    if (!cachedImage->errorOccurred() && !cachedImage->httpStatusCodeErrorOccurred()) {
+    if (!loadError) {
         if (!elem->inDocument()) {
             JSC::JSGlobalData* globalData = JSDOMWindowBase::commonJSGlobalData();
             globalData->heap.reportExtraMemoryCost(cachedImage->encodedSize());
@@ -74,7 +75,7 @@ void HTMLImageLoader::notifyFinished(CachedResource*)
     }
 #endif
 
-    if ((cachedImage->errorOccurred() || cachedImage->httpStatusCodeErrorOccurred()) && elem->hasTagName(HTMLNames::objectTag))
+    if (loadError && elem->hasTagName(HTMLNames::objectTag))
         static_cast<HTMLObjectElement*>(elem)->renderFallbackContent();
 }
 
diff --git a/WebCore/loader/cache/CachedImage.cpp b/WebCore/loader/cache/CachedImage.cpp
index d5d167d..29baef8 100644
--- a/WebCore/loader/cache/CachedImage.cpp
+++ b/WebCore/loader/cache/CachedImage.cpp
@@ -55,7 +55,6 @@ CachedImage::CachedImage(const String& url)
     : CachedResource(url, ImageResource)
     , m_image(0)
     , m_decodedDataDeletionTimer(this, &CachedImage::decodedDataDeletionTimerFired)
-    , m_httpStatusCodeErrorOccurred(false)
 {
     setStatus(Unknown);
 }
@@ -64,7 +63,6 @@ CachedImage::CachedImage(Image* image)
     : CachedResource(String(), ImageResource)
     , m_image(image)
     , m_decodedDataDeletionTimer(this, &CachedImage::decodedDataDeletionTimerFired)
-    , m_httpStatusCodeErrorOccurred(false)
 {
     setStatus(Cached);
     setLoading(false);
@@ -307,7 +305,7 @@ void CachedImage::error(CachedResource::Status status)
 {
     clear();
     setStatus(status);
-    ASSERT(errorOccurred() || httpStatusCodeErrorOccurred());
+    ASSERT(errorOccurred());
     m_data.clear();
     notifyObservers();
     setLoading(false);
diff --git a/WebCore/loader/cache/CachedImage.h b/WebCore/loader/cache/CachedImage.h
index af36534..e889ea0 100644
--- a/WebCore/loader/cache/CachedImage.h
+++ b/WebCore/loader/cache/CachedImage.h
@@ -67,8 +67,8 @@ public:
     virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
     virtual void error(CachedResource::Status);
     
-    virtual void httpStatusCodeError() { m_httpStatusCodeErrorOccurred = true; }
-    bool httpStatusCodeErrorOccurred() const { return m_httpStatusCodeErrorOccurred; }
+    // For compatibility, images keep loading even if there are HTTP errors.
+    virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return true; }
 
     void checkNotify();
     
@@ -97,7 +97,6 @@ private:
 
     RefPtr<Image> m_image;
     Timer<CachedImage> m_decodedDataDeletionTimer;
-    bool m_httpStatusCodeErrorOccurred;
 };
 
 }
diff --git a/WebCore/loader/cache/CachedResource.h b/WebCore/loader/cache/CachedResource.h
index ed60f84..9a54c53 100644
--- a/WebCore/loader/cache/CachedResource.h
+++ b/WebCore/loader/cache/CachedResource.h
@@ -85,7 +85,8 @@ public:
     virtual String encoding() const { return String(); }
     virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
     virtual void error(CachedResource::Status) { }
-    virtual void httpStatusCodeError() { error(LoadError); } // Images keep loading in spite of HTTP errors (for legacy compat with <img>, etc.).
+
+    virtual bool shouldIgnoreHTTPStatusCodeErrors() const { return false; }
 
     const String &url() const { return m_url; }
     Type type() const { return static_cast<Type>(m_type); }
diff --git a/WebCore/loader/loader.cpp b/WebCore/loader/loader.cpp
index 1d32f82..af4d7c7 100644
--- a/WebCore/loader/loader.cpp
+++ b/WebCore/loader/loader.cpp
@@ -323,7 +323,8 @@ void Loader::didReceiveData(SubresourceLoader* loader, const char* data, int siz
         return;
 
     if (resource->response().httpStatusCode() >= 400) {
-        resource->httpStatusCodeError();
+        if (!resource->shouldIgnoreHTTPStatusCodeErrors())
+            resource->error(CachedResource::LoadError);
         return;
     }
 
@@ -336,7 +337,7 @@ void Loader::didReceiveData(SubresourceLoader* loader, const char* data, int siz
     } else if (request->isIncremental())
         resource->data(loader->resourceData(), false);
 }
-    
+
 void Loader::didReceiveCachedMetadata(SubresourceLoader* loader, const char* data, int size)
 {
     Request* request = m_requestsLoading.get(loader);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list