[Pkg-mozext-commits] [requestpolicy] 158/257: [ref] use common pattern for all *.js(m) files

David Prévot taffit at moszumanska.debian.org
Thu Jan 28 03:20:08 UTC 2016


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository requestpolicy.

commit 8d4243f6769affca02dd910c616c7ee5affbea03
Author: Martin Kimmerle <dev at 256k.de>
Date:   Tue Dec 1 00:32:30 2015 +0100

    [ref] use common pattern for all *.js(m) files
---
 src/bootstrap.js                                   | 34 +++++---
 src/content/lib/default-preferences.js             |  1 +
 src/content/lib/environment.jsm                    | 23 +++---
 .../lib/framescript-to-overlay-communication.jsm   | 27 ++++---
 src/content/lib/gui-location.jsm                   | 35 +++++----
 src/content/lib/http-response.jsm                  | 30 ++++----
 src/content/lib/logger.jsm                         | 34 ++++----
 src/content/lib/manager-for-event-listeners.jsm    | 22 +++---
 src/content/lib/manager-for-message-listeners.jsm  | 24 +++---
 src/content/lib/observer-manager.jsm               | 35 ++++-----
 src/content/lib/old-rules.jsm                      | 30 ++++----
 src/content/lib/policy-manager.alias-functions.js  | 12 +++
 src/content/lib/policy-manager.jsm                 | 52 ++++++++-----
 src/content/lib/prefs.jsm                          | 24 +++---
 src/content/lib/request-processor.compat.js        | 19 +++--
 src/content/lib/request-processor.jsm              | 90 ++++++++++++++--------
 src/content/lib/request-processor.redirects.js     | 48 ++++++------
 src/content/lib/request-result.jsm                 | 21 +++--
 src/content/lib/request-set.jsm                    | 26 ++++---
 src/content/lib/request.jsm                        | 40 ++++++----
 src/content/lib/ruleset-storage.jsm                | 20 ++---
 src/content/lib/ruleset.jsm                        | 41 +++++++---
 src/content/lib/script-loader.jsm                  | 23 +++---
 src/content/lib/subscription.jsm                   | 37 +++++----
 src/content/lib/utils.jsm                          | 27 ++++---
 src/content/lib/utils/constants.jsm                |  8 +-
 src/content/lib/utils/dom.jsm                      | 11 ++-
 src/content/lib/utils/domains.jsm                  | 34 ++++----
 src/content/lib/utils/files.jsm                    | 18 +++--
 src/content/lib/utils/info.jsm                     | 33 ++++----
 src/content/lib/utils/observers.jsm                | 19 +++--
 src/content/lib/utils/strings.jsm                  | 19 ++---
 src/content/lib/utils/windows.jsm                  | 20 +++--
 src/content/lib/utils/xul.jsm                      | 29 +++----
 src/content/main/about-uri.jsm                     | 34 ++++----
 src/content/main/content-policy.jsm                | 46 ++++++-----
 src/content/main/default-pref-handler.js           | 28 +++----
 src/content/main/pref-manager.jsm                  | 36 +++++----
 src/content/main/requestpolicy-service.jsm         | 55 +++++++------
 src/content/main/window-manager-toolbarbutton.js   | 28 +++++--
 src/content/main/window-manager.jsm                | 58 ++++++++------
 src/content/main/window-manager.listener.js        | 13 +++-
 src/content/ui/classicmenu.js                      | 30 ++++----
 src/content/ui/frame.blocked-content.js            |  3 +
 src/content/ui/frame.dom-content-loaded.js         | 17 +++-
 src/content/ui/frame.js                            | 70 +++++------------
 src/content/ui/menu.js                             | 53 +++++++------
 src/content/ui/overlay.js                          | 55 ++++++-------
 src/content/ui/request-log.filtering.js            | 19 ++---
 src/content/ui/request-log.interface.js            | 24 +++---
 src/content/ui/request-log.js                      | 23 +++---
 src/content/ui/request-log.tree-view.js            | 19 +----
 src/content/ui/xul-trees.js                        |  2 +
 53 files changed, 878 insertions(+), 701 deletions(-)

diff --git a/src/bootstrap.js b/src/bootstrap.js
index a31b057..81ab215 100644
--- a/src/bootstrap.js
+++ b/src/bootstrap.js
@@ -21,11 +21,16 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
+
+/* exported startup, shutdown, install, uninstall */
+/* global dump */
+
+//==============================================================================
+// utilities
+//==============================================================================
 
-var mod = {};
 const envURI = "chrome://rpcontinued/content/lib/environment.jsm";
 
 /**
@@ -38,22 +43,27 @@ function logSevereError(msg, e) {
   Cu.reportError(e);
 }
 
+//==============================================================================
+// bootstrap functions
+//==============================================================================
+
 function startup(data, reason) {
   try {
-    // Import the ProcessEnvironment and call its startup() function.
-    Cu.import(envURI, mod);
-    mod.ProcessEnvironment.startup(arguments);
+    let {ProcessEnvironment} = Cu.import(envURI, {});
+    // Remark: startup() takes the arguments as an array!
+    ProcessEnvironment.startup([data, reason]);
   } catch(e) {
     logSevereError("startup() failed!", e);
   }
 }
 
 function shutdown(data, reason) {
-
   try {
-    // shutdown, unset and unload.
-    mod.ProcessEnvironment.shutdown(arguments);
-    mod = {};
+    {
+      let {ProcessEnvironment} = Cu.import(envURI, {});
+      // Remark: shutdown() takes the arguments as an array!
+      ProcessEnvironment.shutdown([data, reason]);
+    }
     Cu.unload(envURI);
   } catch(e) {
     logSevereError("shutdown() failed!", e);
@@ -68,7 +78,7 @@ function install(data, reason) {
   //               images and locales, their caches are flushed.
   // Note: Due to Bug 1144248 this has to be done in the
   //       `install` function.
-  Components.utils.import("resource://gre/modules/Services.jsm");
+  let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
   Services.obs.notifyObservers(null, "chrome-flush-caches", null);
 }
 
diff --git a/src/content/lib/default-preferences.js b/src/content/lib/default-preferences.js
index 557b52a..cf8dbdd 100644
--- a/src/content/lib/default-preferences.js
+++ b/src/content/lib/default-preferences.js
@@ -1,3 +1,4 @@
+/* global pref */
 
 pref("extensions.requestpolicy.log", false);
 pref("extensions.requestpolicy.log.level", 0);
diff --git a/src/content/lib/environment.jsm b/src/content/lib/environment.jsm
index fc40a86..fc6527f 100644
--- a/src/content/lib/environment.jsm
+++ b/src/content/lib/environment.jsm
@@ -21,28 +21,31 @@
  * ***** END LICENSE BLOCK *****
  */
 
-let EXPORTED_SYMBOLS = [
+/* global Components */
+const {utils: Cu} = Components;
+
+/* exported Environment, FrameScriptEnvironment, ProcessEnvironment */
+this.EXPORTED_SYMBOLS = [
   "Environment",
   "FrameScriptEnvironment",
   "ProcessEnvironment"
 ];
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-
 let globalScope = this;
 
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/devtools/Console.jsm");
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
+let {ScriptLoader} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
 
 ScriptLoader.defineLazyModuleGetters({
+  /* global ManagerForEventListeners */
   "lib/manager-for-event-listeners": ["ManagerForEventListeners"],
+  /* global ManagerForMessageListeners */
   "lib/manager-for-message-listeners": ["ManagerForMessageListeners"],
-  "lib/utils/constants": ["C"],
+  /* global ObserverManager */
   "lib/observer-manager": ["ObserverManager"]
 }, globalScope);
 
diff --git a/src/content/lib/framescript-to-overlay-communication.jsm b/src/content/lib/framescript-to-overlay-communication.jsm
index 49ccf78..88aaf5c 100644
--- a/src/content/lib/framescript-to-overlay-communication.jsm
+++ b/src/content/lib/framescript-to-overlay-communication.jsm
@@ -21,21 +21,21 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["FramescriptToOverlayCommunication"];
+/* exported FramescriptToOverlayCommunication */
+this.EXPORTED_SYMBOLS = ["FramescriptToOverlayCommunication"];
 
-let globalScope = this;
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/environment",
-  "lib/logger",
-  "lib/utils/constants"
-], globalScope);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment} = importModule("lib/environment");
+let {Logger} = importModule("lib/logger");
+let {C} = importModule("lib/utils/constants");
 
+//==============================================================================
+// constants
+//==============================================================================
 
 /**
  * The states of the communication channel to with the overlay.
@@ -47,6 +47,9 @@ let States = Object.freeze({
   "STOPPED": 2
 });
 
+//==============================================================================
+// FramescriptToOverlayCommunication
+//==============================================================================
 
 /**
  * Sometimes the framescript loads and starts up faster than the
diff --git a/src/content/lib/gui-location.jsm b/src/content/lib/gui-location.jsm
index beac326..392164c 100644
--- a/src/content/lib/gui-location.jsm
+++ b/src/content/lib/gui-location.jsm
@@ -21,20 +21,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = [
+/* exported GUILocation, GUIOrigin, GUIDestination, GUILocationProperties */
+this.EXPORTED_SYMBOLS = [
   "GUILocation",
   "GUIOrigin",
   "GUIDestination",
   "GUILocationProperties"
 ];
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules(["lib/utils/constants"], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {C} = importModule("lib/utils/constants");
 
+//==============================================================================
+// GUILocation
+//==============================================================================
 
 function GUILocation(value, properties) {
   this.value = value || null;
@@ -122,9 +126,9 @@ GUILocation.compareFunction = function (a, b, sortType) {
   return 0;
 };
 
-
-
-
+//==============================================================================
+// GUIOrigin
+//==============================================================================
 
 /**
  * GUIOrigin objects are used to hand over not only "origin" strings, like
@@ -142,9 +146,9 @@ GUIOrigin.prototype = new GUILocation;
 GUIOrigin.merge = GUILocation.merge.bind(GUIOrigin, GUIOrigin);
 GUIOrigin.indexOfOriginInArray = GUILocation.indexOfLocationInArray;
 
-
-
-
+//==============================================================================
+// GUIDestination
+//==============================================================================
 
 /**
  * GUIDestination objects are used to hand over not only "destination" strings,
@@ -162,10 +166,9 @@ GUIDestination.prototype = new GUILocation;
 GUIDestination.merge = GUILocation.merge.bind(GUIDestination, GUIDestination);
 GUIDestination.indexOfDestInArray = GUILocation.indexOfLocationInArray;
 
-
-
-
-
+//==============================================================================
+// GUILocationProperties
+//==============================================================================
 
 function GUILocationProperties(value, properties) {
   this.reset();
diff --git a/src/content/lib/http-response.jsm b/src/content/lib/http-response.jsm
index 91610e6..7e2b135 100644
--- a/src/content/lib/http-response.jsm
+++ b/src/content/lib/http-response.jsm
@@ -21,26 +21,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cr = Components.results;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, results: Cr, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = [
-  "HttpResponse"
-];
+/* exported HttpResponse */
+this.EXPORTED_SYMBOLS = ["HttpResponse"];
 
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/utils/domains",
-  "lib/utils/windows"
-], this);
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {DomainUtil} = importModule("lib/utils/domains");
+let {WindowUtils} = importModule("lib/utils/windows");
+let {Prefs} = importModule("lib/prefs");
 
