diff --git a/common/content/contexts.js b/common/content/contexts.js index 9e57e90f..2b4dace4 100644 --- a/common/content/contexts.js +++ b/common/content/contexts.js @@ -134,6 +134,10 @@ var Contexts = Module("contexts", { dactyl.trapErrors("cleanup", hive); dactyl.trapErrors("destroy", hive); } + + for (let plugin in values(plugins.contexts)) + if (plugin.onUnload) + dactyl.trapErrors("onUnload", plugin); }, context: null, @@ -162,8 +166,8 @@ var Contexts = Module("contexts", { this.groupList.unshift(group); this.groupMap[name] = group; this.hiveProto.__defineGetter__(name, function () group[this._hive]); - delete this.groups; } + delete this.groups; return group; }, @@ -309,7 +313,7 @@ var Contexts = Module("contexts", { if (!group) group = contexts.addGroup((isRuntime ? "" : "script-") + - commands.nameRegexp.iterate(path.replace(/\..*/, "")) + commands.nameRegexp.iterate(path.replace(/\.[^.]*$/, "")) .join("-"), "Script group for " + file.path, null, false); diff --git a/common/content/marks.js b/common/content/marks.js index b7df2c89..73a9805d 100644 --- a/common/content/marks.js +++ b/common/content/marks.js @@ -288,17 +288,17 @@ var Marks = Module("marks", { function matchhost(url) !host || util.isDomainURL(url, host); function match(marks) (k for ([k, v] in Iterator(marks)) if (timespan.contains(v.timestamp) && matchhost(v.location))); - for (let [url, local] in storage["local-marks"]) + for (let [url, local] in marks._localMarks) if (matchhost(url)) { for (let key in match(local)) delete local[key]; if (!Object.keys(local).length) - storage["local-marks"].remove(url); + marks._localMarks.remove(url); } - storage["local-marks"].changed(); + marks._localMarks.changed(); - for (let key in match(storage["url-marks"])) - storage["url-marks"].remove(key); + for (let key in match(marks._urlMarks)) + marks._urlMarks.remove(key); } }); } diff --git a/common/modules/io.jsm b/common/modules/io.jsm index f4abbfdf..57d5f8be 100644 --- a/common/modules/io.jsm +++ b/common/modules/io.jsm @@ -84,9 +84,6 @@ var IO = Module("io", { destroy: function destroy() { services.downloadManager.removeListener(this.downloadListener); - for (let [, plugin] in Iterator(plugins.contexts)) - if (plugin.onUnload) - plugin.onUnload(); }, /**