| Index: lib/compat.js |
| diff --git a/lib/compat.js b/lib/compat.js |
| index c2b09dd500f241a8dc1ace2c7bbae6259d15b42a..f4037fcbba94206708765c913a0ccc48ef146dba 100644 |
| --- a/lib/compat.js |
| +++ b/lib/compat.js |
| @@ -33,13 +33,6 @@ function require(module) |
| require.modules = Object.create(null); |
| require.scopes = Object.create(null); |
| -function importAll(module, globalObj) |
| -{ |
| - let exports = require(module); |
| - for (let key in exports) |
| - globalObj[key] = exports[key]; |
| -} |
| - |
| let onShutdown = { |
| done: false, |
| add() {}, |
| @@ -53,8 +46,7 @@ let onShutdown = { |
| function nsIFileURL() {} |
| function nsIHttpChannel() {} |
| -let Components = |
| -{ |
| +let Components = { |
| interfaces: |
| { |
| nsIFile: {DIRECTORY_TYPE: 0}, |
| @@ -77,8 +69,16 @@ let Components = |
| }, |
| results: {}, |
| utils: { |
| - import() |
| + import(resource) |
| { |
| + let match = /^resource:\/\/gre\/modules\/(.+)\.jsm$/.exec(resource); |
| + let resourceName = match && match[1]; |
| + if (resourceName && Cu.import.resources.has(resourceName)) |
| + return {[resourceName]: Cu.import.resources.get(resourceName)}; |
| + |
| + throw new Error( |
| + "Attempt to import unknown JavaScript module " + resource |
| + ); |
| }, |
| reportError(e) |
| { |
| @@ -94,10 +94,11 @@ const Ci = Components.interfaces; |
| const Cr = Components.results; |
| const Cu = Components.utils; |
| -let XPCOMUtils = |
| -{ |
| +Cu.import.resources = new Map(); |
| + |
| +Cu.import.resources.set("XPCOMUtils", { |
| generateQI() {} |
| -}; |
| +}); |
| // |
| // Fake nsIFile implementation for our I/O |
| @@ -136,8 +137,7 @@ FakeFile.prototype = |
| // Services.jsm module emulation |
| // |
| -let Services = |
| -{ |
| +Cu.import.resources.set("Services", { |
| obs: { |
| addObserver() {}, |
| removeObserver() {} |
| @@ -210,22 +210,20 @@ let Services = |
| return 0; |
| } |
| } |
| -} |
| +}); |
| // |
| // FileUtils.jsm module emulation |
| // |
| -let FileUtils = |
| -{ |
| +Cu.import.resources.set("FileUtils", { |
| PERMS_DIRECTORY: 0 |
| -}; |
| +}); |
| function FakeTimer() |
| { |
| } |
| -FakeTimer.prototype = |
| -{ |
| +FakeTimer.prototype = { |
| delay: 0, |
| callback: null, |
| initWithCallback(callback, delay) |
| @@ -242,7 +240,7 @@ FakeTimer.prototype = |
| { |
| this.callback(); |
| } |
| - catch(e) |
| + catch (e) |
| { |
| Cu.reportError(e); |
| } |
| @@ -255,8 +253,7 @@ FakeTimer.prototype = |
| // Add a channel property to XMLHttpRequest, Synchronizer needs it |
| // |
| -XMLHttpRequest.prototype.channel = |
| -{ |
| +XMLHttpRequest.prototype.channel = { |
| status: -1, |
| notificationCallbacks: {}, |
| loadFlags: 0, |