summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-04 17:52:24 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-04 17:52:24 +0000
commit360a8b838101747d7550129ba107d0b49aaa96e5 (patch)
treeef82d393b6e142a713db622ed36d15628d62ffac /webkit
parente0b4782dacc06b963a93e12d4bef057641163a4c (diff)
downloadchromium_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.cc5
-rw-r--r--webkit/glue/webview_delegate.h4
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