summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/resources
diff options
context:
space:
mode:
authormpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-20 19:21:45 +0000
committermpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-20 19:21:45 +0000
commite64d68ae0c48627109aa98a31142f83d43ac36c3 (patch)
treee554e2754d8a33b447f1a437c6cc055674fea2b4 /chrome/renderer/resources
parentbcf60bb09a7aaf6a311e0928f9d870ab92c32c80 (diff)
downloadchromium_src-e64d68ae0c48627109aa98a31142f83d43ac36c3.zip
chromium_src-e64d68ae0c48627109aa98a31142f83d43ac36c3.tar.gz
chromium_src-e64d68ae0c48627109aa98a31142f83d43ac36c3.tar.bz2
Change extension event bindings to auto-detach events when the window unloads.
Also added code to DetachEvent to unregister the context when no events are attached. This allows us to remove contexts from our list immediately when their frames are unloaded. Review URL: http://codereview.chromium.org/79057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/resources')
-rw-r--r--chrome/renderer/resources/event_bindings.js3
1 files changed, 3 insertions, 0 deletions
diff --git a/chrome/renderer/resources/event_bindings.js b/chrome/renderer/resources/event_bindings.js
index 62e249a..ed097dc 100644
--- a/chrome/renderer/resources/event_bindings.js
+++ b/chrome/renderer/resources/event_bindings.js
@@ -105,6 +105,8 @@ var chromium = chromium || {};
// name.
chromium.Event.prototype.attach_ = function() {
AttachEvent(this.eventName_);
+ this.unloadHandler_ = this.detach_.bind(this);
+ window.addEventListener('unload', this.unloadHandler_, false);
if (!this.eventName_)
return;
@@ -118,6 +120,7 @@ var chromium = chromium || {};
// Detaches this event object from its name.
chromium.Event.prototype.detach_ = function() {
+ window.removeEventListener('unload', this.unloadHandler_, false);
DetachEvent(this.eventName_);
if (!this.eventName_)
return;