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

This commit is contained in:
dbaron%dbaron.org 2004-04-07 17:37:55 +00:00
Родитель 8e23487e7f
Коммит 58e2de56be
2 изменённых файлов: 13 добавлений и 4 удалений

Просмотреть файл

@ -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);

Просмотреть файл

@ -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>