Skip to content

Commit e211426

Browse files
Mike Perrypde
authored andcommitted
Create some temporaries to optimize XML parsing.
Startup time slowed a bit due to the fix for https://trac.torproject.org/projects/tor/ticket/5893. Conflicts: src/chrome/content/code/HTTPSRules.js
1 parent a1d02f1 commit e211426

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/chrome/content/code/HTTPSRules.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,12 @@ const RuleWriter = {
253253
this.parseOneRuleset(xmldom.documentElement, rule_store, file);
254254
} else {
255255
// The root of the XML tree is assumed to look like a <rulesetlibrary>
256-
var lngth = xmldom.documentElement.getElementsByTagName("ruleset").length; // premature optimisation
257-
if (lngth == 0 && (file.path.search("00README") == -1))
256+
var rulesets = xmldom.documentElement.getElementsByTagName("ruleset");
257+
if (rulesets.length == 0 && (file.path.search("00README") == -1))
258258
this.log(WARN, "Probable <rulesetlibrary> with no <rulesets> in "
259259
+ file.path + "\n" + xmldom);
260-
for (var j = 0; j < lngth; j++)
261-
this.parseOneRuleset(xmldom.getElementsByTagName("ruleset")[j], rule_store, file);
260+
for (var j = 0; j < rulesets.length; j++)
261+
this.parseOneRuleset(rulesets[j], rule_store, file);
262262
}
263263
},
264264

@@ -275,7 +275,8 @@ const RuleWriter = {
275275
var dflt_off = xmlruleset.getAttribute("default_off");
276276
var rs = new RuleSet(xmlruleset.getAttribute("name"), xmlruleset.getAttribute("f"), match_rl, dflt_off);
277277

278-
if (xmlruleset.getElementsByTagName("target").length == 0) {
278+
var targets = xmlruleset.getElementsByTagName("target");
279+
if (targets.length == 0) {
279280
var msg = "Error: As of v0.3.0, XML rulesets require a target domain entry,";
280281
msg = msg + "\nbut " + file.path + " is missing one.";
281282
this.log(WARN, msg);
@@ -291,8 +292,8 @@ const RuleWriter = {
291292

292293
// add this ruleset into HTTPSRules.targets with all of the applicable
293294
// target host indexes
294-
for (var i = 0; i < xmlruleset.getElementsByTagName("target").length; i++) {
295-
var host = xmlruleset.getElementsByTagName("target")[i].getAttribute("host");
295+
for (var i = 0; i < targets.length; i++) {
296+
var host = targets[i].getAttribute("host");
296297
if (!host) {
297298
this.log(WARN, "<target> missing host in " + file.path);
298299
return null;
@@ -302,20 +303,23 @@ const RuleWriter = {
302303
rule_store.targets[host].push(rs);
303304
}
304305

305-
for (var i = 0; i < xmlruleset.getElementsByTagName("exclusion").length; i++) {
306-
var exclusion = new Exclusion(xmlruleset.getElementsByTagName("exclusion")[i].getAttribute("pattern"));
306+
var exclusions = xmlruleset.getElementsByTagName("exclusion");
307+
for (var i = 0; i < exclusions.length; i++) {
308+
var exclusion = new Exclusion(exclusions[i].getAttribute("pattern"));
307309
rs.exclusions.push(exclusion);
308310
}
309311

310-
for (var i = 0; i < xmlruleset.getElementsByTagName("rule").length; i++) {
311-
var rule = new Rule(xmlruleset.getElementsByTagName("rule")[i].getAttribute("from"),
312-
xmlruleset.getElementsByTagName("rule")[i].getAttribute("to"));
312+
var rules = xmlruleset.getElementsByTagName("rule");
313+
for (var i = 0; i < rules.length; i++) {
314+
var rule = new Rule(rules[i].getAttribute("from"),
315+
rules[i].getAttribute("to"));
313316
rs.rules.push(rule);
314317
}
315318

316-
for (var i = 0; i < xmlruleset.getElementsByTagName("securecookie").length; i++) {
317-
var c_rule = new CookieRule(xmlruleset.getElementsByTagName("securecookie")[i].getAttribute("host"),
318-
xmlruleset.getElementsByTagName("securecookie")[i].getAttribute("name"));
319+
var securecookies = xmlruleset.getElementsByTagName("securecookie");
320+
for (var i = 0; i < securecookies.length; i++) {
321+
var c_rule = new CookieRule(securecookies[i].getAttribute("host"),
322+
securecookies[i].getAttribute("name"));
319323
rs.cookierules.push(c_rule);
320324
this.log(DBUG,"Cookie rule "+ c_rule.host+ " " +c_rule.name);
321325
}

0 commit comments

Comments
 (0)