From 1d783600fbeb2d11cca1fafd5c24260a8adf1223 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sat, 14 Nov 2009 04:56:44 -0500 Subject: [PATCH] Halve the security errors at startup, but still annoyingly many of them. --- common/content/commandline.js | 6 +++--- common/content/help-single.xsl | 36 ++++++++++++++++++++++++++++++++++ common/content/liberator.js | 20 ++++++++++++++----- common/content/modules.js | 6 ------ 4 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 common/content/help-single.xsl diff --git a/common/content/commandline.js b/common/content/commandline.js index 5faa94b6..9d4ed4eb 100644 --- a/common/content/commandline.js +++ b/common/content/commandline.js @@ -642,7 +642,7 @@ const CommandLine = Module("commandline", { commandline.triggerCallback("submit", mode, command); } // user pressed or arrow to cycle this._history completion - else if (/^(|||||)$/.test(key)) { + else if (/^<(Up|Down|S-Up|S-Down|PageUp|PageDown)>$/.test(key)) { // prevent tab from moving to the next field event.preventDefault(); event.stopPropagation(); @@ -651,7 +651,7 @@ const CommandLine = Module("commandline", { this._history.select(/Up/.test(key), !/(Page|S-)/.test(key)); } // user pressed to get completions of a command - else if (key == "" || key == "") { + else if (/^<(Tab|S-Tab)>$/.test(key)) { // prevent tab from moving to the next field event.preventDefault(); event.stopPropagation(); @@ -675,7 +675,7 @@ const CommandLine = Module("commandline", { } else if (event.type == "keyup") { let key = events.toString(event); - if (key == "" || key == "") + if (/^<(Tab|S-Tab)>$/.test(key)) this._tabTimer.flush(); } }, diff --git a/common/content/help-single.xsl b/common/content/help-single.xsl new file mode 100644 index 00000000..1f3b33fb --- /dev/null +++ b/common/content/help-single.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + +
diff --git a/common/content/liberator.js b/common/content/liberator.js index 433287fd..c49147ac 100644 --- a/common/content/liberator.js +++ b/common/content/liberator.js @@ -544,15 +544,20 @@ const Liberator = Module("liberator", { initHelp: function () { let namespaces = [config.name.toLowerCase(), "liberator"]; services.get("liberator:").init({}); + let tagMap = services.get("liberator:").HELP_TAGS; let fileMap = services.get("liberator:").FILE_MAP; let overlayMap = services.get("liberator:").OVERLAY_MAP; + + // Left as an XPCOM instantiation so it can easilly be moved + // into XPCOM code. function XSLTProcessor(sheet) { let xslt = Cc["@mozilla.org/document-transformer;1?type=xslt"].createInstance(Ci.nsIXSLTProcessor); xslt.importStylesheet(util.httpGet(sheet).responseXML); return xslt; } + // Find help and overlay files with the given name. function findHelpFile(file) { let result = []; for (let [, namespace] in Iterator(namespaces)) { @@ -568,29 +573,36 @@ const Liberator = Module("liberator", { } return result; } + // Find the tags in the document. function addTags(file, doc) { doc = XSLT.transformToDocument(doc); for (let elem in util.evaluateXPath("//xhtml:a/@id", doc)) tagMap[elem.value] = file; } - const XSLT = XSLTProcessor("chrome://liberator/content/help.xsl"); + const XSLT = XSLTProcessor("chrome://liberator/content/help-single.xsl"); + // Scrape the list of help files from all.xml + // Always process main and overlay files, since XSLTProcessor and + // XMLHttpRequest don't allow access to chrome documents. tagMap.all = "all"; let files = findHelpFile("all").map(function (doc) [f.value for (f in util.evaluateXPath( "//liberator:include/@href", doc))]); + // Scrape the tags from the rest of the help files. util.Array.flatten(files).forEach(function (file) { findHelpFile(file).forEach(function (doc) { addTags(file, doc); }); }); + // Process plugin help entries. XML.ignoreWhiteSpace = false; XML.prettyPrinting = false; XML.prettyPrinting = true; // Should be false, but ignoreWhiteSpace=false doesn't work correctly. This is the lesser evil. XML.prettyIndent = 4; + let body = XML(); for (let [, context] in Iterator(plugins.contexts)) if (context.INFO instanceof XML) @@ -600,10 +612,8 @@ const Liberator = Module("liberator", { let help = '\n' + '\n' + '' + - +

Using Plugins

{body} diff --git a/common/content/modules.js b/common/content/modules.js index 40deeca9..f29b8a0f 100644 --- a/common/content/modules.js +++ b/common/content/modules.js @@ -92,12 +92,6 @@ window.addEventListener("load", function () { function init(mod, module) function () module.INIT[mod].call(modules[module.name], modules[mod]); - function init(mod, module) - function () { - if (!(mod in modules)) - dump(mod + " not in modules"); - return module.INIT[mod].call(modules[module.name], modules[mod]); - } for (let mod in values(loaded)) { try { if (mod in module.INIT)