+//==============================================================================
+// HttpResponse
+//==============================================================================
 
 function HttpResponse(aHttpChannel) {
   this.httpChannel = aHttpChannel;
diff --git a/src/content/lib/logger.jsm b/src/content/lib/logger.jsm
index 4354d06..6971c44 100644
--- a/src/content/lib/logger.jsm
+++ b/src/content/lib/logger.jsm
@@ -21,21 +21,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["Logger"];
+/* exported Logger */
+this.EXPORTED_SYMBOLS = ["Logger"];
 
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/devtools/Console.jsm");
+/* global dump */
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/environment",
-  "lib/prefs"
-], this);
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
+let {rpPrefBranch} = importModule("lib/prefs");
+
+//==============================================================================
+// Logger
+//==============================================================================
 
 /**
  * Provides logging methods
@@ -202,11 +205,16 @@ var Logger = (function() {
 
 // #ifdef UNIT_TESTING
 
+//==============================================================================
+// unit testing part
+//==============================================================================
+
 /**
  * Triggers errors for a RequestPolicy unit test.
  * It's used to test Error Detection from the unit tests.
  */
-var UnitTestObserver = (function (self) {
+var UnitTestObserver = (function () {
+  let self = {};
 
   var loggingErrorTopic = "requestpolicy-trigger-logging-error";
   var consoleErrorTopic = "requestpolicy-trigger-console-error";
@@ -272,7 +280,7 @@ var UnitTestObserver = (function (self) {
   }
 
   return self;
-})({});
+}());
 
 ProcessEnvironment.addStartupFunction(Environment.LEVELS.BACKEND,
                                       UnitTestObserver.startup);
diff --git a/src/content/lib/manager-for-event-listeners.jsm b/src/content/lib/manager-for-event-listeners.jsm
index ef77d51..a5bc44d 100644
--- a/src/content/lib/manager-for-event-listeners.jsm
+++ b/src/content/lib/manager-for-event-listeners.jsm
@@ -21,20 +21,20 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["ManagerForEventListeners"];
+/* exported ManagerForEventListeners */
+this.EXPORTED_SYMBOLS = ["ManagerForEventListeners"];
 
-let globalScope = this;
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/environment",
-  "lib/logger"
-], globalScope);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment} = importModule("lib/environment");
+let {Logger} = importModule("lib/logger");
 
+//==============================================================================
+// ManagerForEventListeners
+//==============================================================================
 
 /**
  * This class provides an interface to multiple "Event Targets" which takes
diff --git a/src/content/lib/manager-for-message-listeners.jsm b/src/content/lib/manager-for-message-listeners.jsm
index b5c05d2..c30d58f 100644
--- a/src/content/lib/manager-for-message-listeners.jsm
+++ b/src/content/lib/manager-for-message-listeners.jsm
@@ -21,21 +21,21 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["ManagerForMessageListeners"];
+/* exported ManagerForMessageListeners */
+this.EXPORTED_SYMBOLS = ["ManagerForMessageListeners"];
 
-let globalScope = this;
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/environment",
-  "lib/logger",
-  "lib/utils/constants"
-], globalScope);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment} = importModule("lib/environment");
+let {Logger} = importModule("lib/logger");
+let {C} = importModule("lib/utils/constants");
 
+//==============================================================================
+// ManagerForMessageListeners
+//==============================================================================
 
 /**
  * This class provides an interface to a "Message Manager" which takes
diff --git a/src/content/lib/observer-manager.jsm b/src/content/lib/observer-manager.jsm
index e8c60c6..0825564 100644
--- a/src/content/lib/observer-manager.jsm
+++ b/src/content/lib/observer-manager.jsm
@@ -22,23 +22,19 @@
  */
 
 /* global Components */
-/* exported EXPORTED_SYMBOLS, ObserverManager */
+const {utils: Cu} = Components;
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-
-let EXPORTED_SYMBOLS = ["ObserverManager"];
+/* exported ObserverManager */
+this.EXPORTED_SYMBOLS = ["ObserverManager"];
 
 let globalScope = this;
 
