Reviewed by Geoff.
authorandersca <andersca@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Feb 2007 03:38:00 +0000 (03:38 +0000)
committerandersca <andersca@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Feb 2007 03:38:00 +0000 (03:38 +0000)
        <rdar://problem/4998203>
        REGRESSION: Back-forward list gets messed up when navigating to error pages with back-forward cache turned off

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::load):
        Remove call to setPolicyDocumentLoader(), the policy document loader is set immediately after, and setting it before
        calling shouldReloadToHandleUnreachableURL causes us to get the wrong URL.

        (WebCore::FrameLoader::shouldReloadToHandleUnreachableURL):
        Check if the unreachable URL is equal to the document loader's request.

        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
        Check the provisional document loader's unreachable URL.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@19819 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/loader/FrameLoader.cpp

index 372f245..ed8d491 100644 (file)
@@ -1,3 +1,21 @@
+2007-02-22  Anders Carlsson  <acarlsson@apple.com>
+
+        Reviewed by Geoff.
+
+        <rdar://problem/4998203> 
+        REGRESSION: Back-forward list gets messed up when navigating to error pages with back-forward cache turned off
+        
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::load):
+        Remove call to setPolicyDocumentLoader(), the policy document loader is set immediately after, and setting it before 
+        calling shouldReloadToHandleUnreachableURL causes us to get the wrong URL.
+        
+        (WebCore::FrameLoader::shouldReloadToHandleUnreachableURL):
+        Check if the unreachable URL is equal to the document loader's request.
+        
+        (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
+        Check the provisional document loader's unreachable URL.
+
 2007-02-22  Justin Garcia  <justin.garcia@apple.com>
 
         Reviewed by darin
index 46a3d35..196afce 100644 (file)
@@ -1818,9 +1818,6 @@ void FrameLoader::load(const ResourceRequest& request, const NavigationAction& a
 
 void FrameLoader::load(DocumentLoader* newDocumentLoader)
 {
-    stopPolicyCheck();
-    setPolicyDocumentLoader(newDocumentLoader);
-
     ResourceRequest& r = newDocumentLoader->request();
     addExtraFieldsToRequest(r, true, false);
     FrameLoadType type;
@@ -1961,7 +1958,7 @@ bool FrameLoader::shouldReloadToHandleUnreachableURL(DocumentLoader* docLoader)
     else if (m_delegateIsHandlingProvisionalLoadError)
         compareDocumentLoader = m_provisionalDocumentLoader.get();
 
-    return compareDocumentLoader && unreachableURL != compareDocumentLoader->request().url();
+    return compareDocumentLoader && unreachableURL == compareDocumentLoader->request().url();
 }
 
 void FrameLoader::reloadAllowingStaleData(const String& encoding)
@@ -2605,8 +2602,8 @@ void FrameLoader::checkLoadCompleteForThisFrame()
                 // delegate callback.
                 if (pdl == m_provisionalDocumentLoader)
                     clearProvisionalLoad();
-                else if (m_documentLoader) {
-                    KURL unreachableURL = m_documentLoader->unreachableURL();
+                else {
+                    KURL unreachableURL = m_provisionalDocumentLoader->unreachableURL();
                     if (!unreachableURL.isEmpty() && unreachableURL == pdl->request().url())
                         shouldReset = false;
                 }