From 707af9e1fab7ac2b1db5c30c95ea00874d47f94b Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Sun, 6 Feb 2011 20:00:57 -0500 Subject: [PATCH] Fix sanitizer initialization. Add tests. --- common/modules/base.jsm | 2 +- common/modules/javascript.jsm | 2 ++ common/modules/overlay.jsm | 18 +++++++++--------- common/tests/functional/testCommands.js | 19 ++++++++++++++++++- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/common/modules/base.jsm b/common/modules/base.jsm index 1b1293bc..12f3c9be 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -1012,7 +1012,7 @@ var Timer = Class("Timer", { notify: function (timer, force) { try { - if (util.rehashing || typeof util === "undefined" || !force && this.doneAt == 0) + if (loaded.util && util.rehashing || typeof util === "undefined" || !force && this.doneAt == 0) return; this._timer.cancel(); diff --git a/common/modules/javascript.jsm b/common/modules/javascript.jsm index d66f0323..e65f3a64 100644 --- a/common/modules/javascript.jsm +++ b/common/modules/javascript.jsm @@ -36,6 +36,8 @@ var JavaScript = Module("javascript", { }, }), + lazyInit: true, + newContext: function () this.modules.newContext(this.modules.userContext), get completers() JavaScript.completers, // For backward compatibility diff --git a/common/modules/overlay.jsm b/common/modules/overlay.jsm index b34f60b3..e0c24b5a 100644 --- a/common/modules/overlay.jsm +++ b/common/modules/overlay.jsm @@ -290,18 +290,18 @@ var Overlay = Module("Overlay", { }); }); - function frob(name) { - // util.dump(" ======================== FROB " + name + " ======================== "); - (deferredInit[name] || []).forEach(call); - } + function frob(name) { (deferredInit[name] || []).forEach(call); } frob("init"); - defineModule.modules.forEach(function ({ constructor: { className } }) { - modules.__defineGetter__(className, function () { - delete modules[className]; + defineModule.modules.forEach(function ({ lazyInit, constructor: { className } }) { + if (!lazyInit) frob(className); - return modules[className] = modules[className]; - }); + else + modules.__defineGetter__(className, function () { + delete modules[className]; + frob(className); + return modules[className] = modules[className]; + }); }); // Module.list.forEach(load); diff --git a/common/tests/functional/testCommands.js b/common/tests/functional/testCommands.js index 62eefa5c..60fc7b8f 100644 --- a/common/tests/functional/testCommands.js +++ b/common/tests/functional/testCommands.js @@ -483,7 +483,24 @@ var tests = { sanitize: { // Skip details for now. completions: [ - "", + ["", function (context) ["all", + "cache", + "downloads", + "formdata", + "offlineapps", + "passwords", + "sessions", + "cookies", + "history", + "host", + "sitesettings", + "commandline", + "messages", + "macros", + "marks", + "options" + ].every(function (item) context.allItems.items.some(function ({ text }) item == text)) + ], "-", "-host=", "-timespan="