Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/compat.js

Issue 29452181: Noissue - Merge current tip to Edge bookmark (Closed)
Patch Set: Created May 30, 2017, 3:49 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « inject.preload.js ('k') | lib/csp.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/compat.js
===================================================================
--- a/lib/compat.js
+++ b/lib/compat.js
@@ -1,6 +1,6 @@
/*
* This file is part of Adblock Plus <https://adblockplus.org/>,
- * Copyright (C) 2006-2016 Eyeo GmbH
+ * Copyright (C) 2006-2017 eyeo GmbH
*
* Adblock Plus is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
@@ -17,29 +17,6 @@
"use strict";
-//
-// Module framework stuff
-//
-
-function require(module)
-{
- if (!(module in require.scopes))
- {
- let scope = {exports: {}};
- require.scopes[module] = require.modules[module](scope, scope.exports);
- }
- return require.scopes[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() {},
@@ -50,13 +27,15 @@
// XPCOM emulation
//
-let Components =
-{
+function nsIFileURL() {}
+function nsIHttpChannel() {}
+
+let Components = {
interfaces:
{
nsIFile: {DIRECTORY_TYPE: 0},
- nsIFileURL() {},
- nsIHttpChannel() {},
+ nsIFileURL,
+ nsIHttpChannel,
nsITimer: {TYPE_REPEATING_SLACK: 0},
nsIInterfaceRequestor: null,
nsIChannelEventSink: null
@@ -74,8 +53,16 @@
},
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)
{
@@ -91,50 +78,17 @@
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
-//
-
-function FakeFile(path)
-{
- this.path = path;
-}
-FakeFile.prototype =
-{
- get leafName()
- {
- return this.path;
- },
- set leafName(value)
- {
- this.path = value;
- },
- append(path)
- {
- this.path += path;
- },
- clone()
- {
- return new FakeFile(this.path);
- },
- get parent()
- {
- return {create() {}};
- },
- normalize() {}
-};
+});
//
// Services.jsm module emulation
//
-let Services =
-{
+Cu.import.resources.set("Services", {
obs: {
addObserver() {},
removeObserver() {}
@@ -207,16 +161,15 @@
return 0;
}
}
-}
+});
//
// FileUtils.jsm module emulation
//
-let FileUtils =
-{
+Cu.import.resources.set("FileUtils", {
PERMS_DIRECTORY: 0
-};
+});
function FakeTimer()
{
@@ -239,7 +192,7 @@
{
this.callback();
}
- catch(e)
+ catch (e)
{
Cu.reportError(e);
}
@@ -252,8 +205,7 @@
// Add a channel property to XMLHttpRequest, Synchronizer needs it
//
-XMLHttpRequest.prototype.channel =
-{
+XMLHttpRequest.prototype.channel = {
status: -1,
notificationCallbacks: {},
loadFlags: 0,
« no previous file with comments | « inject.preload.js ('k') | lib/csp.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld