commit 4afb4f104685466ee0ac4f98fda7dd57d6d522c2 Author: Kathy Brade brade@pearlcrescent.com Date: Wed Oct 14 15:19:20 2015 -0400
Bug 16620: Transform window.name handling into Firefox patch.
Removed torbutton_weblistener and torbutton_check_progress(). --- src/chrome/content/torbutton.js | 173 --------------------------------------- 1 file changed, 173 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js index fb9c8c3..58ab20e 100644 --- a/src/chrome/content/torbutton.js +++ b/src/chrome/content/torbutton.js @@ -2907,15 +2907,6 @@ function torbutton_do_main_window_startup() { torbutton_log(3, "Torbutton main window startup"); m_tb_is_main_window = true; - - // http://www.xulplanet.com/references/xpcomref/ifaces/nsIWebProgress.html - var progress = - Components.classes["@mozilla.org/docloaderservice;1"]. - getService(Components.interfaces.nsIWebProgress); - - progress.addProgressListener(torbutton_weblistener, - Components.interfaces.nsIWebProgress.NOTIFY_LOCATION); - torbutton_unique_pref_observer.register(); }
@@ -3181,11 +3172,6 @@ function torbutton_close_window(event) { } }
- // remove old listeners - var progress = Components.classes["@mozilla.org/docloaderservice;1"]. - getService(Components.interfaces.nsIWebProgress); - - progress.removeProgressListener(torbutton_weblistener); torbutton_unique_pref_observer.unregister();
if(m_tb_is_main_window) { // main window not reset above @@ -3209,165 +3195,6 @@ function torbutton_open_network_settings() { window.addEventListener('load',torbutton_new_window,false); window.addEventListener('unload', torbutton_close_window, false);
-// FIXME: Tons of exceptions get thrown from this function on account -// of its being called so early. Need to find a quick way to check if -// aProgress and aRequest are actually fully initialized -// (without throwing exceptions) -// Bug 1506 P0: This is to block full page plugins. Not needed anymore -// due to better (but non-toggle-friendly) plugin APIs) -function torbutton_check_progress(aProgress, aRequest, aFlags, new_loc) { - if (!m_tb_wasinited) { - torbutton_init(); - } - - var DOMWindow = null; - - // Bug #866: Zotero conflict with about:blank windows - // handle docshell JS switching and other early duties - var WP_STATE_START = Ci.nsIWebProgressListener.STATE_START; - var WP_STATE_DOC = Ci.nsIWebProgressListener.STATE_IS_DOCUMENT; - var WP_STATE_START_DOC = WP_STATE_START | WP_STATE_DOC; - - if ((aFlags & WP_STATE_START_DOC) == WP_STATE_START_DOC - && aRequest instanceof Ci.nsIChannel - && !(aRequest.loadFlags & aRequest.LOAD_INITIAL_DOCUMENT_URI) - && aRequest.URI.spec == "about:blank") { - torbutton_log(3, "Passing on about:blank"); - return 0; - } - - if(aProgress) { - try { - DOMWindow = aProgress.DOMWindow; - } catch(e) { - torbutton_log(4, "Exception on DOMWindow: "+e); - DOMWindow = null; - } - } - - if(!DOMWindow) { - try { - if(aRequest.notificationCallbacks) { - DOMWindow = aRequest.notificationCallbacks.QueryInterface( - Components.interfaces.nsIInterfaceRequestor).getInterface( - Components.interfaces.nsIDOMWindow); - } - } catch(e) { } - } - - // TODO: separate this from the above? - if(DOMWindow) { - var doc = DOMWindow.document; - try { - if(doc) { - if(doc.domain) { - var referrer = null; - var win = DOMWindow.window; - - try { - var hreq = aRequest.QueryInterface(Ci.nsIHttpChannel); - referrer = hreq.referrer; - } catch(e) {} - - try { - // XXX: The patch from https://bugzilla.mozilla.org/show_bug.cgi?id=444222 - // might be better here.. - // - // Ticket #3414: Apply referer policy to window.name. - // - // This keeps window.name clean between fresh urls. - // It should also apply to iframes because hookdoc gets called for all - // frames and subdocuments. - // - // The about:blank check handles the 'name' attribute of framesets, which - // get set before the referer is set on the channel. - if ((!referrer || referrer.spec == "") && win.location != "about:blank") { - if (win.top == win.window) { - // Only reset if we're the top-level window - //torbutton_log(4, "Resetting window.name: "+win.name+" for "+win.location); - win.name = ""; - win.window.name = ""; - } - } - } catch(e) { - torbutton_log(4, "Failed to reset window.name: "+e) - } - } - } - } catch(e) { - try { - if(doc && doc.location && - (doc.location.href.indexOf("about:") != 0 && - doc.location.href.indexOf("chrome:") != 0)) { - torbutton_safelog(4, "Exception "+e - +" on tag application at: ", - doc.location); - } else { - torbutton_eclog(3, "Got an about url: "+e); - } - } catch(e1) { - torbutton_eclog(3, "Got odd url "+e); - } - } - } else { - torbutton_eclog(3, "No aProgress for location!"); - } - return 0; -} - -// Warning: These can also fire when the 'debuglogger' extension -// updates its window. Typically for this, doc.domain is null. Do not -// log in this case (until we find a better way to filter those -// events out). Use torbutton_eclog for common-path stuff.] -// -// Bug 1506 P0: This listener is for blocking plugins and installing JS hooks. -// It can be eliminated. -var torbutton_weblistener = -{ - QueryInterface: function(aIID) - { - if (aIID.equals(Components.interfaces.nsIWebProgressListener) || - aIID.equals(Components.interfaces.nsISupportsWeakReference) || - aIID.equals(Components.interfaces.nsISupports)) - return this; - throw Components.results.NS_NOINTERFACE; - }, - - onLocationChange: function(aProgress, aRequest, aURI) - { - torbutton_eclog(2, 'onLocationChange: '+aURI.asciiSpec); - if(aURI.scheme == "about" || aURI.scheme == "chrome") { - torbutton_eclog(3, "Skipping location change for "+aURI.asciiSpec); - } else { - return torbutton_check_progress(aProgress, aRequest, 0, true); - } - }, - - // XXX: The following can probably go - onStateChange: function(aProgress, aRequest, aFlag, aStatus) - { - torbutton_eclog(2, 'State change()'); - return torbutton_check_progress(aProgress, aRequest, aFlag, false); - }, - - onProgressChange: function(aProgress, aRequest, curSelfProgress, maxSelfProgress, curTotalProgress, maxTotalProgress) - { - torbutton_eclog(2, 'called progressChange'); - return torbutton_check_progress(aProgress, aRequest, 0, false); - }, - - onStatusChange: function(aProgress, aRequest, stat, message) - { - torbutton_eclog(2, 'called progressChange'); - return torbutton_check_progress(aProgress, aRequest, 0, false); - }, - - onSecurityChange: function() {return 0;}, - - onLinkIconAvailable: function() - { /*torbutton_eclog(1, 'called linkIcon'); */ return 0; } -} - var m_tb_resize_handler = null; var m_tb_resize_date = null;