Bug 1371119 - Remove watchdog observers in XPCJSContext destructor (r=mccr8)

MozReview-Commit-ID: 5tj1hbom6zR
This commit is contained in:
Bill McCloskey 2017-06-07 16:22:33 -07:00
Родитель 2bb98fc53f
Коммит 0b17d548b6
1 изменённых файлов: 7 добавлений и 2 удалений

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

@ -256,13 +256,17 @@ class WatchdogManager : public nsIObserver
// thread, which isn't great to do in a destructor. So we require
// consumers to shut it down manually before releasing it.
MOZ_ASSERT(!mWatchdog);
}
public:
void Shutdown()
{
mozilla::Preferences::RemoveObserver(this, "dom.use_watchdog");
mozilla::Preferences::RemoveObserver(this, PREF_MAX_SCRIPT_RUN_TIME_CONTENT);
mozilla::Preferences::RemoveObserver(this, PREF_MAX_SCRIPT_RUN_TIME_CHROME);
}
public:
NS_IMETHOD Observe(nsISupports* aSubject, const char* aTopic,
const char16_t* aData) override
{
@ -714,6 +718,7 @@ XPCJSContext::~XPCJSContext()
if (mWatchdogManager->GetWatchdog())
mWatchdogManager->StopWatchdog();
mWatchdogManager->Shutdown();
if (mCallContext)
mCallContext->SystemIsBeingShutDown();