Reviewed by Vicki.
authorkdecker <kdecker@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Mar 2005 02:42:58 +0000 (02:42 +0000)
committerkdecker <kdecker@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 23 Mar 2005 02:42:58 +0000 (02:42 +0000)
Fixed <rdar://problem/4062336> REGRESSION (406-407): HTML submenus not working at hrweb.apple.com after going back

Rolled out the fix for <rdar://problem/4041374> REGRESSION (185-186): unload handlers (at least those added with addEventListener) are broken

We clearly need a better solution to 4041374. We can't indiscriminately remove event listeners in closeURL() after-all. Since event listeners are registered in a <script> tag, which is evaluated and executed at page load time, this becomes a problem since we don't reevaluate a page's <script> that is in the back/forward cache.  Thus once you leave the page, the listeners are gone for good.  This is the problem.

        * khtml/khtml_part.cpp:
        (KHTMLPart::closeURL):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::detach):

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/khtml_part.cpp
WebCore/khtml/xml/dom_docimpl.cpp

index f6bb82e666dda681a1d3293e9a3491406ff54ba3..d52453918fab0de6841dba59231d2ff0014cc5ba 100644 (file)
@@ -1,3 +1,18 @@
+2005-03-22  Kevin Decker  <kdecker@apple.com>
+
+        Reviewed by Vicki.
+
+       Fixed <rdar://problem/4062336> REGRESSION (406-407): HTML submenus not working at hrweb.apple.com after going back
+
+       Rolled out the fix for <rdar://problem/4041374> REGRESSION (185-186): unload handlers (at least those added with addEventListener) are broken
+
+       We clearly need a better solution to 4041374. We can't indiscriminately remove event listeners in closeURL() after-all. Since event listeners are registered in a <script> tag, which is evaluated and executed at page load time, this becomes a problem since we don't reevaluate a page's <script> that is in the back/forward cache.  Thus once you leave the page, the listeners are gone for good.  This is the problem.
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::closeURL):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::detach): 
+
 === Safari-410 ===
 
 2005-03-22  Vicki Murley  <vicki@apple.com>
index 52046f307c9abb1dc38046357f0333471ac85525..178802c993aad1073de90b805021b4f07a7aab8d 100644 (file)
@@ -605,10 +605,6 @@ bool KHTMLPart::closeURL()
     }
   }
     
-    if (d->m_doc) {
-        d->m_doc->removeAllEventListenersFromAllNodes();
-    }
-    
   d->m_bComplete = true; // to avoid emitting completed() in slotFinishedParsing() (David)
   d->m_bLoadingMainResource = false;
   d->m_bLoadEventEmitted = true; // don't want that one either
index 7fce2137448d8584c4d49ca4fabde1740ce75c8f..792f609e5a81c0e7d5b3cc951dac96579c71aa6a 100644 (file)
@@ -1192,7 +1192,10 @@ void DocumentImpl::detach()
     // objects to remove themselves from the lists.
     m_imageLoadEventDispatchSoonList.clear();
     m_imageLoadEventDispatchingList.clear();
-
+    
+    
+    // FIXME: UNLOAD_EVENT will not dispatch due to deleting event listeners prior to closeURL(). 
+    removeAllEventListenersFromAllNodes();
 
     NodeBaseImpl::detach();