зеркало из https://github.com/mozilla/gecko-dev.git
Fix leaks by avoiding closure and unregistering listener. b=231266 r=bryner sr=brendan
This commit is contained in:
Родитель
176a213396
Коммит
e363f842be
|
@ -196,23 +196,17 @@ function UpdatePageReport(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZ_ENABLE_XREMOTE
|
#ifdef MOZ_ENABLE_XREMOTE
|
||||||
function RegisterTabOpenObserver()
|
const gTabOpenObserver = {
|
||||||
{
|
observe: function(subject, topic, data)
|
||||||
const observer = {
|
{
|
||||||
observe: function(subject, topic, data)
|
if (topic != "open-new-tab-request" || subject != window)
|
||||||
{
|
return;
|
||||||
if (topic != "open-new-tab-request" || subject != window)
|
|
||||||
return;
|
|
||||||
|
|
||||||
delayedOpenTab(data);
|
delayedOpenTab(data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const service = Components.classes["@mozilla.org/observer-service;1"]
|
|
||||||
.getService(Components.interfaces.nsIObserverService);
|
|
||||||
service.addObserver(observer, "open-new-tab-request", false);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
function Startup()
|
function Startup()
|
||||||
{
|
{
|
||||||
gBrowser = document.getElementById("content");
|
gBrowser = document.getElementById("content");
|
||||||
|
@ -246,7 +240,9 @@ function Startup()
|
||||||
.getService(Components.interfaces.nsIXRemoteService);
|
.getService(Components.interfaces.nsIXRemoteService);
|
||||||
remoteService.addBrowserInstance(window);
|
remoteService.addBrowserInstance(window);
|
||||||
|
|
||||||
RegisterTabOpenObserver();
|
var observerService = Components.classes["@mozilla.org/observer-service;1"]
|
||||||
|
.getService(Components.interfaces.nsIObserverService);
|
||||||
|
observerService.addObserver(gTabOpenObserver, "open-new-tab-request", false);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -483,6 +479,10 @@ function Shutdown()
|
||||||
remoteService = Components.classes["@mozilla.org/browser/xremoteservice;1"]
|
remoteService = Components.classes["@mozilla.org/browser/xremoteservice;1"]
|
||||||
.getService(Components.interfaces.nsIXRemoteService);
|
.getService(Components.interfaces.nsIXRemoteService);
|
||||||
remoteService.removeBrowserInstance(window);
|
remoteService.removeBrowserInstance(window);
|
||||||
|
|
||||||
|
var observerService = Components.classes["@mozilla.org/observer-service;1"]
|
||||||
|
.getService(Components.interfaces.nsIObserverService);
|
||||||
|
observerService.removeObserver(gTabOpenObserver, "open-new-tab-request");
|
||||||
#endif
|
#endif
|
||||||
try {
|
try {
|
||||||
gBrowser.removeProgressListener(window.XULBrowserWindow);
|
gBrowser.removeProgressListener(window.XULBrowserWindow);
|
||||||
|
|
|
@ -411,25 +411,15 @@ function allLeftButtonsAreHidden()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function RegisterTabOpenObserver()
|
const gTabOpenObserver = {
|
||||||
{
|
observe: function(subject, topic, data)
|
||||||
const observer = {
|
{
|
||||||
observe: function(subject, topic, data)
|
if (topic != "open-new-tab-request" || subject != window)
|
||||||
{
|
return;
|
||||||
if (topic != "open-new-tab-request" || subject != window)
|
|
||||||
return;
|
|
||||||
|
|
||||||
delayedOpenTab(data);
|
delayedOpenTab(data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var service = Components.classes["@mozilla.org/observer-service;1"]
|
|
||||||
.getService(Components.interfaces.nsIObserverService);
|
|
||||||
service.addObserver(observer, "open-new-tab-request", false);
|
|
||||||
// Null out service variable so the closure of the observer doesn't
|
|
||||||
// own the service and create a cycle (bug 170022).
|
|
||||||
service = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Startup()
|
function Startup()
|
||||||
{
|
{
|
||||||
|
@ -634,7 +624,9 @@ function Startup()
|
||||||
.getService(Components.interfaces.nsIXRemoteService);
|
.getService(Components.interfaces.nsIXRemoteService);
|
||||||
remoteService.addBrowserInstance(window);
|
remoteService.addBrowserInstance(window);
|
||||||
|
|
||||||
RegisterTabOpenObserver();
|
var observerService = Components.classes["@mozilla.org/observer-service;1"]
|
||||||
|
.getService(Components.interfaces.nsIObserverService);
|
||||||
|
observerService.addObserver(gTabOpenObserver, "open-new-tab-request", false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -713,6 +705,10 @@ function Shutdown()
|
||||||
remoteService = Components.classes[XREMOTESERVICE_CONTRACTID]
|
remoteService = Components.classes[XREMOTESERVICE_CONTRACTID]
|
||||||
.getService(Components.interfaces.nsIXRemoteService);
|
.getService(Components.interfaces.nsIXRemoteService);
|
||||||
remoteService.removeBrowserInstance(window);
|
remoteService.removeBrowserInstance(window);
|
||||||
|
|
||||||
|
var observerService = Components.classes["@mozilla.org/observer-service;1"]
|
||||||
|
.getService(Components.interfaces.nsIObserverService);
|
||||||
|
observerService.removeObserver(gTabOpenObserver, "open-new-tab-request", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче