Skip to content

Commit f10adf2

Browse files
committed
Merge pull request #52 from caisui/fix/startup
Fix/startup
2 parents b3889d7 + 313de58 commit f10adf2

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

common/content/liberator.js

+19-3
Original file line numberDiff line numberDiff line change
@@ -524,20 +524,36 @@ const Liberator = Module("liberator", {
524524
let fileMap = services.get("liberator:").FILE_MAP;
525525
let overlayMap = services.get("liberator:").OVERLAY_MAP;
526526

527+
// XXX: util.httpGet is very heavy on startup. (Fx32)
528+
function httpGet(url) {
529+
var channel = services.get("io").newChannelFromURI(makeURI(url));
530+
try {
531+
var stream = channel.open();
532+
} catch (ex) {
533+
return null;
534+
}
535+
536+
var ps = new DOMParser;
537+
var res = ps.parseFromStream(stream, "utf-8", stream.available(), "text/xml");
538+
stream.close();
539+
return {responseXML: res};
540+
}
541+
527542
// Left as an XPCOM instantiation so it can easilly be moved
528543
// into XPCOM code.
529544
function XSLTProcessor(sheet) {
530545
let xslt = Cc["@mozilla.org/document-transformer;1?type=xslt"].createInstance(Ci.nsIXSLTProcessor);
531-
xslt.importStylesheet(util.httpGet(sheet).responseXML);
546+
xslt.importStylesheet(httpGet(sheet).responseXML);
532547
return xslt;
533548
}
534549

535550
// Find help and overlay files with the given name.
536551
function findHelpFile(file) {
537552
let result = [];
553+
538554
for (let namespace of namespaces) {
539555
let url = ["chrome://", namespace, "/locale/", file, ".xml"].join("");
540-
let res = util.httpGet(url);
556+
let res = httpGet(url);
541557
if (res) {
542558
if (res.responseXML.documentElement.localName == "document")
543559
fileMap[file] = url;
@@ -611,7 +627,7 @@ const Liberator = Module("liberator", {
611627
</document>`.toString();
612628
fileMap["plugins"] = function () ['text/xml;charset=UTF-8', help];
613629

614-
addTags("plugins", util.httpGet("liberator://help/plugins").responseXML);
630+
addTags("plugins", httpGet("liberator://help/plugins").responseXML);
615631
},
616632

617633
/**

common/content/style.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -401,10 +401,17 @@ function Styles(name, store) {
401401
this.addSheet = function (system, name, filter, css, agent) {
402402
let sheets = system ? systemSheets : userSheets;
403403
let names = system ? systemNames : userNames;
404-
if (name && name in names)
404+
let sites = filter.split(",").filter(util.identity);
405+
if (name && name in names) {
406+
let s = names[name];
407+
if (s.css === css && s.sites.join(",") === sites.join(",")) {
408+
if (!s.enabled) s.enabled = true;
409+
return null;
410+
}
405411
this.removeSheet(system, name);
412+
}
406413

407-
let sheet = Sheet(name, id++, filter.split(",").filter(util.identity), String(css), system, agent);
414+
let sheet = Sheet(name, id++, sites, String(css), system, agent);
408415

409416
try {
410417
sheet.enabled = true;

0 commit comments

Comments
 (0)