-/* global ScriptLoader */
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/utils/observers", /* global SingleTopicObserver,
-                            SinglePrefBranchObserver */
-  "lib/environment" /* global Environment, ProcessEnvironment */
-], globalScope);
+let {ScriptLoader} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let importModule = ScriptLoader.importModule;
+let {SingleTopicObserver, SinglePrefBranchObserver} = importModule(
+    "lib/utils/observers");
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
 
 ScriptLoader.defineLazyModuleGetters({
   "lib/prefs": [
@@ -47,17 +43,20 @@ ScriptLoader.defineLazyModuleGetters({
   ]
 }, globalScope);
 
-
-
 // Load the Logger at startup-time, not at load-time!
 // ( On load-time Logger might be null. )
 let Logger;
 ProcessEnvironment.addStartupFunction(Environment.LEVELS.BACKEND, function() {
-  Logger = ScriptLoader.importModule("lib/logger").Logger;
+  // FIXME: Re-enable (W126) when JSHint issue #2775 is fixed.
+  //        https://github.com/jshint/jshint/issues/2775
+  /* jshint -W126 */
+  ({Logger} = importModule("lib/logger"));
+  /* jshint +W126 */
 });
 
-
-
+//==============================================================================
+// ObserverManager
+//==============================================================================
 
 /**
  * An ObserverManager provides an interface to `nsIObserverService` which takes
diff --git a/src/content/lib/old-rules.jsm b/src/content/lib/old-rules.jsm
index 700cf9e..b35090b 100644
--- a/src/content/lib/old-rules.jsm
+++ b/src/content/lib/old-rules.jsm
@@ -21,23 +21,23 @@
  * ***** END LICENSE BLOCK *****
  */
 
-/* exported EXPORTED_SYMBOLS, OldRules */
-var EXPORTED_SYMBOLS = ["OldRules"];
+/* global Components */
+const {interfaces: Ci, results: Cr, utils: Cu} = Components;
 
-var globalScope = this;
+/* exported OldRules */
+this.EXPORTED_SYMBOLS = ["OldRules"];
 
-var {OldRules} = (function () {
-  "use strict";
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {DomainUtil} = importModule("lib/utils/domains");
+let {rpPrefBranch} = importModule("lib/prefs");
 
-  /* global Components */
-  const {interfaces: Ci, results: Cr, utils: Cu} = Components;
+//==============================================================================
+// OldRules
+//==============================================================================
 
-  /* global ScriptLoader */
-  Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-  ScriptLoader.importModules([
-    "lib/utils/domains", /* global DomainUtil */
-    "lib/prefs" /* global rpPrefBranch */
-  ], globalScope);
+var OldRules = (function () {
+  "use strict";
 
   function OldRules(aOrigins = "", aDestinations = "",
                     aOriginsToDestinations = "") {
@@ -173,5 +173,5 @@ var {OldRules} = (function () {
     }
   };
 
-  return {OldRules};
-})();
+  return OldRules;
+}());
diff --git a/src/content/lib/policy-manager.alias-functions.js b/src/content/lib/policy-manager.alias-functions.js
index 9854e4c..6595f8c 100644
--- a/src/content/lib/policy-manager.alias-functions.js
+++ b/src/content/lib/policy-manager.alias-functions.js
@@ -21,6 +21,18 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global Components */
+const {utils: Cu} = Components;
+
+/* global PolicyManager: true */
+
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {C} = importModule("lib/utils/constants");
+
+//==============================================================================
+// PolicyManager (extension)
+//==============================================================================
 
 PolicyManager = (function(self) {
 
diff --git a/src/content/lib/policy-manager.jsm b/src/content/lib/policy-manager.jsm
index fa0a33b..c200f78 100644
--- a/src/content/lib/policy-manager.jsm
+++ b/src/content/lib/policy-manager.jsm
@@ -21,25 +21,31 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["PolicyManager", "RULES_CHANGED_TOPIC"];
+/* exported PolicyManager, RULES_CHANGED_TOPIC */
+this.EXPORTED_SYMBOLS = ["PolicyManager", "RULES_CHANGED_TOPIC"];
 
-const RULES_CHANGED_TOPIC = "rpcontinued-rules-changed";
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {C} = importModule("lib/utils/constants");
+let {Logger} = importModule("lib/logger");
+let {RequestResult} = importModule("lib/request-result");
+let {Ruleset, RawRuleset} = importModule("lib/ruleset");
+let {RulesetStorage} = importModule("lib/ruleset-storage");
 
-Cu.import("resource://gre/modules/Services.jsm");
+//==============================================================================
+// constants
+//==============================================================================
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/request-result",
-  "lib/ruleset",
-  "lib/ruleset-storage",
-  "lib/utils/constants"
-], this);
+const RULES_CHANGED_TOPIC = "rpcontinued-rules-changed";
 
+//==============================================================================
+// utilities
+//==============================================================================
 
 function dprint(msg) {
   if (typeof print == "function") {
@@ -57,13 +63,16 @@ function notifyRulesChanged() {
   Services.obs.notifyObservers(null, RULES_CHANGED_TOPIC, null);
 }
 
+//==============================================================================
+// PolicyManager
+//==============================================================================
 
 /**
  * Provides a simplified interface to handling multiple
  * rulesets, checking requests against multiple rulesets, etc.
  */
-var PolicyManager = (function(self) {
-
+var PolicyManager = (function () {
+  let self = {};
 
   let userRulesets = {};
   let subscriptionRulesets = {};
@@ -337,8 +346,13 @@ var PolicyManager = (function(self) {
   };
 
   return self;
-}(PolicyManager || {}));
+}());
 
 
-Services.scriptloader.loadSubScript(
-    "chrome://rpcontinued/content/lib/policy-manager.alias-functions.js");
+PolicyManager = (function () {
+  let scope = {PolicyManager};
+  Services.scriptloader.loadSubScript(
+      "chrome://rpcontinued/content/lib/policy-manager.alias-functions.js",
+      scope);
+  return scope.PolicyManager;
+}());
diff --git a/src/content/lib/prefs.jsm b/src/content/lib/prefs.jsm
index 8cc50be..203b8da 100644
--- a/src/content/lib/prefs.jsm
+++ b/src/content/lib/prefs.jsm
@@ -21,25 +21,31 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ['rpPrefBranch', 'rootPrefBranch', 'Prefs'];
+/* exported rpPrefBranch, rootPrefBranch, Prefs */
+this.EXPORTED_SYMBOLS = ["rpPrefBranch", "rootPrefBranch", "Prefs"];
 
-Cu.import("resource://gre/modules/Services.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules(["lib/environment"], this);
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
+let {Logger} = importModule("lib/logger");
 
+//==============================================================================
+// pref branches
+//==============================================================================
 
 var rpPrefBranch = Services.prefs.getBranch("extensions.requestpolicy.")
     .QueryInterface(Ci.nsIPrefBranch2);
 var rootPrefBranch = Services.prefs.getBranch("")
     .QueryInterface(Ci.nsIPrefBranch2);
 
-
+//==============================================================================
+// Prefs
+//==============================================================================
 
 var Prefs = (function() {
   let self = {};
diff --git a/src/content/lib/request-processor.compat.js b/src/content/lib/request-processor.compat.js
index 3e9572c..df63ead 100644
--- a/src/content/lib/request-processor.compat.js
+++ b/src/content/lib/request-processor.compat.js
@@ -21,16 +21,21 @@
  * ***** END LICENSE BLOCK *****
  */
 
-Cu.import("resource://gre/modules/AddonManager.jsm");
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/utils",
-  "lib/environment"
-], this);
+/* global RequestProcessor: true */
 
+let {AddonManager} = Cu.import("resource://gre/modules/AddonManager.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
+let {Logger} = importModule("lib/logger");
+
+//==============================================================================
+// RequestProcessor (extension)
+//==============================================================================
 
 RequestProcessor = (function(self) {
   let internal = Utils.moduleInternal(self);
diff --git a/src/content/lib/request-processor.jsm b/src/content/lib/request-processor.jsm
index 35e638b..722cbc8 100644
--- a/src/content/lib/request-processor.jsm
+++ b/src/content/lib/request-processor.jsm
@@ -21,12 +21,45 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cr = Components.results;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, results: Cr, utils: Cu} = Components;
+
+/* exported RequestProcessor */
+this.EXPORTED_SYMBOLS = ["RequestProcessor"];
+
+let globalScope = this;
+
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+
+let {ScriptLoader} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let importModule = ScriptLoader.importModule;
+
+let {Logger} = importModule("lib/logger");
+let {Prefs} = importModule("lib/prefs");
+let {PolicyManager} = importModule("lib/policy-manager");
+let {DomainUtil} = importModule("lib/utils/domains");
+let {RequestResult, REQUEST_REASON_USER_POLICY,
+     REQUEST_REASON_SUBSCRIPTION_POLICY, REQUEST_REASON_DEFAULT_POLICY,
+     REQUEST_REASON_DEFAULT_POLICY_INCONSISTENT_RULES,
+     REQUEST_REASON_DEFAULT_SAME_DOMAIN, REQUEST_REASON_COMPATIBILITY,
+     REQUEST_REASON_LINK_CLICK, REQUEST_REASON_FORM_SUBMISSION,
+     REQUEST_REASON_HISTORY_REQUEST, REQUEST_REASON_USER_ALLOWED_REDIRECT,
+     REQUEST_REASON_USER_ACTION, REQUEST_REASON_NEW_WINDOW,
+     REQUEST_REASON_IDENTICAL_IDENTIFIER} =
+        importModule("lib/request-result");
+let {RequestSet} = importModule("lib/request-set");
+let {ProcessEnvironment} = importModule("lib/environment");
+let {Utils} = importModule("lib/utils");
+
+/* global PolicyImplementation */
+ScriptLoader.defineLazyModuleGetters({
+  "main/content-policy": ["PolicyImplementation"]
+}, globalScope);
 
-let EXPORTED_SYMBOLS = ["RequestProcessor"];
+//==============================================================================
+// constants
+//==============================================================================
 
 const CP_OK = Ci.nsIContentPolicy.ACCEPT;
 const CP_REJECT = Ci.nsIContentPolicy.REJECT_SERVER;
@@ -35,28 +68,13 @@ const CP_REJECT = Ci.nsIContentPolicy.REJECT_SERVER;
 // other callers. Was chosen randomly.
 const CP_MAPPEDDESTINATION = 0x178c40bf;
 
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/prefs",
-  "lib/policy-manager",
-  "lib/utils/domains",
-  "lib/utils",
-  "lib/request",
-  "lib/request-result",
-  "lib/request-set",
-  "lib/environment"
-], this);
-ScriptLoader.defineLazyModuleGetters({
-  "main/content-policy": ["PolicyImplementation"]
-}, this);
+//==============================================================================
+// RequestProcessor
+//==============================================================================
 
+var RequestProcessor = (function () {
+  let self = {};
 
-
-var RequestProcessor = (function(self) {
   let internal = Utils.moduleInternal(self);
 
 
@@ -1068,10 +1086,18 @@ var RequestProcessor = (function(self) {
   };
 
   return self;
-}(RequestProcessor || {}));
-
-
-Services.scriptloader.loadSubScript(
-    'chrome://rpcontinued/content/lib/request-processor.redirects.js');
-Services.scriptloader.loadSubScript(
-    'chrome://rpcontinued/content/lib/request-processor.compat.js');
+}());
+
+RequestProcessor = (function () {
+  let scope = {RequestProcessor};
+  Services.scriptloader.loadSubScript(
+      "chrome://rpcontinued/content/lib/request-processor.redirects.js", scope);
+  return scope.RequestProcessor;
+}());
+
+RequestProcessor = (function () {
+  let scope = {RequestProcessor};
+  Services.scriptloader.loadSubScript(
+      "chrome://rpcontinued/content/lib/request-processor.compat.js", scope);
+  return scope.RequestProcessor;
+}());
diff --git a/src/content/lib/request-processor.redirects.js b/src/content/lib/request-processor.redirects.js
index 97508ba..bc4bf79 100644
--- a/src/content/lib/request-processor.redirects.js
+++ b/src/content/lib/request-processor.redirects.js
@@ -21,36 +21,38 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const HTTPS_EVERYWHERE_REWRITE_TOPIC = "https-everywhere-uri-rewrite";
-
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/prefs",
-  "lib/policy-manager",
-  "lib/utils/domains",
-  "lib/utils",
-  "lib/request",
-  "lib/request-result",
-  "lib/http-response",
-  "lib/environment"
-], this);
+/* global Components */
+const {interfaces: Ci, results: Cr, utils: Cu} = Components;
+
+/* global RequestProcessor: true */
+
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {Prefs} = importModule("lib/prefs");
+let {PolicyManager} = importModule("lib/policy-manager");
+let {DomainUtil} = importModule("lib/utils/domains");
+let {Utils} = importModule("lib/utils");
+let {Request, RedirectRequest} = importModule("lib/request");
+let {RequestResult, REQUEST_REASON_COMPATIBILITY,
+     REQUEST_REASON_RELATIVE_URL} = importModule("lib/request-result");
+let {HttpResponse} = importModule("lib/http-response");
+let {ProcessEnvironment} = importModule("lib/environment");
+
+//==============================================================================
+// constants
+//==============================================================================
 
+const HTTPS_EVERYWHERE_REWRITE_TOPIC = "https-everywhere-uri-rewrite";
 
+//==============================================================================
+// RequestProcessor (extension)
+//==============================================================================
 
 RequestProcessor = (function(self) {
   let internal = Utils.moduleInternal(self);
 
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cr = Components.results;
-  const Cu = Components.utils;
-
-
   /**
    * These are redirects that the user allowed when presented with a redirect
    * notification.
diff --git a/src/content/lib/request-result.jsm b/src/content/lib/request-result.jsm
index 2ee236a..6441484 100644
--- a/src/content/lib/request-result.jsm
+++ b/src/content/lib/request-result.jsm
@@ -21,11 +21,15 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-
-let EXPORTED_SYMBOLS = [
+/* exported RequestResult, REQUEST_REASON_USER_POLICY,
+       REQUEST_REASON_SUBSCRIPTION_POLICY, REQUEST_REASON_DEFAULT_POLICY,
+       REQUEST_REASON_DEFAULT_POLICY_INCONSISTENT_RULES,
+       REQUEST_REASON_DEFAULT_SAME_DOMAIN, REQUEST_REASON_COMPATIBILITY,
+       REQUEST_REASON_LINK_CLICK, REQUEST_REASON_FORM_SUBMISSION,
+       REQUEST_REASON_HISTORY_REQUEST, REQUEST_REASON_USER_ALLOWED_REDIRECT,
+       REQUEST_REASON_USER_ACTION, REQUEST_REASON_NEW_WINDOW,
+       REQUEST_REASON_IDENTICAL_IDENTIFIER, REQUEST_REASON_RELATIVE_URL */
+this.EXPORTED_SYMBOLS = [
   "RequestResult",
   "REQUEST_REASON_USER_POLICY",
   "REQUEST_REASON_SUBSCRIPTION_POLICY",
@@ -43,6 +47,10 @@ let EXPORTED_SYMBOLS = [
   "REQUEST_REASON_RELATIVE_URL"
 ];
 
+//==============================================================================
+// constants
+//==============================================================================
+
 const REQUEST_REASON_USER_POLICY           = 1;
 const REQUEST_REASON_SUBSCRIPTION_POLICY   = 2;
 const REQUEST_REASON_DEFAULT_POLICY        = 3;
@@ -60,6 +68,9 @@ const REQUEST_REASON_IDENTICAL_IDENTIFIER  = 13;
 
 const REQUEST_REASON_RELATIVE_URL          = 14; // TODO: give user control about relative urls on the page
 
+//==============================================================================
+// RequestResult
+//==============================================================================
 
 // TODO: merge this Class with the "Request" class and/or some kind of
 // "RememberedRequest" or "RequestInfo" class.
diff --git a/src/content/lib/request-set.jsm b/src/content/lib/request-set.jsm
index 62dfaba..1d118ea 100644
--- a/src/content/lib/request-set.jsm
+++ b/src/content/lib/request-set.jsm
@@ -21,20 +21,21 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["RequestSet"];
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/utils/domains",
-  "lib/request-result"
-], this);
+/* exported RequestSet */
+this.EXPORTED_SYMBOLS = ["RequestSet"];
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {DomainUtil} = importModule("lib/utils/domains");
+let {RequestResult} = importModule("lib/request-result");
 
+//==============================================================================
+// utilities
+//==============================================================================
 
 function getUriIdentifier(uri) {
   try {
@@ -46,6 +47,9 @@ function getUriIdentifier(uri) {
   }
 }
 
+//==============================================================================
+// RequestSet
+//==============================================================================
 
 function RequestSet() {
   this._origins = {};
diff --git a/src/content/lib/request.jsm b/src/content/lib/request.jsm
index c6399bd..579717a 100644
--- a/src/content/lib/request.jsm
+++ b/src/content/lib/request.jsm
@@ -21,11 +21,12 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = [
+/* exported Request, NormalRequest, RedirectRequest,
+       REQUEST_TYPE_NORMAL, REQUEST_TYPE_REDIRECT */
+this.EXPORTED_SYMBOLS = [
   "Request",
   "NormalRequest",
   "RedirectRequest",
@@ -33,21 +34,24 @@ let EXPORTED_SYMBOLS = [
   "REQUEST_TYPE_REDIRECT"
 ];
 
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/utils/domains",
-  "lib/utils/windows",
-  "lib/utils"
-], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {DomainUtil} = importModule("lib/utils/domains");
+let {WindowUtils} = importModule("lib/utils/windows");
 
+//==============================================================================
+// constants
+//==============================================================================
 
 const REQUEST_TYPE_NORMAL = 1;
 const REQUEST_TYPE_REDIRECT = 2;
 
-
+//==============================================================================
+// Request
+//==============================================================================
 
 function Request(originURI, destURI, requestType) {
   // TODO: save a nsIURI objects here instead of strings
@@ -73,8 +77,9 @@ Request.prototype.detailsToString = function() {
   return "destination: " + this.destURI + ", origin: " + this.originURI;
 };
 
-
-
+//==============================================================================
+// NormalRequest
+//==============================================================================
 
 function NormalRequest(aContentType, aContentLocation, aRequestOrigin, aContext,
     aMimeTypeGuess, aExtra, aRequestPrincipal) {
@@ -264,8 +269,9 @@ NormalRequest.prototype.getBrowser = function() {
   }
 };
 
-
-
+//==============================================================================
+// RedirectRequest
+//==============================================================================
 
 function RedirectRequest(httpResponse) {
   Request.call(this, httpResponse.originURI.specIgnoringRef,
diff --git a/src/content/lib/ruleset-storage.jsm b/src/content/lib/ruleset-storage.jsm
index de2c65c..f85b61c 100644
--- a/src/content/lib/ruleset-storage.jsm
+++ b/src/content/lib/ruleset-storage.jsm
@@ -21,18 +21,20 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["RulesetStorage"];
+/* exported RulesetStorage */
+this.EXPORTED_SYMBOLS = ["RulesetStorage"];
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/ruleset",
-  "lib/utils/files"
-], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {RawRuleset} = importModule("lib/ruleset");
+let {FileUtil} = importModule("lib/utils/files");
 
+//==============================================================================
+// RulesetStorage
+//==============================================================================
 
 var RulesetStorage = {
 
diff --git a/src/content/lib/ruleset.jsm b/src/content/lib/ruleset.jsm
index 5247b70..9704e04 100644
--- a/src/content/lib/ruleset.jsm
+++ b/src/content/lib/ruleset.jsm
@@ -21,22 +21,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = [
+/* exported Ruleset, RawRuleset */
+this.EXPORTED_SYMBOLS = [
   "Ruleset",
   "RawRuleset"
 ];
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/utils/domains",
-  "lib/utils/constants"
-], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {DomainUtil} = importModule("lib/utils/domains");
+let {C} = importModule("lib/utils/constants");
 
+//==============================================================================
+// utilities
+//==============================================================================
 
 function dprint(msg) {
   if (typeof print == "function") {
@@ -103,6 +105,10 @@ function dump(arr,level) {
   return dumped_text;
 }
 
+//==============================================================================
+// RawRuleset
+//==============================================================================
+
 function RawRuleset(jsonData) {
   this._metadata = {"version" : 1};
   this._entries = {};
@@ -478,6 +484,9 @@ RuleIterator.prototype.next = function() {
   return this._rulesIterator.next()[1];
 }
 
+//==============================================================================
+// Rules
+//==============================================================================
 
 function Rules() {
   this._rules = [];
@@ -527,6 +536,9 @@ Rules.prototype = {
   }
 };
 
+//==============================================================================
+// Rule
+//==============================================================================
 
 /*
  * Semantics of rules:
@@ -645,6 +657,9 @@ Rule.prototype = {
   }
 };
 
+//==============================================================================
+// DomainEntry
+//==============================================================================
 
 function DomainEntry(name, fullName, higher) {
   if (typeof name != "string" && name !== null) {
@@ -702,6 +717,9 @@ DomainEntry.prototype = {
   }
 };
 
+//==============================================================================
+// IPAddressEntry
+//==============================================================================
 
 function IPAddressEntry(address) {
   this.address = address;
@@ -730,6 +748,9 @@ IPAddressEntry.prototype = {
   }
 };
 
+//==============================================================================
+// Ruleset
+//==============================================================================
 
 function Ruleset(name) {
   this._name = name || null;
diff --git a/src/content/lib/script-loader.jsm b/src/content/lib/script-loader.jsm
index 9c6bef7..80be069 100644
--- a/src/content/lib/script-loader.jsm
+++ b/src/content/lib/script-loader.jsm
@@ -21,21 +21,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-const Cr = Components.results;
+/* global Components */
+const {results: Cr, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["ScriptLoader"];
+/* exported ScriptLoader */
+this.EXPORTED_SYMBOLS = ["ScriptLoader"];
+
+/* global dump */
 
 // import some modules
 // NOTICE: This file should NOT import any of RP's modules when it is loaded!
 //         Doing so would be a bad practice, and might produce import() loops
 //         when the module to be imported wants to import ScriptLoader.
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/devtools/Console.jsm");
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
 
+//==============================================================================
+// utilities
+//==============================================================================
 
 const rpChromeContentURI = 'chrome://rpcontinued/content/';
 
@@ -51,7 +54,9 @@ function logSevereError(msg, e) {
        (e.stack ? ", stack was: " + e.stack : "") + "\n");
 }
 
-
+//==============================================================================
+// ScriptLoader
+//==============================================================================
 
 var ScriptLoader = (function() {
 
diff --git a/src/content/lib/subscription.jsm b/src/content/lib/subscription.jsm
index 553bce8..68858fa 100644
--- a/src/content/lib/subscription.jsm
+++ b/src/content/lib/subscription.jsm
@@ -21,11 +21,13 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = [
+/* exported UserSubscriptions, SubscriptionList,
+       Subscription, SUBSCRIPTION_UPDATED_TOPIC, SUBSCRIPTION_ADDED_TOPIC,
+       SUBSCRIPTION_REMOVED_TOPIC */
+this.EXPORTED_SYMBOLS = [
   "UserSubscriptions",
   "SubscriptionList",
   "Subscription",
@@ -34,15 +36,18 @@ let EXPORTED_SYMBOLS = [
   "SUBSCRIPTION_REMOVED_TOPIC"
 ];
 
-Cu.import("resource://gre/modules/Services.jsm");
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/ruleset",
-  "lib/utils/files",
-  "lib/ruleset-storage"
-], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {RawRuleset} = importModule("lib/ruleset");
+let {FileUtil} = importModule("lib/utils/files");
+let {RulesetStorage} = importModule("lib/ruleset-storage");
+
+//==============================================================================
+// Constants
+//==============================================================================
 
 const SUBSCRIPTION_UPDATED_TOPIC = 'rpcontinued-subscription-policy-updated';
 const SUBSCRIPTION_ADDED_TOPIC = 'rpcontinued-subscription-policy-added';
@@ -54,7 +59,9 @@ const SUBSCRIPTION_UPDATE_SUCCESS = 'SUCCESS';
 const SUBSCRIPTION_UPDATE_NOT_NEEDED = 'NOT_NEEDED';
 const SUBSCRIPTION_UPDATE_FAILURE = 'FAILURE';
 
-
+//==============================================================================
+// utilities
+//==============================================================================
 
 function setTimeout(func, delay) {
   var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
@@ -76,6 +83,10 @@ function dwarn(msg) {
   Logger.warning(Logger.TYPE_INTERNAL, msg);
 }
 
+//==============================================================================
+// UserSubscriptions
+//==============================================================================
+
 /**
  * Represents all of the subscriptions a user has enabled. This is where user
  * subscription information is stored and provides the mechanism for updating
diff --git a/src/content/lib/utils.jsm b/src/content/lib/utils.jsm
index 768050e..ab92a2d 100644
--- a/src/content/lib/utils.jsm
+++ b/src/content/lib/utils.jsm
@@ -21,24 +21,23 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-
-let EXPORTED_SYMBOLS = ["Utils"];
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-//Cu.import("resource://gre/modules/devtools/Console.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/environment",
-  "lib/logger"
-], this);
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
 
+/* exported Utils */
+this.EXPORTED_SYMBOLS = ["Utils"];
 
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+//let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
+let {Logger} = importModule("lib/logger");
 
+//==============================================================================
+// Utils
+//==============================================================================
 
 var Utils = (function() {
   let self = {};
diff --git a/src/content/lib/utils/constants.jsm b/src/content/lib/utils/constants.jsm
index aab9bcf..56b9148 100644
--- a/src/content/lib/utils/constants.jsm
+++ b/src/content/lib/utils/constants.jsm
@@ -21,11 +21,11 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci} = Components;
 
-let EXPORTED_SYMBOLS = ["C"];
+/* exported C */
+this.EXPORTED_SYMBOLS = ["C"];
 
 var C = {};
 
diff --git a/src/content/lib/utils/dom.jsm b/src/content/lib/utils/dom.jsm
index 283859c..99aef35 100644
--- a/src/content/lib/utils/dom.jsm
+++ b/src/content/lib/utils/dom.jsm
@@ -21,13 +21,12 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* exported DOMUtils */
+this.EXPORTED_SYMBOLS = ["DOMUtils"];
 
-Cu.import("resource://gre/modules/Services.jsm");
-
-let EXPORTED_SYMBOLS = ["DOMUtils"];
+//==============================================================================
+// DOMUtils
+//==============================================================================
 
 var DOMUtils = (function () {
   let self = {};
diff --git a/src/content/lib/utils/domains.jsm b/src/content/lib/utils/domains.jsm
index 9d66274..2630d90 100644
--- a/src/content/lib/utils/domains.jsm
+++ b/src/content/lib/utils/domains.jsm
@@ -21,28 +21,32 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["DomainUtil"];
+/* exported DomainUtil */
+this.EXPORTED_SYMBOLS = ["DomainUtil"];
 
-Cu.import("resource://gre/modules/Services.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules(["lib/logger"], this);
-
-/*
- * It's worth noting that many of the functions in this module will convert ACE
- * formatted IDNs to UTF8 formatted values. This is done automatically when
- * constructing nsIURI instances from ACE formatted URIs when the TLD is one in
- * which Mozilla supports UTF8 IDNs.
- */
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
 
+//==============================================================================
+// DomainUtil
+//==============================================================================
 
 var DomainUtil = {};
 
+/*
+ * It's worth noting that many of the functions in this module will
+ * convert ACE formatted IDNs to UTF8 formatted values. This is done
+ * automatically when constructing nsIURI instances from ACE
+ * formatted URIs when the TLD is one in which Mozilla supports
+ * UTF8 IDNs.
+ */
+
 DomainUtil._idnService = Cc["@mozilla.org/network/idn-service;1"]
     .getService(Ci.nsIIDNService);
 
diff --git a/src/content/lib/utils/files.jsm b/src/content/lib/utils/files.jsm
index f8ca07c..fdf5297 100644
--- a/src/content/lib/utils/files.jsm
+++ b/src/content/lib/utils/files.jsm
@@ -21,13 +21,17 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["FileUtil"];
+/* exported FileUtil */
+this.EXPORTED_SYMBOLS = ["FileUtil"];
 
-Cu.import("resource://gre/modules/Services.jsm");
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+
+//==============================================================================
+// utilities and constants
+//==============================================================================
 
 /**
  * creates an integer from the arguments
@@ -48,6 +52,10 @@ const octal700 = getOctalInt(7,0,0); // octal: 0700
 
 const REQUESTPOLICY_DIR = "requestpolicy";
 
+//==============================================================================
+// FileUtil
+//==============================================================================
+
 var FileUtil = {
 
   /**
diff --git a/src/content/lib/utils/info.jsm b/src/content/lib/utils/info.jsm
index 2bc16e1..006b5ae 100644
--- a/src/content/lib/utils/info.jsm
+++ b/src/content/lib/utils/info.jsm
@@ -21,32 +21,35 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["Info"];
+/* exported Info */
+this.EXPORTED_SYMBOLS = ["Info"];
 
-Cu.import("resource://gre/modules/Services.jsm");
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/prefs",
-  "lib/utils/constants",
-  "lib/environment"
-], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {rpPrefBranch} = importModule("lib/prefs");
+let {C} = importModule("lib/utils/constants");
+let {ProcessEnvironment} = importModule("lib/environment");
 
+let AddonManager = null;
 if (ProcessEnvironment.isMainProcess) {
-  Cu.import("resource://gre/modules/AddonManager.jsm");
+  // FIXME: Re-enable (W126) when JSHint issue #2775 is fixed.
+  /* jshint -W126 */
+  ({AddonManager} = Cu.import("resource://gre/modules/AddonManager.jsm", {}));
+  /* jshint +W126 */
 }
 
-
+//==============================================================================
+// Info
+//==============================================================================
 
 var Info = (function() {
   let self = {};
 
-  self = {};
-
   // bad smell...
   // get/set last/current RP version
   if (ProcessEnvironment.isMainProcess) {
diff --git a/src/content/lib/utils/observers.jsm b/src/content/lib/utils/observers.jsm
index 0906362..c267341 100644
--- a/src/content/lib/utils/observers.jsm
+++ b/src/content/lib/utils/observers.jsm
@@ -21,14 +21,17 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["SingleTopicObserver", "SinglePrefBranchObserver"];
+/* exported SingleTopicObserver, SinglePrefBranchObserver */
+this.EXPORTED_SYMBOLS = ["SingleTopicObserver", "SinglePrefBranchObserver"];
 
-Cu.import("resource://gre/modules/Services.jsm");
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+//==============================================================================
+// Observer (metaclass)
+//==============================================================================
 
 /**
  * Generic Observer class.
@@ -56,6 +59,9 @@ Observer.prototype.unregister = function() {
   }
 };
 
+//==============================================================================
+// SingleTopicObserver
+//==============================================================================
 
 /**
  * An instance of this class registers itself to `nsIObserverService` on behalf
@@ -75,6 +81,9 @@ SingleTopicObserver.prototype._unregister = function() {
   Services.obs.removeObserver(this, this.topic);
 };
 
+//==============================================================================
+// SinglePrefBranchObserver
+//==============================================================================
 
 function SinglePrefBranchObserver(aBranch, aDomain, aCallback) {
   this.branch = aBranch;
diff --git a/src/content/lib/utils/strings.jsm b/src/content/lib/utils/strings.jsm
index 9c32c08..de4c3a8 100644
--- a/src/content/lib/utils/strings.jsm
+++ b/src/content/lib/utils/strings.jsm
@@ -21,20 +21,21 @@
  */
 
 /**
- * Note: The string utils are used also in the content process (see
- * e10s/multiprocessor firefox), so this file shouldn't contain code which is
- * limited to the chrome process.
+ * [E10s]: This file runs both in PARENT and CHILD process.
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["StringUtils"];
+/* exported StringUtils */
+this.EXPORTED_SYMBOLS = ["StringUtils"];
 
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+var {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+var {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
 
+//==============================================================================
+// StringUtils
+//==============================================================================
 
 var StringUtils = (function() {
   let self = {};
diff --git a/src/content/lib/utils/windows.jsm b/src/content/lib/utils/windows.jsm
index f553274..588e8ce 100644
--- a/src/content/lib/utils/windows.jsm
+++ b/src/content/lib/utils/windows.jsm
@@ -21,16 +21,19 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["WindowUtils"];
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules(["lib/prefs"], this);
+/* exported WindowUtils */
+this.EXPORTED_SYMBOLS = ["WindowUtils"];
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {rpPrefBranch} = importModule("lib/prefs");
 
+//==============================================================================
+// WindowUtils
+//==============================================================================
 
 var WindowUtils = (function() {
   let self = {};
@@ -79,7 +82,8 @@ var WindowUtils = (function() {
   self.isWindowPrivate = (function() {
     try {
       // Firefox 20+
-      Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
+      let {PrivateBrowsingUtils} = Cu.import("resource://gre/modules/" +
+                                             "PrivateBrowsingUtils.jsm", {});
 
       return (function(aWindow) {
         return PrivateBrowsingUtils.isWindowPrivate(aWindow)
diff --git a/src/content/lib/utils/xul.jsm b/src/content/lib/utils/xul.jsm
index f480d61..6b58680 100644
--- a/src/content/lib/utils/xul.jsm
+++ b/src/content/lib/utils/xul.jsm
@@ -21,20 +21,23 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-Cu.import("resource://gre/modules/Services.jsm");
+/* exported XULUtils */
+this.EXPORTED_SYMBOLS = ["XULUtils"];
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/utils/strings",
-  "lib/utils/constants"
-], this);
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
-var EXPORTED_SYMBOLS = ["XULUtils"];
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {StringUtils} = importModule("lib/utils/strings");
+let {C} = importModule("lib/utils/constants");
+
+//==============================================================================
+// XULUtils
+//==============================================================================
 
 var XULUtils = {};
 
@@ -77,7 +80,7 @@ var xulTrees = XULUtils.xulTrees = {};
       //            "' for element <" + aElementSpec.tag + ">");
     }
   }
-})();
+}());
 
 
 /**
@@ -239,7 +242,7 @@ var {addEventListeners, removeEventListeners} = (function () {
     addEventListeners: addEventListeners,
     removeEventListeners: removeEventListeners
   };
-})();
+}());
 
 
 function recursivelyAddXULElements(aDocument, aElementSpecList,
diff --git a/src/content/main/about-uri.jsm b/src/content/main/about-uri.jsm
index 4373561..fef9aeb 100644
--- a/src/content/main/about-uri.jsm
+++ b/src/content/main/about-uri.jsm
@@ -21,25 +21,23 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-const Cr = Components.results;
+/* global Components */
+const {interfaces: Ci, results: Cr, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["AboutRequestPolicy"];
+/* exported AboutRequestPolicy */
+this.EXPORTED_SYMBOLS = ["AboutRequestPolicy"];
 
-Components.utils.import("resource://gre/modules/Services.jsm");
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
 
-let globalScope = this;
-
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/environment",
-  "lib/utils"
-], globalScope);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
+let {Utils} = importModule("lib/utils");
 
+//==============================================================================
+// utilities, constants
+//==============================================================================
 
 var filenames = {
   "basicprefs": "basicprefs.html",
@@ -63,7 +61,9 @@ function getURI(aURI) {
   return "chrome://rpcontinued/content/settings/" + filenames[id];
 }
 
-
+//==============================================================================
+// AboutRequestPolicy
+//==============================================================================
 
 var AboutRequestPolicy = (function() {
   let self = {};
@@ -117,7 +117,7 @@ var AboutRequestPolicy = (function() {
   function unregisterFactory() {
     let registrar = Components.manager
         .QueryInterface(Ci.nsIComponentRegistrar);
-    let {Utils} = ScriptLoader.importModule("lib/utils");
+    let {Utils} = importModule("lib/utils");
 
     // This needs to run asynchronously, see Mozilla bug 753687
     Utils.runAsync(function() {
diff --git a/src/content/main/content-policy.jsm b/src/content/main/content-policy.jsm
index 33424fa..7a816e9 100644
--- a/src/content/main/content-policy.jsm
+++ b/src/content/main/content-policy.jsm
@@ -21,28 +21,26 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
-const Cr = Components.results;
+/* global Components */
+const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["PolicyImplementation"];
+/* exported PolicyImplementation */
+this.EXPORTED_SYMBOLS = ["PolicyImplementation"];
 
-let globalScope = this;
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
 
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/utils/constants",
-  "lib/logger",
-  "lib/request",
-  "lib/utils",
-  "lib/request-processor",
-  "lib/environment"
-], globalScope);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {C} = importModule("lib/utils/constants");
+let {Logger} = importModule("lib/logger");
+let {NormalRequest} = importModule("lib/request");
+let {Utils} = importModule("lib/utils");
+let {RequestProcessor} = importModule("lib/request-processor");
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
 
+//==============================================================================
+// PolicyImplementation
+//==============================================================================
 
 // TODO: implement nsIChannelEventSink to catch redirects as Adblock Plus does.
 var PolicyImplementation = (function() {
@@ -144,18 +142,18 @@ var PolicyImplementation = (function() {
   ProcessEnvironment.addShutdownFunction(Environment.LEVELS.INTERFACE,
                                          unregister);
 
-  //
+  //----------------------------------------------------------------------------
   // nsISupports interface implementation
-  //
+  //----------------------------------------------------------------------------
 
   self.QueryInterface = XPCOMUtils.generateQI([Ci.nsIContentPolicy,
                                                Ci.nsIObserver,
                                                Ci.nsIFactory,
                                                Ci.nsISupportsWeakReference]);
 
-  //
+  //----------------------------------------------------------------------------
   // nsIContentPolicy interface implementation
-  //
+  //----------------------------------------------------------------------------
 
   // https://developer.mozilla.org/en/nsIContentPolicy
 
@@ -172,9 +170,9 @@ var PolicyImplementation = (function() {
 
   self.shouldProcess = (() => C.CP_OK);
 
-  //
+  //----------------------------------------------------------------------------
   // nsIFactory interface implementation
-  //
+  //----------------------------------------------------------------------------
 
   self.createInstance = function(outer, iid) {
     if (outer) {
diff --git a/src/content/main/default-pref-handler.js b/src/content/main/default-pref-handler.js
index 2b38af3..fc51182 100644
--- a/src/content/main/default-pref-handler.js
+++ b/src/content/main/default-pref-handler.js
@@ -20,22 +20,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
-// This file has to be called only once. It handles the default preferences [1],
-// so it has to be called quite early at the extension startup.
-//
-// Note that this script may *only* be loaded from the main process!
-// Also note that if possible this script shouldn't import any other of RP's
-// modules, e.g. to prevent import() loops.
-//
-// [1] https://developer.mozilla.org/en-US/Add-ons/How_to_convert_an_overlay_extension_to_restartless#Step_4.3A_Manually_handle_default_preferences
-
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/**
+ * This file has to be called only once. It handles the default
+ * preferences [1], so it has to be called quite early at the
+ * extension startup.
+ *
+ * Note that this script may _only_ be loaded from the main process!
+ * Also note that if possible this script shouldn't import any other
+ * of RP's modules, e.g. to prevent import() loops.
+ *
+ * [1] https://developer.mozilla.org/en-US/Add-ons/How_to_convert_an_overlay_extension_to_restartless#Step_4.3A_Manually_handle_default_preferences
+ */
 
-Cu.import("resource://gre/modules/Services.jsm");
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+//==============================================================================
 
 let prefInitFunctions = {
   getGenericPref: function(branch, prefName) {
diff --git a/src/content/main/pref-manager.jsm b/src/content/main/pref-manager.jsm
index b617845..b4a5a7c 100644
--- a/src/content/main/pref-manager.jsm
+++ b/src/content/main/pref-manager.jsm
@@ -21,35 +21,41 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["PrefManager"];
+/* exported PrefManager */
+this.EXPORTED_SYMBOLS = ["PrefManager"];
 
 let globalScope = this;
 
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/devtools/Console.jsm");
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/utils/constants",
-  "lib/environment"
-], globalScope);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {C} = importModule("lib/utils/constants");
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
 
+//==============================================================================
+// pref branches
+//==============================================================================
+
+/* global rpPrefBranch */
 XPCOMUtils.defineLazyGetter(globalScope, "rpPrefBranch", function() {
   return Services.prefs.getBranch("extensions.requestpolicy.")
       .QueryInterface(Ci.nsIPrefBranch2);
 });
+
+/* global rootPrefBranch */
 XPCOMUtils.defineLazyGetter(globalScope, "rootPrefBranch", function() {
   return Services.prefs.getBranch("").QueryInterface(Ci.nsIPrefBranch2);
 });
 
-
-
-
+//==============================================================================
+// PrefManager
+//==============================================================================
 
 var PrefManager = (function() {
   let self = {};
diff --git a/src/content/main/requestpolicy-service.jsm b/src/content/main/requestpolicy-service.jsm
index 4e7bcc8..ec7f7ba 100644
--- a/src/content/main/requestpolicy-service.jsm
+++ b/src/content/main/requestpolicy-service.jsm
@@ -21,43 +21,42 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-let EXPORTED_SYMBOLS = ["rpService"];
+/* exported rpService */
+this.EXPORTED_SYMBOLS = ["rpService"];
 
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/AddonManager.jsm");
-
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules([
-  "lib/logger",
-  "lib/prefs",
-  "lib/utils/domains",
-  "lib/policy-manager",
-  "lib/subscription",
-  "lib/utils",
-  "lib/utils/constants",
-  "lib/environment"
-], this);
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+let {AddonManager} = Cu.import("resource://gre/modules/AddonManager.jsm", {});
 
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {Prefs, rpPrefBranch} = importModule("lib/prefs");
+let {PolicyManager} = importModule("lib/policy-manager");
+let {UserSubscriptions, SUBSCRIPTION_UPDATED_TOPIC, SUBSCRIPTION_ADDED_TOPIC,
+     SUBSCRIPTION_REMOVED_TOPIC} = importModule("lib/subscription");
+let {C} = importModule("lib/utils/constants");
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
 
+//==============================================================================
+// rpService
+//==============================================================================
 
 var rpService = (function() {
   let self = {};
 
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
   // Internal Data
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
 
   let subscriptions = null;
 
 
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
   // Utility
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
 
 
   function loadConfigAndRules() {
@@ -225,15 +224,15 @@ var rpService = (function() {
     }
 
     return {checkForOtherInstallations: checkForOtherInstallations};
-  })();
+  }());
 
 
 
 
 
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
   // startup and shutdown functions
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
 
   // prepare back-end
   ProcessEnvironment.addStartupFunction(Environment.LEVELS.BACKEND,
@@ -277,9 +276,9 @@ var rpService = (function() {
 
 
 
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
   // nsIObserver interface
-  // /////////////////////////////////////////////////////////////////////////
+  //----------------------------------------------------------------------------
 
   self.observe = function(subject, topic, data) {
     switch (topic) {
diff --git a/src/content/main/window-manager-toolbarbutton.js b/src/content/main/window-manager-toolbarbutton.js
index 932557a..041ace5 100644
--- a/src/content/main/window-manager-toolbarbutton.js
+++ b/src/content/main/window-manager-toolbarbutton.js
@@ -21,23 +21,35 @@
  * ***** END LICENSE BLOCK *****
  */
 
-const Ci = Components.interfaces;
-const Cc = Components.classes;
-const Cu = Components.utils;
+/* global Components */
+const {utils: Cu} = Components;
 
-const toolbarButtonId = "rpcontinuedToolbarButton";
+/* global rpWindowManager: true */
 
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
-Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm");
-ScriptLoader.importModules(["lib/utils/xul", "lib/utils/info", "lib/logger"], this);
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
+let {XULUtils} = importModule("lib/utils/xul");
+let {Info} = importModule("lib/utils/info");
+let {Logger} = importModule("lib/logger");
 
+let CustomizableUI = null;
 if (Info.isAustralis) {
-  Components.utils.import("resource:///modules/CustomizableUI.jsm");
+  // FIXME: Re-enable (W126) when JSHint issue #2775 is fixed.
+  /* jshint -W126 */
+  ({CustomizableUI} = Cu.import("resource:///modules/CustomizableUI.jsm",
+                                {}));
+  /* jshint +W126 */
 }
 
-
+//==============================================================================
+// rpWindowManager (extension)
+//==============================================================================
 
 rpWindowManager = (function(self) {
+  const toolbarButtonId = "rpcontinuedToolbarButton";
 
   let isAustralis = Info.isAustralis;
 
diff --git a/src/content/main/window-manager.jsm b/src/content/main/window-manager.jsm
index 52e8c7c..f5e1349 100644
--- a/src/content/main/window-manager.jsm
+++ b/src/content/main/window-manager.jsm
@@ -21,32 +21,38 @@
  * ***** END LICENSE BLOCK *****
  */
 
-let EXPORTED_SYMBOLS = ["rpWindowManager"];
+/* global Components */
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
-let globalScope = this;
+/* exported rpWindowManager */
+this.EXPORTED_SYMBOLS = ["rpWindowManager"];
 
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
-var rpWindowManager = (function(self) {
+let {ScriptLoader: {importModule}} = Cu.import(
+    "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+let {Logger} = importModule("lib/logger");
+let {Info} = importModule("lib/utils/info");
+let {XULUtils} = importModule("lib/utils/xul");
+let {Environment, ProcessEnvironment} = importModule("lib/environment");
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
+//==============================================================================
+// WindowListener
+//==============================================================================
 
-  Cu.import("resource://gre/modules/Services.jsm", globalScope);
-  Cu.import("resource://gre/modules/XPCOMUtils.jsm", globalScope);
+let WindowListener = (function () {
+  let scope = {};
+  Services.scriptloader.loadSubScript(
+      "chrome://rpcontinued/content/main/window-manager.listener.js", scope);
+  return scope.WindowListener;
+}());
 
-  Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", globalScope);
-  ScriptLoader.importModules([
-    "lib/utils/info",
-    "lib/utils/xul",
-    "lib/utils/constants",
-    "lib/environment"
-  ], globalScope);
+//==============================================================================
+// rpWindowManager
+//==============================================================================
 
-  // import the WindowListener
-  Services.scriptloader.loadSubScript(
-      "chrome://rpcontinued/content/main/window-manager.listener.js",
-      globalScope);
+var rpWindowManager = (function () {
+  let self = {};
 
   let styleSheets = [
     "chrome://rpcontinued/skin/requestpolicy.css"
@@ -228,10 +234,12 @@ var rpWindowManager = (function(self) {
 
 
   return self;
-}(rpWindowManager || {}));
+}());
 
-
-// extend rpWindowManager
-Services.scriptloader.loadSubScript(
-    "chrome://rpcontinued/content/main/window-manager-toolbarbutton.js",
-    globalScope);
+rpWindowManager = (function () {
+  let scope = {rpWindowManager};
+  Services.scriptloader.loadSubScript(
+      "chrome://rpcontinued/content/main/window-manager-toolbarbutton.js",
+      scope);
+  return scope.rpWindowManager;
+}());
diff --git a/src/content/main/window-manager.listener.js b/src/content/main/window-manager.listener.js
index afbbeeb..714fa0c 100644
--- a/src/content/main/window-manager.listener.js
+++ b/src/content/main/window-manager.listener.js
@@ -21,7 +21,18 @@
  * ***** END LICENSE BLOCK *****
  */
 
-WindowListener = (function() {
+/* global Components */
+const {interfaces: Ci, utils: Cu} = Components;
+
+/* exported WindowListener */
+
+let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+
+//==============================================================================
+// WindowListener
+//==============================================================================
+
+var WindowListener = (function() {
   let self = {};
 
   let nextWinID = 0;
diff --git a/src/content/ui/classicmenu.js b/src/content/ui/classicmenu.js
index 3dfb9a5..8d29b64 100644
--- a/src/content/ui/classicmenu.js
+++ b/src/content/ui/classicmenu.js
@@ -21,26 +21,24 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window, document */
 
+window.rpcontinued.classicmenu = (function () {
+  var self = {};
 
+  /* global Components */
+  const {utils: Cu} = Components;
 
-rpcontinued.classicmenu = (function() {
-  let self = {};
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {Logger} = importModule("lib/logger");
+  let {rpPrefBranch} = importModule("lib/prefs");
+  let {StringUtils} = importModule("lib/utils/strings");
+  let {DOMUtils} = importModule("lib/utils/dom");
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-
-  let {ScriptLoader} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    return mod;
-  }());
-  let {rpPrefBranch} = ScriptLoader.importModule("lib/prefs");
-  let {StringUtils} = ScriptLoader.importModule("lib/utils/strings");
-  let {DOMUtils} = ScriptLoader.importModule("lib/utils/dom");
+  let rpcontinued = window.rpcontinued;
 
+  //============================================================================
 
   /**
   * Reloads the current document if the user's preferences indicate it should
@@ -48,7 +46,7 @@ rpcontinued.classicmenu = (function() {
   */
   function conditionallyReloadDocument() {
     if (rpPrefBranch.getBoolPref("autoReload")) {
-      content.document.location.reload(false);
+      window.content.document.location.reload(false);
     }
   }
 
diff --git a/src/content/ui/frame.blocked-content.js b/src/content/ui/frame.blocked-content.js
index 0a7a658..15772cd 100644
--- a/src/content/ui/frame.blocked-content.js
+++ b/src/content/ui/frame.blocked-content.js
@@ -20,9 +20,12 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* exported ManagerForBlockedContent */
+
 var ManagerForBlockedContent = (function() {
   let self = {};
 
+  //============================================================================
 
   let missingImageDataUri = "data:image/png;base64,"
       + "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c"
diff --git a/src/content/ui/frame.dom-content-loaded.js b/src/content/ui/frame.dom-content-loaded.js
index cf8b080..d24acbc 100644
--- a/src/content/ui/frame.dom-content-loaded.js
+++ b/src/content/ui/frame.dom-content-loaded.js
@@ -20,13 +20,26 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* exported ManagerForDOMContentLoaded */
+/* global mm, overlayComm, framescriptEnv, ManagerForBlockedContent */
 
 var ManagerForDOMContentLoaded = (function() {
   let self = {};
 
-  let {DomainUtil} = ScriptLoader.importModule("lib/utils/domains");
-  let {Utils} = ScriptLoader.importModule("lib/utils");
+  /* global Components */
+  const {interfaces: Ci, utils: Cu} = Components;
 
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {Logger} = importModule("lib/logger");
+  let {DomainUtil} = importModule("lib/utils/domains");
+  let {Utils} = importModule("lib/utils");
+  let {Environment} = importModule("lib/environment");
+  let {C} = importModule("lib/utils/constants");
+
+  let {content} = mm;
+
+  //============================================================================
 
   function htmlAnchorTagClicked(event) {
     // Notify the main thread that a link has been clicked.
diff --git a/src/content/ui/frame.js b/src/content/ui/frame.js
index 05d0cca..2eeaadf 100644
--- a/src/content/ui/frame.js
+++ b/src/content/ui/frame.js
@@ -20,43 +20,29 @@
  * ***** END LICENSE BLOCK *****
  */
 
-Components.utils.import("resource://gre/modules/Services.jsm");
-Components.utils.import("resource://gre/modules/devtools/Console.jsm");
-
-/**
- * This anonymous function is needed because of Mozilla Bug 673569, fixed in
- * Firefox 29 / Gecko 29.
- * The bug means that all frame scripts run in the same shared scope. The
- * anonymous function ensures that the framescripts do not overwrite
- * one another.
- */
 (function () {
-  //console.debug('[RPC] new framescript loading...');
+  /* global Components */
+  const {utils: Cu} = Components;
+
+  let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
+  //let {console} = Cu.import("resource://gre/modules/devtools/Console.jsm", {});
+
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {C} = importModule("lib/utils/constants");
+  let {Environment, FrameScriptEnvironment} = importModule("lib/environment");
+  let {FramescriptToOverlayCommunication} = importModule(
+      "lib/framescript-to-overlay-communication");
 
   // the ContentFrameMessageManager of this framescript
   let mm = this;
+  let {content, sendSyncMessage} = mm;
+
+  //============================================================================
+
+  //console.debug('[RPC] new framescript loading...');
+
 
-  const Cu = Components.utils;
-
-  // import some modules
-  let {
-    ScriptLoader,
-    C,
-    Logger,
-    Environment,
-    FrameScriptEnvironment,
-    FramescriptToOverlayCommunication
-  } = (function () {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    mod.ScriptLoader.importModules([
-      "lib/utils/constants",
-      "lib/logger",
-      "lib/environment",
-      "lib/framescript-to-overlay-communication"
-    ], mod);
-    return mod;
-  })();
 
 
   let framescriptEnv = new FrameScriptEnvironment(mm);
@@ -66,25 +52,7 @@ Components.utils.import("resource://gre/modules/devtools/Console.jsm");
 
   // Create a scope for the sub-scripts, which also can
   // be removed easily when the framescript gets unloaded.
-  var framescriptScope = {
-    "mm": mm,
-    "content": mm.content,
-    "Components": mm.Components,
-
-    "Ci": mm.Components.interfaces,
-    "Cc": mm.Components.classes,
-    "Cu": mm.Components.utils,
-
-    "ScriptLoader": ScriptLoader,
-    "C": C,
-    "Logger": Logger,
-    "console": console,
-    "Environment": Environment,
-
-    "framescriptEnv": framescriptEnv,
-    "mlManager": mlManager,
-    "overlayComm": overlayComm
-  };
+  var framescriptScope = {mm, framescriptEnv, mlManager, overlayComm};
 
   function loadSubScripts() {
     Services.scriptloader.loadSubScript(
diff --git a/src/content/ui/menu.js b/src/content/ui/menu.js
index d831724..d46e9a5 100644
--- a/src/content/ui/menu.js
+++ b/src/content/ui/menu.js
@@ -21,34 +21,33 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window, document */
+
+window.rpcontinued.menu = (function () {
+  /* global Components */
+  const {utils: Cu} = Components;
+
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+
+  let {Environment} = importModule("lib/environment");
+  let {Logger} = importModule("lib/logger");
+  let {rpPrefBranch, Prefs} = importModule("lib/prefs");
+  let {RequestProcessor} = importModule("lib/request-processor");
+  let {PolicyManager} = importModule("lib/policy-manager");
+  let {DomainUtil} = importModule("lib/utils/domains");
+  let {Ruleset} = importModule("lib/ruleset");
+  let {GUIOrigin, GUIDestination, GUILocation, GUILocationProperties} =
+      importModule("lib/gui-location");
+  let {StringUtils} = importModule("lib/utils/strings");
+  let {DOMUtils} = importModule("lib/utils/dom");
+  let {WindowUtils} = importModule("lib/utils/windows");
+  let {C} = importModule("lib/utils/constants");
+
+  let rpcontinued = window.rpcontinued;
+
+  //============================================================================
 
-rpcontinued.menu = (function() {
-
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-
-  let {ScriptLoader} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    return mod;
-  }());
-  // iMod: Alias for ScriptLoader.importModule
-  let iMod = ScriptLoader.importModule;
-  let {Environment} = iMod("lib/environment");
-  let {Logger} = iMod("lib/logger");
-  let {rpPrefBranch, Prefs} = iMod("lib/prefs");
-  let {RequestProcessor} = iMod("lib/request-processor");
-  let {PolicyManager} = iMod("lib/policy-manager");
-  let {DomainUtil} = iMod("lib/utils/domains");
-  let {Ruleset} = iMod("lib/ruleset");
-  let {GUIOrigin, GUIDestination,
-       GUILocation, GUILocationProperties} = iMod("lib/gui-location");
-  let {StringUtils} = iMod("lib/utils/strings");
-  let {DOMUtils} = iMod("lib/utils/dom");
-  let {WindowUtils} = iMod("lib/utils/windows");
-  let {C} = iMod("lib/utils/constants");
 
   let gBrowser = WindowUtils.getTabBrowser(window);
 
diff --git a/src/content/ui/overlay.js b/src/content/ui/overlay.js
index d17a6ee..9da2926 100644
--- a/src/content/ui/overlay.js
+++ b/src/content/ui/overlay.js
@@ -21,37 +21,38 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window, document */
 
 /**
  * Provides functionality for the overlay. An instance of this class exists for
  * each tab/window.
  */
-rpcontinued.overlay = (function() {
-
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-  let {ScriptLoader, XPCOMUtils} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    Cu.import("resource://gre/modules/XPCOMUtils.jsm", mod);
-    return mod;
-  }());
-
-  // iMod: Alias for ScriptLoader.importModule
-  let iMod = ScriptLoader.importModule;
-  let {Environment, ProcessEnvironment} = iMod("lib/environment");
-  let {ManagerForMessageListeners} = iMod("lib/manager-for-message-listeners");
-  let {Logger} = iMod("lib/logger");
-  let {rpPrefBranch, Prefs} = iMod("lib/prefs");
-  let {RequestProcessor} = iMod("lib/request-processor");
-  let {PolicyManager} = iMod("lib/policy-manager");
-  let {DomainUtil} = iMod("lib/utils/domains");
-  let {StringUtils} = iMod("lib/utils/strings");
-  let {WindowUtils} = iMod("lib/utils/windows");
-  let {Utils} = iMod("lib/utils");
-  let {C} = iMod("lib/utils/constants");
+window.rpcontinued.overlay = (function () {
+
+  /* global Components */
+  const {utils: Cu} = Components;
+
+  let {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {});
+
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {Environment, ProcessEnvironment} = importModule("lib/environment");
+  let {ManagerForMessageListeners} = importModule(
+      "lib/manager-for-message-listeners");
+  let {Logger} = importModule("lib/logger");
+  let {rpPrefBranch, Prefs} = importModule("lib/prefs");
+  let {RequestProcessor} = importModule("lib/request-processor");
+  let {PolicyManager} = importModule("lib/policy-manager");
+  let {DomainUtil} = importModule("lib/utils/domains");
+  let {StringUtils} = importModule("lib/utils/strings");
+  let {WindowUtils} = importModule("lib/utils/windows");
+  let {Utils} = importModule("lib/utils");
+  let {C} = importModule("lib/utils/constants");
+
+  let rpcontinued = window.rpcontinued;
+
+  //============================================================================
+
 
   let gBrowser = WindowUtils.getTabBrowser(window);
 
@@ -929,7 +930,7 @@ rpcontinued.overlay = (function() {
           return;
         }
         // call this function again in a few miliseconds.
-        setTimeout(function () {
+        window.setTimeout(function () {
           // Prevent the `setTimeout` warning of the AMO Validator.
           tryAddingSHistoryListener();
         }, waitTime);
diff --git a/src/content/ui/request-log.filtering.js b/src/content/ui/request-log.filtering.js
index f288d17..bbfbb61 100644
--- a/src/content/ui/request-log.filtering.js
+++ b/src/content/ui/request-log.filtering.js
@@ -21,20 +21,17 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window */
 
 window.rpcontinued.requestLog = (function (self) {
+  /* global Components */
+  const {utils: Cu} = Components;
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-  let {ScriptLoader, Services} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    Cu.import("resource://gre/modules/Services.jsm", mod);
-    return mod;
-  }());
-  let {WindowUtils} = ScriptLoader.importModule("lib/utils/windows");
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {WindowUtils} = importModule("lib/utils/windows");
+
+  //============================================================================
 
   let filterText = null;
 
diff --git a/src/content/ui/request-log.interface.js b/src/content/ui/request-log.interface.js
index dfaf643..c05e050 100644
--- a/src/content/ui/request-log.interface.js
+++ b/src/content/ui/request-log.interface.js
@@ -21,26 +21,22 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window */
+
 window.rpcontinued = window.rpcontinued || {};
 
 window.rpcontinued.requestLog = (function (self) {
+  /* global Components */
+  const {utils: Cu} = Components;
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-  let {ScriptLoader, Services} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    Cu.import("resource://gre/modules/Services.jsm", mod);
-    return mod;
-  }());
-  let {DomainUtil} = ScriptLoader.importModule("lib/utils/domains");
-  let {StringUtils} = ScriptLoader.importModule("lib/utils/strings");
-  let {Utils} = ScriptLoader.importModule("lib/utils");
-
+  let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
 
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {DomainUtil} = importModule("lib/utils/domains");
+  let {StringUtils} = importModule("lib/utils/strings");
 
+  //============================================================================
 
   self.clear = function() {
     var count = self.treeView.rowCount;
diff --git a/src/content/ui/request-log.js b/src/content/ui/request-log.js
index efd67cc..45898e0 100644
--- a/src/content/ui/request-log.js
+++ b/src/content/ui/request-log.js
@@ -21,23 +21,20 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window */
+
 window.rpcontinued = window.rpcontinued || {};
 
 window.rpcontinued.requestLog = (function (self) {
+  /* global Components */
+  const {utils: Cu} = Components;
+
+  let {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  let {StringUtils} = importModule("lib/utils/strings");
+  let {Environment, ProcessEnvironment} = importModule("lib/environment");
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-  let {ScriptLoader} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    return mod;
-  }());
-  let {StringUtils} = ScriptLoader.importModule("lib/utils/strings");
-  let {WindowUtils} = ScriptLoader.importModule("lib/utils/windows");
-  let {Environment,
-       ProcessEnvironment} = ScriptLoader.importModule("lib/environment");
+  //============================================================================
 
   // create a new Environment for this window
   var WinEnv = new Environment(ProcessEnvironment, "WinEnv");
diff --git a/src/content/ui/request-log.tree-view.js b/src/content/ui/request-log.tree-view.js
index c11bc58..c25e770 100644
--- a/src/content/ui/request-log.tree-view.js
+++ b/src/content/ui/request-log.tree-view.js
@@ -21,24 +21,13 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global window */
+
 window.rpcontinued = window.rpcontinued || {};
 
 window.rpcontinued.requestLog = (function (self) {
 
-  const Ci = Components.interfaces;
-  const Cc = Components.classes;
-  const Cu = Components.utils;
-
-
-  let {ScriptLoader} = (function() {
-    let mod = {};
-    Cu.import("chrome://rpcontinued/content/lib/script-loader.jsm", mod);
-    return mod;
-  }());
-  let {StringUtils} = ScriptLoader.importModule("lib/utils/strings");
-
-
-
+  //============================================================================
 
   self.treebox = null;
 
@@ -49,8 +38,6 @@ window.rpcontinued.requestLog = (function (self) {
     "rpcontinued-requestLog-time" : 3
   };
 
-  let aserv = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService);
-
 
   function getVisibleRowAtIndex(index) {
     return self.visibleRows[self.visibleRows.length - index - 1];
diff --git a/src/content/ui/xul-trees.js b/src/content/ui/xul-trees.js
index 7770a78..fa6c7f3 100644
--- a/src/content/ui/xul-trees.js
+++ b/src/content/ui/xul-trees.js
@@ -21,6 +21,8 @@
  * ***** END LICENSE BLOCK *****
  */
 
+/* global exports: true, C, appID */
+
 // differences in seamonkey:
 // https://developer.mozilla.org/en-US/Add-ons/SeaMonkey_2
 let isSeamonkey = appID === C.SEAMONKEY_ID;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git



More information about the Pkg-mozext-commits mailing list