Reviewed by Kevin Decker.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Mar 2006 01:31:42 +0000 (01:31 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Mar 2006 01:31:42 +0000 (01:31 +0000)
        Even better fix for <rdar://problem/4432562>.  We need to notify the frame delegate of a finished redirect for both
        "fast" and "slow" redirects, after committing the load.  My previous change only notified for "fast", history-locking
        redirects.  Now we notify the frame delegate after committing any kind of provisional load, not just in the case of
        a fast redirect.

        * WebView/WebFrame.m:
        (-[WebFrame _transitionToCommitted:]):
        (-[WebFrame _commitProvisionalLoad:]):

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

WebKit/ChangeLog
WebKit/WebView/WebFrame.m

index e518c9e412e3bf7122572905403a4d13840ae696..0a1c6552c13d68ce4fa1f803fce6d0e4d2416ace 100644 (file)
@@ -1,3 +1,16 @@
+2006-03-22  Tim Omernick  <timo@apple.com>
+
+        Reviewed by Kevin Decker.
+
+        Even better fix for <rdar://problem/4432562>.  We need to notify the frame delegate of a finished redirect for both
+        "fast" and "slow" redirects, after committing the load.  My previous change only notified for "fast", history-locking
+        redirects.  Now we notify the frame delegate after committing any kind of provisional load, not just in the case of
+        a fast redirect.
+
+        * WebView/WebFrame.m:
+        (-[WebFrame _transitionToCommitted:]):
+        (-[WebFrame _commitProvisionalLoad:]):
+
 2006-03-22  Tim Omernick  <timo@apple.com>
 
         Reviewed by Kevin Decker.
index 6d47b42c8d2c33e0acac9638f8b1b9103c4aad61..c9550ca6e9e17c9e153f3136366e9927e912a38b 100644 (file)
@@ -778,13 +778,6 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
                         // We must also clear out form data so we don't try to restore it into the incoming page,
                         // see -_opened
                     }
-
-                    // This dataSource was a client redirect (we checked above, remember?).  Now that it is being
-                    // committed, there can no longer be a pending redirect.  Call -_clientRedirectCancelled: here
-                    // so that the frame load delegate is notified that the redirect's status has changed.  The
-                    // frame load delegate may have saved some state about the redirect in its
-                    // -webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:.
-                    [self _clientRedirectCancelled:NO];
                 }
                 [self _makeDocumentView];
                 break;
@@ -857,6 +850,12 @@ static inline WebFrame *Frame(WebCoreFrameBridge *bridge)
         [provisionalDataSource _makeRepresentation];
     
     [self _transitionToCommitted:pageCache];
+
+    // Call -_clientRedirectCancelled: here so that the frame load delegate is notified that the redirect's
+    // status has changed, if there was a redirect.  The frame load delegate may have saved some state about
+    // the redirect in its -webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:.  Since we are
+    // just about to commit a new page, there cannot possibly be a pending redirect at this point.
+    [self _clientRedirectCancelled:NO];
     
     NSURL *baseURL = [[provisionalDataSource request] _webDataRequestBaseURL];        
     NSURL *URL = baseURL ? baseURL : [response URL];