WebCore:
authorggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Sep 2007 02:11:08 +0000 (02:11 +0000)
committerggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Sep 2007 02:11:08 +0000 (02:11 +0000)
commitc1121cf621dc976dcd41c705a94525a07845176d
tree6545aa2ee1fdaf81d84dbcd297f18dccac9e3182
parentfdf1611ec0722b6781c5f71bbe5d130ec8347673
WebCore:

        Reviewed by Darin Adler.

        Speculative fix for <rdar://problem/5479443> REGRESSION: Hang due to
        infinite JS recursion on close @ engadget.com (onunload-based ad)

        If page is NULL, shouldInterruptScript now returns true, so you can't
        get stuck in a state in which a script executes forever without putting
        up a UI to ask if it should stop.

        * bindings/js/kjs_binding.cpp:
        (KJS::ScriptInterpreter::shouldInterruptScript):

WebKit:

        Reviewed by Darin Adler.

        Fixed a hang due to an infinite script running in the window's unload
        event handler, which may be the cause of <rdar://problem/5479443>
        REGRESSION: Hang due to infinite JS recursion on close @ engadget.com
        (onunload-based ad)

        * WebView/WebUIDelegatePrivate.h: Added FIXME.

        * WebView/WebView.h: Clarified headerdoc ambiguity about when delegate
        methods stop firing.

        * WebView/WebView.mm:
        (-[WebView _close]): The fix: don't nil out our delegates until after
        detaching the FrameLoader, because the act of detaching the FrameLoader
        might fire important delegate methods, like webViewShouldInterruptJavaScript:.
        Don't do other tear-down either, because the unload event handler needs
        to run in a fully constructed page.

        This change is fairly low risk because niling out our delegates is a
        very recent, never-shipped feature in WebKit, so it's unlikely that any
        apps rely on it in a crazy way.

win:

        Reviewed by Darin Adler.

        Fixed a hang due to an infinite script running in the window's unload
        event handler, which may be the cause of <rdar://problem/5479443>
        REGRESSION: Hang due to infinite JS recursion on close @ engadget.com
        (onunload-based ad)

        Added a bunch of WebKitMac's close features, and reordered others to
        match WebKitMac.

        * WebView.cpp:
        (WebView::close):
        (WebView::removeDragCaret):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@25612 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebCore/ChangeLog
WebCore/bindings/js/kjs_binding.cpp
WebKit/ChangeLog
WebKit/WebView/WebUIDelegatePrivate.h
WebKit/WebView/WebView.h
WebKit/WebView/WebView.mm
WebKit/win/ChangeLog
WebKit/win/WebView.cpp