commit 0f9c8fc79b9e0c3411c2aedf18ad24b4596172a0 Author: Kathy Brade brade@pearlcrescent.com Date: Thu Feb 9 11:37:20 2017 -0500
Bug 21201: Avoid accessing contentWindow inside torbutton_resizelistener.
Also, use Cc, Ci, and Cr inside torbutton_resizelistener. --- src/chrome/content/torbutton.js | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js index 44f01f9..f521a6c 100644 --- a/src/chrome/content/torbutton.js +++ b/src/chrome/content/torbutton.js @@ -2204,26 +2204,16 @@ var torbutton_resizelistener = { QueryInterface: function(aIID) { - if (aIID.equals(Components.interfaces.nsIWebProgressListener) || - aIID.equals(Components.interfaces.nsISupportsWeakReference) || - aIID.equals(Components.interfaces.nsISupports)) + if (aIID.equals(Ci.nsIWebProgressListener) || + aIID.equals(Ci.nsISupportsWeakReference) || + aIID.equals(Ci.nsISupports)) return this; - throw Components.results.NS_NOINTERFACE; + throw Cr.NS_NOINTERFACE; },
onLocationChange: function(aProgress, aRequest, aURI) {}, onStateChange: function(aProgress, aRequest, aFlag, aStatus) { - if (aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) { - var progress = - Components.classes["@mozilla.org/docloaderservice;1"]. - getService(Components.interfaces.nsIWebProgress); - var win = getBrowser().contentWindow; - if (!win || typeof(win) == "undefined") { - torbutton_log(5, "No initial browser content window?"); - progress.removeProgressListener(this); - return; - } - + if (aFlag & Ci.nsIWebProgressListener.STATE_STOP) { m_tb_resize_handler = function() { if (window.windowState === 1) { if (m_tb_prefs. @@ -2301,6 +2291,8 @@ var torbutton_resizelistener = // event got fired. Thus, we have the rather klunky setTimeout() call. window.addEventListener("sizemodechange", m_tb_resize_handler, false);
+ let progress = Cc["@mozilla.org/docloaderservice;1"] + .getService(Ci.nsIWebProgress); progress.removeProgressListener(this); } }, // onStateChange