diff --git a/embedding/browser/nsDocShellTreeOwner.cpp b/embedding/browser/nsDocShellTreeOwner.cpp index 1a78e776bc17..546acc6a630e 100644 --- a/embedding/browser/nsDocShellTreeOwner.cpp +++ b/embedding/browser/nsDocShellTreeOwner.cpp @@ -108,9 +108,7 @@ nsDocShellTreeOwner::nsDocShellTreeOwner() : mPrimaryContentShell(nullptr), mWebBrowserChrome(nullptr), mOwnerWin(nullptr), - mOwnerRequestor(nullptr), - mChromeTooltipListener(nullptr), - mChromeContextMenuListener(nullptr) + mOwnerRequestor(nullptr) { } @@ -823,7 +821,6 @@ nsDocShellTreeOwner::AddChromeListeners() if (tooltipListener) { mChromeTooltipListener = new ChromeTooltipListener(mWebBrowser, webBrowserChrome); - NS_ADDREF(mChromeTooltipListener); rv = mChromeTooltipListener->AddChromeListeners(); } } @@ -837,7 +834,6 @@ nsDocShellTreeOwner::AddChromeListeners() if (contextListener2 || contextListener) { mChromeContextMenuListener = new ChromeContextMenuListener(mWebBrowser, webBrowserChrome); - NS_ADDREF(mChromeContextMenuListener); rv = mChromeContextMenuListener->AddChromeListeners(); } } @@ -864,11 +860,11 @@ nsDocShellTreeOwner::RemoveChromeListeners() { if (mChromeTooltipListener) { mChromeTooltipListener->RemoveChromeListeners(); - NS_RELEASE(mChromeTooltipListener); + mChromeTooltipListener = nullptr; } if (mChromeContextMenuListener) { mChromeContextMenuListener->RemoveChromeListeners(); - NS_RELEASE(mChromeContextMenuListener); + mChromeContextMenuListener = nullptr; } nsCOMPtr piTarget; diff --git a/embedding/browser/nsDocShellTreeOwner.h b/embedding/browser/nsDocShellTreeOwner.h index 35bd3230418d..5ae31ee5422e 100644 --- a/embedding/browser/nsDocShellTreeOwner.h +++ b/embedding/browser/nsDocShellTreeOwner.h @@ -8,6 +8,7 @@ #define nsDocShellTreeOwner_h__ // Helper Classes +#include "nsAutoPtr.h" #include "nsCOMPtr.h" #include "nsString.h" @@ -127,9 +128,9 @@ protected: // the objects that listen for chrome events like context menus and tooltips. // They are separate objects to avoid circular references between |this| - // and the DOM. These are strong, owning refs. - ChromeTooltipListener* mChromeTooltipListener; - ChromeContextMenuListener* mChromeContextMenuListener; + // and the DOM. + nsRefPtr mChromeTooltipListener; + nsRefPtr mChromeContextMenuListener; nsCOMPtr mPrompter; nsCOMPtr mAuthPrompter;