[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r14807: Fix favicon leakage on FF3. (torbutton/trunk/src/chrome/content)
Author: mikeperry
Date: 2008-05-29 00:32:34 -0400 (Thu, 29 May 2008)
New Revision: 14807
Modified:
torbutton/trunk/src/chrome/content/torbutton.js
Log:
Fix favicon leakage on FF3.
Modified: torbutton/trunk/src/chrome/content/torbutton.js
===================================================================
--- torbutton/trunk/src/chrome/content/torbutton.js 2008-05-29 04:14:48 UTC (rev 14806)
+++ torbutton/trunk/src/chrome/content/torbutton.js 2008-05-29 04:32:34 UTC (rev 14807)
@@ -1703,12 +1703,39 @@
// This observer is to catch some additional http load events
// to deal with firefox bug 401296
+// TODO: One of these days we should probably unify these http observers
+// with our content policy, like NoScript does.
var torbutton_http_observer = {
observe : function(subject, topic, data) {
torbutton_eclog(2, 'Examine response: '+subject.name);
if (!((subject instanceof Components.interfaces.nsIHttpChannel)
- && (subject.loadFlags & Components.interfaces.nsIChannel.LOAD_DOCUMENT_URI)))
+ && (subject.loadFlags & Components.interfaces.nsIChannel.LOAD_DOCUMENT_URI))) {
+ // FIXME: FF3 no longer calls the contet policy for favicons.
+ // This is the workaround. Fun fun fun.
+ if(m_tb_ff3) {
+ try {
+ var wind = subject.notificationCallbacks.QueryInterface(
+ Components.interfaces.nsIInterfaceRequestor).getInterface(
+ Components.interfaces.nsIDOMWindow);
+
+ if(wind instanceof Components.interfaces.nsIDOMChromeWindow) {
+ if(wind.browserDOMWindow) {
+ var browser = wind.getBrowser().selectedTab.linkedBrowser;
+ // This can happen in the first request of a new state.
+ if((typeof(browser.__tb_tor_fetched) != "undefined")
+ && browser.__tb_tor_fetched !=
+ m_tb_prefs.getBoolPref("extensions.torbutton.tor_enabled")) {
+ subject.cancel(0x804b0002); // NS_BINDING_ABORTED
+ torbutton_eclog(3, 'Cancelling opposing (favicon?) request: '+subject.name);
+ }
+ }
+ }
+ } catch(e) {
+ torbutton_eclog(2, 'Failure cancelling opposing (favicon?) request '+subject.name+': '+e);
+ }
+ }
return;
+ }
if (topic == "http-on-examine-response") {
torbutton_eclog(3, 'Definitaly Examine response: '+subject.name);
torbutton_check_progress(null, subject);