Reviewed by Geoff.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Apr 2006 20:18:03 +0000 (20:18 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Apr 2006 20:18:03 +0000 (20:18 +0000)
commit783b226f897fb27e597371b610a4739b10bf2d61
tree36fcb99ad5c154655ef8e5e9373fda5fd7dc1066
parente057c35176f6c5e0f2ee739ad3ee67cf719f2e63
    Reviewed by Geoff.

        <rdar://problem/4525105> Repro TOT crash in [WebBaseNetscapePluginView dealloc] at coachella.com
        <http://bugzilla.opendarwin.org/show_bug.cgi?id=8564> crashed when closing a tab

        * WebView/WebFrame.m:
        (-[WebFramePrivate dealloc]):
        Assert that plugInViews has been released.
        (-[WebFrame _addPlugInView:]):
        New method.  Adds the plug-in view to the plugInViews set and calls -setWebFrame: on it.
        (-[WebFrame _removeAllPlugInViews]):
        New method.  Calls -setWebFrame:nil on all plug-in views and releases the plugInViews set.
        (-[WebFrame _willCloseURL]):
        New method.  Dispose of plug-in views when leaving a page (or closing the WebView).

        * WebView/WebFrameInternal.h:
        Declared -_addPlugInView:, -_removeAllPlugInViews, -_willCloseURL

        * WebCoreSupport/WebFrameBridge.m:
        (-[WebFrameBridge viewForPluginWithURL:attributeNames:attributeValues:MIMEType:]):
        Call -[WebFrame _addPlugInView:] instead of directly setting plug-in views' frames.  This
        allows us to keep track of them so that we can explicitly dispose of them when leaving the page.
        (-[WebFrameBridge closeURL]):
        Override -[WebCoreFrameBridge closeURL] so that we can perform our own teardown when leaving
        a page or closing the WebView.

        * Plugins/WebBaseNetscapePluginView.h:
        Declared -stop so that subclass WebNetscapePluginEmbeddedView can call it.

        * Plugins/WebNetscapePluginEmbeddedView.m:
        (-[WebNetscapePluginEmbeddedView setWebFrame:]):
        Stop the plug-in when it is removed from its WebFrame.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14075 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/Plugins/WebBaseNetscapePluginView.h
WebKit/Plugins/WebNetscapePluginEmbeddedView.m
WebKit/WebCoreSupport/WebFrameBridge.m
WebKit/WebView/WebFrame.m
WebKit/WebView/WebFrameInternal.h