diff options
author | mpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-20 19:21:45 +0000 |
---|---|---|
committer | mpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-20 19:21:45 +0000 |
commit | e64d68ae0c48627109aa98a31142f83d43ac36c3 (patch) | |
tree | e554e2754d8a33b447f1a437c6cc055674fea2b4 /chrome/renderer/resources | |
parent | bcf60bb09a7aaf6a311e0928f9d870ab92c32c80 (diff) | |
download | chromium_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.js | 3 |
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; |