[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [https-everywhere/master] apply observer patch from Justin Samuel for RequestPolicy compatibility (#1574)
Author: Seth Schoen <schoen@xxxxxxx>
Date: Mon, 1 Nov 2010 19:09:17 -0700
Subject: apply observer patch from Justin Samuel for RequestPolicy compatibility (#1574)
Commit: 2a373b5824fb8642dc05deb3e1c06b5f39496ef9
see https://trac.torproject.org/projects/tor/ticket/1574
---
src/chrome/content/code/HTTPSRules.js | 2 ++
src/components/https-everywhere.js | 27 ++++++++++++++++++++++++---
2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/src/chrome/content/code/HTTPSRules.js b/src/chrome/content/code/HTTPSRules.js
index be7ee7b..7f3bcd7 100644
--- a/src/chrome/content/code/HTTPSRules.js
+++ b/src/chrome/content/code/HTTPSRules.js
@@ -97,6 +97,8 @@ RuleSet.prototype = {
var newuri = this.rewrittenURI(uri);
if (!newuri) return false;
this.log(NOTE,"Rewriting " + uri.spec + " -> " + newuri.spec + "\n");
+ HTTPSEverywhere.instance.notifyObservers(uri, newuri.spec);
+
uri.scheme = newuri.scheme;
uri.userPass = newuri.userPass;
uri.username = newuri.username;
diff --git a/src/components/https-everywhere.js b/src/components/https-everywhere.js
index 9ba17de..03a04b7 100644
--- a/src/components/https-everywhere.js
+++ b/src/components/https-everywhere.js
@@ -96,6 +96,8 @@ const DUMMYOBJ = {};
const EARLY_VERSION_CHECK = !("nsISessionStore" in CI && typeof(/ /) === "object");
+const OBSERVER_TOPIC_URI_REWRITE = "https-everywhere-uri-rewrite";
+
function xpcom_generateQI(iids) {
var checks = [];
for each (var iid in iids) {
@@ -131,10 +133,12 @@ function HTTPSEverywhere() {
// https://developer.mozilla.org/en/Observer_Notifications
// https://developer.mozilla.org/en/nsIObserverService.
// https://developer.mozilla.org/en/nsIObserver
- var obsService = CC["@mozilla.org/observer-service;1"]
+ // We also use the observer service to let other extensions know about URIs
+ // we rewrite.
+ this.obsService = CC["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
- obsService.addObserver(this, "profile-before-change", false);
- obsService.addObserver(this, "profile-after-change", false);
+ this.obsService.addObserver(this, "profile-before-change", false);
+ this.obsService.addObserver(this, "profile-after-change", false);
return;
}
@@ -336,6 +340,23 @@ HTTPSEverywhere.prototype = {
return o_branch;
},
+ /**
+ * Notify observers of the topic OBSERVER_TOPIC_URI_REWRITE.
+ *
+ * @param nsIURI oldURI
+ * @param string newSpec
+ */
+ notifyObservers: function(oldURI, newSpec) {
+ this.log(INFO, "Notifying observers of rewrite from " + oldURI.spec + " to " + newSpec);
+ try {
+ // The subject has to be an nsISupports and the extra data is a string,
+ // that's why one is an nsIURI and the other is a nsIURI.spec string.
+ this.obsService.notifyObservers(oldURI, OBSERVER_TOPIC_URI_REWRITE, newSpec);
+ } catch (e) {
+ this.log(WARN, "Couldn't notify observers: " + e);
+ }
+ }
+
};
var prefs = 0;
--
1.7.1