Fix leaks related to failing to remove observers. b=239833 r=blake

git-svn-id: svn://10.0.0.236/trunk@154583 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dbaron%dbaron.org 2004-04-07 17:37:55 +00:00
parent 578454f0bf
commit 23c7fa45da
2 changed files with 13 additions and 4 deletions

View File

@ -543,6 +543,11 @@ function delayedStartup()
function Shutdown()
{
var os = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
os.removeObserver(gSessionHistoryObserver, "browser:purge-session-history");
os.removeObserver(gBrowser.browsers[0], "browser:purge-session-history");
#ifdef MOZ_ENABLE_XREMOTE
// remove remote support
var remoteService;
@ -550,9 +555,7 @@ function Shutdown()
.getService(Components.interfaces.nsIXRemoteService);
remoteService.removeBrowserInstance(window);
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.removeObserver(gTabOpenObserver, "open-new-tab-request");
os.removeObserver(gTabOpenObserver, "open-new-tab-request");
#endif
try {
gBrowser.removeProgressListener(window.XULBrowserWindow);

View File

@ -479,15 +479,21 @@
<method name="destroy">
<body>
<![CDATA[
if (!this.hasAttribute("disablehistory")) {
var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
os.removeObserver(this, "browser:purge-session-history", false);
}
if (this.mDragDropHandler)
this.mDragDropHandler.detach();
this.mDragDropHandler = null;
this.detachFormFill();
this.securityUI = null;
this.mDragDropHandler = null;
this.removeEventListener("unload", this.onUnload, true);
this.removeEventListener("DOMPopupBlocked", this.onPopupBlocked, true);
]]>
</body>
</method>