diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-04 17:52:24 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-04 17:52:24 +0000 |
commit | 360a8b838101747d7550129ba107d0b49aaa96e5 (patch) | |
tree | ef82d393b6e142a713db622ed36d15628d62ffac /webkit | |
parent | e0b4782dacc06b963a93e12d4bef057641163a4c (diff) | |
download | chromium_src-360a8b838101747d7550129ba107d0b49aaa96e5.zip chromium_src-360a8b838101747d7550129ba107d0b49aaa96e5.tar.gz chromium_src-360a8b838101747d7550129ba107d0b49aaa96e5.tar.bz2 |
Adds a WillDestroyFrame(WebFrame*) notification method to WebViewDelegate that
gets called from WebFrameLoaderClient::frameLoaderDestroyed().
The Chromium Embedded Framework needs this notification to properly clean up
memory associated with specific WebFrame instances (for example, custom
NPObject types bound to the WebFrame via BindToWindowObject()).
This patch was contributed by Marshall Greenblatt.
R=aa,darin
Review: http://codereview.chromium.org/99283
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15223 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/glue/webframeloaderclient_impl.cc | 5 | ||||
-rw-r--r-- | webkit/glue/webview_delegate.h | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/webkit/glue/webframeloaderclient_impl.cc b/webkit/glue/webframeloaderclient_impl.cc index b2cdae9..c5b341c 100644 --- a/webkit/glue/webframeloaderclient_impl.cc +++ b/webkit/glue/webframeloaderclient_impl.cc @@ -90,6 +90,11 @@ WebFrameLoaderClient::~WebFrameLoaderClient() { } void WebFrameLoaderClient::frameLoaderDestroyed() { + WebViewImpl* webview = webframe_->webview_impl(); + WebViewDelegate* d = webview->delegate(); + if (d) + d->WillDestroyFrame(webframe_); + // When the WebFrame was created, it had an extra reference given to it on // behalf of the Frame. Since the WebFrame owns us, this extra ref also // serves to keep us alive until the FrameLoader is done with us. The diff --git a/webkit/glue/webview_delegate.h b/webkit/glue/webview_delegate.h index 27036db..c6e164c 100644 --- a/webkit/glue/webview_delegate.h +++ b/webkit/glue/webview_delegate.h @@ -188,6 +188,10 @@ class WebViewDelegate : virtual public WebWidgetDelegate { virtual void DocumentElementAvailable(WebFrame* webframe) { } + // Notifies the delegate that the webframe is about to be destroyed. + virtual void WillDestroyFrame(WebFrame* webframe) { + } + // PolicyDelegate ---------------------------------------------------------- // This method is called to notify the delegate, and let it modify a |