Skip to content

Commit 02f9ceb

Browse files
author
Jacob Hoffman-Andrews
committed
Changes to make it work in the browser too
1 parent 4b25d8f commit 02f9ceb

File tree

3 files changed

+27
-24
lines changed

3 files changed

+27
-24
lines changed

chromium/background.js

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
1-
function getRuleXml() {
2-
var output = "";
3-
for(var i = 0; i < rule_list.length; i++) {
4-
var xhr = new XMLHttpRequest();
5-
// Use blocking XHR to ensure everything is loaded by the time
6-
// we return.
7-
xhr.open("GET", chrome.extension.getURL(rule_list[i]), false);
8-
xhr.send(null);
9-
// Get file contents
10-
if (xhr.readyState != 4) {
11-
return;
12-
}
13-
// XXX TODO: I think you can't concat XML objects like this
14-
output += xhr.responseXML;
1+
function getRuleXml(url) {
2+
var xhr = new XMLHttpRequest();
3+
// Use blocking XHR to ensure everything is loaded by the time
4+
// we return.
5+
xhr.open("GET", chrome.extension.getURL(url), false);
6+
xhr.send(null);
7+
// Get file contents
8+
if (xhr.readyState != 4) {
9+
return;
1510
}
16-
return output;
11+
return xhr.responseXML;
1712
}
1813

19-
var all_rules = new RuleSets(navigator.userAgent, LRUCache, getRuleXml(), localStorage);
14+
var all_rules = new RuleSets(navigator.userAgent, LRUCache, localStorage);
15+
for (var i = 0; i < rule_list.length; i++) {
16+
all_rules.addFromXml(getRuleXml(rule_list[i]));
17+
}
2018
var wr = chrome.webRequest;
2119

2220
/*

chromium/rules.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ RuleSet.prototype = {
7171
};
7272

7373

74-
function RuleSets(userAgent, cache, ruleXml, ruleActiveStates) {
74+
function RuleSets(userAgent, cache, ruleActiveStates) {
7575
// Load rules into structure
7676
this.targets = {};
7777
this.userAgent = userAgent;
@@ -85,14 +85,15 @@ function RuleSets(userAgent, cache, ruleXml, ruleActiveStates) {
8585

8686
// A hash of rule name -> active status (true/false).
8787
this.ruleActiveStates = ruleActiveStates;
88-
89-
var sets = ruleXml.getElementsByTagName("ruleset");
90-
for (var i = 0; i < sets.length; ++i) {
91-
this.parseOneRuleset(sets[i]);
92-
}
9388
}
9489

9590
RuleSets.prototype = {
91+
addFromXml: function(ruleXml) {
92+
var sets = ruleXml.getElementsByTagName("ruleset");
93+
for (var i = 0; i < sets.length; ++i) {
94+
this.parseOneRuleset(sets[i]);
95+
}
96+
},
9697

9798
localPlatformRegexp: (function() {
9899
if (/(OPR|Opera)[\/\s](\d+\.\d+)/.test(this.userAgent)) {
@@ -314,4 +315,7 @@ RuleSets.prototype = {
314315
return null;
315316
}
316317
};
317-
exports.RuleSets = RuleSets;
318+
319+
// Export for HTTPS Rewriter if applicable.
320+
if (typeof exports != 'undefined')
321+
exports.RuleSets = RuleSets;

rewriter/rewriter.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ function loadRuleSets() {
8989
console.log("Loading rules...");
9090
var fileContents = fs.readFileSync(path.join(__dirname, '../pkg/crx/rules/default.rulesets'), {encoding: 'utf-8'});
9191
var xml = new DOMParser().parseFromString(fileContents, 'text/xml');
92-
ruleSets = new rules.RuleSets("fake user agent", lrucache.LRUCache, xml, {});
92+
ruleSets = new rules.RuleSets("fake user agent", lrucache.LRUCache, {});
93+
ruleSets.addFromXml(xml);
9394
}
9495

9596
loadRuleSets();

0 commit comments

Comments
 (0)