WebCore:
authortrey <trey@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Aug 2004 19:48:29 +0000 (19:48 +0000)
committertrey <trey@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Aug 2004 19:48:29 +0000 (19:48 +0000)
3764147 - failure of subframe to load leaves links in parent doc broken

        Reviewed by Maciej.

        * khtml/khtml_part.cpp:
        (KHTMLPart::childBegin):  New method to mark part as not complete.
        (KHTMLPart::processObjectRequest):  Mark child part imcomplete, so if we
later get a failure on load it won't think it's already complete and do nothing.
        * khtml/khtml_part.h:

WebKit:

3764147 - failure of subframe to load leaves links in parent doc broken

        Reviewed by Maciej.

        * WebView.subproj/WebDataSource.m:
        (-[WebDataSource _receivedMainResourceError:complete:]):
Need to call [bridge end] in the case of an error, so WC can clean up.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/khtml_part.cpp
WebCore/khtml/khtml_part.h
WebKit/ChangeLog
WebKit/WebView.subproj/WebDataSource.m

index a238c8c97b292a3c18b6befd98563d15204c4dfb..2837bdce014c6edbfedf78504d57c0eb4f249572 100644 (file)
@@ -1,3 +1,15 @@
+2004-08-17  Trey Matteson  <trey@apple.com>
+
+       3764147 - failure of subframe to load leaves links in parent doc broken
+
+        Reviewed by Maciej.
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::childBegin):  New method to mark part as not complete.
+        (KHTMLPart::processObjectRequest):  Mark child part imcomplete, so if we
+       later get a failure on load it won't think it's already complete and do nothing.
+        * khtml/khtml_part.h:
+
 === Safari-157 ===
 
 2004-08-16  David Hyatt  <hyatt@apple.com>
index 4b66a8fab922cba5af28178e6ec13c8883a1207c..a51036dcd08f5e2827831f685e5780c61fe43fd4 100644 (file)
@@ -1423,6 +1423,18 @@ void KHTMLPart::slotFinished( KIO::Job * job )
     end(); //will emit completed()
 }
 
+#if APPLE_CHANGES
+void KHTMLPart::childBegin()
+{
+    // We need to do this when the child is created so as to avoid the bogus state of the parent's
+    // child->m_bCompleted being false but the child's m_bComplete being true.  If the child gets
+    // an error early on, we had trouble where checkingComplete on the child was a NOP because
+    // it thought it was already complete, and thus the parent was never signaled, and never set
+    // its child->m_bComplete.
+    d->m_bComplete = false;
+}
+#endif
+
 void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset )
 {
 #if APPLE_CHANGES
@@ -3110,6 +3122,9 @@ bool KHTMLPart::processObjectRequest( khtml::ChildFrame *child, const KURL &_url
   else
   {
     KParts::ReadOnlyPart *part = KWQ(this)->createPart(*child, url, mimetype);
+    KHTMLPart *khtml_part = dynamic_cast<KHTMLPart *>(part);
+    if (khtml_part)
+      khtml_part->childBegin();
 #else
   if ( !child->m_services.contains( mimetype ) )
   {
index 0d5211d0c1b7ec78bc33165ccb6e62997b51a454..1fba849ce4ffe39185a087146a4d864eb0c4de34 100644 (file)
@@ -1064,6 +1064,10 @@ private slots:
   void slotIncZoom();
   void slotDecZoom();
 
+#if APPLE_CHANGES
+  void childBegin();
+#endif
+
   void slotLoadImages();
 
   /**
index a7b01ffcb5c876d6c468db7c1166c5d07919a1af..47d0e1282d04c1b3ce15a4d7823ccb28eedcd8f1 100644 (file)
@@ -1,3 +1,13 @@
+2004-08-17  Trey Matteson  <trey@apple.com>
+
+       3764147 - failure of subframe to load leaves links in parent doc broken
+
+        Reviewed by Maciej.
+
+        * WebView.subproj/WebDataSource.m:
+        (-[WebDataSource _receivedMainResourceError:complete:]):
+       Need to call [bridge end] in the case of an error, so WC can clean up.
+
 === Safari-157 ===
 
 2004-08-15  Richard Williamson   <rjw@apple.com>
index 923054490183e1e612f17658faadaa0e98c6e47f..b27838c32d813e49dd481f3bb6513fcf21405802 100644 (file)
 
 - (void)_receivedMainResourceError:(NSError *)error complete:(BOOL)isComplete
 {
+    if (isComplete) {
+        // Can't call [self _bridge] because we might not have commited yet
+        [[[self webFrame] _bridge] end];
+    }        
     [[self webFrame] _receivedMainResourceError:error];
     [[self _webView] _mainReceivedError:error
                            fromDataSource:self