summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere-eff@eff.org/components
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/https-everywhere-eff@eff.org/components')
-rw-r--r--data/extensions/https-everywhere-eff@eff.org/components/https-everywhere.js23
-rw-r--r--data/extensions/https-everywhere-eff@eff.org/components/ssl-observatory.js7
2 files changed, 27 insertions, 3 deletions
diff --git a/data/extensions/https-everywhere-eff@eff.org/components/https-everywhere.js b/data/extensions/https-everywhere-eff@eff.org/components/https-everywhere.js
index 84f2cd8..c360dad 100644
--- a/data/extensions/https-everywhere-eff@eff.org/components/https-everywhere.js
+++ b/data/extensions/https-everywhere-eff@eff.org/components/https-everywhere.js
@@ -246,7 +246,8 @@ HTTPSEverywhere.prototype = {
QueryInterface: XPCOMUtils.generateQI(
[ Components.interfaces.nsIObserver,
Components.interfaces.nsISupports,
- Components.interfaces.nsISupportsWeakReference ]),
+ Components.interfaces.nsISupportsWeakReference,
+ Components.interfaces.nsIChannelEventSink ]),
wrappedJSObject: null, // Initialized by constructor
@@ -568,7 +569,7 @@ HTTPSEverywhere.prototype = {
break;
}
} else if (topic == "browser:purge-session-history") {
- // The list of rulesets that have been loaded from the sqlite DB
+ // The list of rulesets that have been loaded from the JSON DB
// constitutes a parallel history store, so we have to clear it.
this.log(DBUG, "History cleared, reloading HTTPSRules to avoid information leak.");
HTTPSRules.init();
@@ -641,6 +642,19 @@ HTTPSEverywhere.prototype = {
return cohort;
},
+ // nsIChannelEventSink implementation
+ // XXX This was here for rewrites in the past. Do we still need it?
+ onChannelRedirect: function(oldChannel, newChannel, flags) {
+ const uri = newChannel.URI;
+ this.log(DBUG,"Got onChannelRedirect to "+uri.spec);
+ if (!(newChannel instanceof CI.nsIHttpChannel)) {
+ this.log(DBUG, newChannel + " is not an instance of nsIHttpChannel");
+ return;
+ }
+ var alist = this.juggleApplicableListsDuringRedirection(oldChannel, newChannel);
+ HTTPS.replaceChannel(alist, newChannel, this.httpNowhereEnabled);
+ },
+
juggleApplicableListsDuringRedirection: function(oldChannel, newChannel) {
// If the new channel doesn't yet have a list of applicable rulesets, start
// with the old one because that's probably a better representation of how
@@ -662,6 +676,11 @@ HTTPSEverywhere.prototype = {
return new_alist;
},
+ asyncOnChannelRedirect: function(oldChannel, newChannel, flags, callback) {
+ this.onChannelRedirect(oldChannel, newChannel, flags);
+ callback.onRedirectVerifyCallback(0);
+ },
+
get_prefs: function(prefBranch) {
if(!prefBranch) prefBranch = PREFBRANCH_ROOT;
diff --git a/data/extensions/https-everywhere-eff@eff.org/components/ssl-observatory.js b/data/extensions/https-everywhere-eff@eff.org/components/ssl-observatory.js
index 6ead746..6037119 100644
--- a/data/extensions/https-everywhere-eff@eff.org/components/ssl-observatory.js
+++ b/data/extensions/https-everywhere-eff@eff.org/components/ssl-observatory.js
@@ -313,7 +313,12 @@ SSLObservatory.prototype = {
function toHexString(charCode) {
return ("0" + charCode.toString(16)).slice(-2);
}
- return [toHexString(h.charCodeAt(i)) for (i in h)].join("").toUpperCase();
+
+ var hexArr = [];
+ for (i in h){
+ hexArr.push(toHexString(h.charCodeAt(i)));
+ }
+ return hexArr.join("").toUpperCase();
},
ourFingerprint: function(cert) {