mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out changeset 74f015f58be9 (bug 1037235) under suspicion of causing various failures on a CLOSED TREE
This commit is contained in:
parent
c5e3244bee
commit
52c0ba983a
@ -14,25 +14,74 @@ module.metadata = {
|
||||
require('chrome') // Otherwise CFX will complain about Components
|
||||
require('toolkit/loader') // Otherwise CFX will stip out loader.js
|
||||
require('sdk/addon/runner') // Otherwise CFX will stip out addon/runner.js
|
||||
require('sdk/system/xul-app') // Otherwise CFX will stip out sdk/system/xul-app
|
||||
*/
|
||||
|
||||
const { classes: Cc, Constructor: CC, interfaces: Ci, utils: Cu } = Components;
|
||||
|
||||
const {
|
||||
incompatibility
|
||||
} = Cu.import("resource://gre/modules/sdk/system/XulApp.js", {}).XulApp;
|
||||
|
||||
// `loadSandbox` is exposed by bootstrap.js
|
||||
const loaderURI = module.uri.replace("sdk/loader/cuddlefish.js",
|
||||
"toolkit/loader.js");
|
||||
const xulappURI = module.uri.replace("loader/cuddlefish.js",
|
||||
"system/xul-app.js");
|
||||
// We need to keep a reference to the sandbox in order to unload it in
|
||||
// bootstrap.js
|
||||
|
||||
const loaderSandbox = loadSandbox(loaderURI);
|
||||
const loaderModule = loaderSandbox.exports;
|
||||
|
||||
const xulappSandbox = loadSandbox(xulappURI);
|
||||
const xulappModule = xulappSandbox.exports;
|
||||
|
||||
const { override, load } = loaderModule;
|
||||
|
||||
/**
|
||||
* Ensure the current application satisfied the requirements specified in the
|
||||
* module given. If not, an exception related to the incompatibility is
|
||||
* returned; `null` otherwise.
|
||||
*
|
||||
* @param {Object} module
|
||||
* The module to check
|
||||
* @returns {Error}
|
||||
*/
|
||||
function incompatibility(module) {
|
||||
let { metadata, id } = module;
|
||||
|
||||
// if metadata or engines are not specified we assume compatibility is not
|
||||
// an issue.
|
||||
if (!metadata || !("engines" in metadata))
|
||||
return null;
|
||||
|
||||
let { engines } = metadata;
|
||||
|
||||
if (engines === null || typeof(engines) !== "object")
|
||||
return new Error("Malformed engines' property in metadata");
|
||||
|
||||
let applications = Object.keys(engines);
|
||||
|
||||
let versionRange;
|
||||
applications.forEach(function(name) {
|
||||
if (xulappModule.is(name)) {
|
||||
versionRange = engines[name];
|
||||
// Continue iteration. We want to ensure the module doesn't
|
||||
// contain a typo in the applications' name or some unknown
|
||||
// application - `is` function throws an exception in that case.
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof(versionRange) === "string") {
|
||||
if (xulappModule.satisfiesVersion(versionRange))
|
||||
return null;
|
||||
|
||||
return new Error("Unsupported Application version: The module " + id +
|
||||
" currently supports only version " + versionRange + " of " +
|
||||
xulappModule.name + ".");
|
||||
}
|
||||
|
||||
return new Error("Unsupported Application: The module " + id +
|
||||
" currently supports only " + applications.join(", ") + ".")
|
||||
}
|
||||
|
||||
function CuddlefishLoader(options) {
|
||||
let { manifest } = options;
|
||||
|
||||
@ -41,7 +90,8 @@ function CuddlefishLoader(options) {
|
||||
// cache to avoid subsequent loads via `require`.
|
||||
modules: override({
|
||||
'toolkit/loader': loaderModule,
|
||||
'sdk/loader/cuddlefish': exports
|
||||
'sdk/loader/cuddlefish': exports,
|
||||
'sdk/system/xul-app': xulappModule
|
||||
}, options.modules),
|
||||
resolve: function resolve(id, requirer) {
|
||||
let entry = requirer && requirer in manifest && manifest[requirer];
|
||||
|
@ -42,9 +42,6 @@ const { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm", {});
|
||||
const { Reflect } = Cu.import("resource://gre/modules/reflect.jsm", {});
|
||||
const { ConsoleAPI } = Cu.import("resource://gre/modules/devtools/Console.jsm");
|
||||
const { join: pathJoin, normalize, dirname } = Cu.import("resource://gre/modules/osfile/ospath_unix.jsm");
|
||||
const {
|
||||
incompatibility
|
||||
} = Cu.import("resource://gre/modules/sdk/system/XulApp.js", {}).XulApp;
|
||||
|
||||
// Define some shortcuts.
|
||||
const bind = Function.call.bind(Function.bind);
|
||||
@ -352,12 +349,6 @@ const load = iced(function load(loader, module) {
|
||||
});
|
||||
}
|
||||
|
||||
let (error = incompatibility(module)) {
|
||||
if (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
if (module.exports && typeof(module.exports) === 'object')
|
||||
freeze(module.exports);
|
||||
|
||||
|
@ -183,51 +183,3 @@ function satisfiesVersion(version, versionRange) {
|
||||
});
|
||||
}
|
||||
exports.satisfiesVersion = satisfiesVersion;
|
||||
|
||||
/**
|
||||
* Ensure the current application satisfied the requirements specified in the
|
||||
* module given. If not, an exception related to the incompatibility is
|
||||
* returned; `null` otherwise.
|
||||
*
|
||||
* @param {Object} module
|
||||
* The module to check
|
||||
* @returns {Error}
|
||||
*/
|
||||
function incompatibility(module) {
|
||||
let { metadata, id } = module;
|
||||
|
||||
// if metadata or engines are not specified we assume compatibility is not
|
||||
// an issue.
|
||||
if (!metadata || !("engines" in metadata))
|
||||
return null;
|
||||
|
||||
let { engines } = metadata;
|
||||
|
||||
if (engines === null || typeof(engines) !== "object")
|
||||
return new Error("Malformed engines' property in metadata");
|
||||
|
||||
let applications = Object.keys(engines);
|
||||
|
||||
let versionRange;
|
||||
applications.forEach(function(name) {
|
||||
if (is(name)) {
|
||||
versionRange = engines[name];
|
||||
// Continue iteration. We want to ensure the module doesn't
|
||||
// contain a typo in the applications' name or some unknown
|
||||
// application - `is` function throws an exception in that case.
|
||||
}
|
||||
});
|
||||
|
||||
if (typeof(versionRange) === "string") {
|
||||
if (satisfiesVersion(versionRange))
|
||||
return null;
|
||||
|
||||
return new Error("Unsupported Application version: The module " + id +
|
||||
" currently supports only version " + versionRange + " of " +
|
||||
name + ".");
|
||||
}
|
||||
|
||||
return new Error("Unsupported Application: The module " + id +
|
||||
" currently supports only " + applications.join(", ") + ".")
|
||||
}
|
||||
exports.incompatibility = incompatibility;
|
||||
|
@ -1,10 +1,10 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
'use strict';
|
||||
|
||||
const { Loader, Require, unload, override } = require('sdk/loader/cuddlefish');
|
||||
const app = require('sdk/system/xul-app');
|
||||
const packaging = require('@loader/options');
|
||||
|
||||
exports['test loader'] = function(assert) {
|
||||
@ -44,19 +44,4 @@ exports['test loader'] = function(assert) {
|
||||
'loader.unload() must call listeners in LIFO order.');
|
||||
};
|
||||
|
||||
exports['test loader on unsupported modules'] = function(assert) {
|
||||
let loader = Loader({});
|
||||
let err = "";
|
||||
assert.throws(() => {
|
||||
if (!app.is('Firefox')) {
|
||||
require('./fixtures/loader/unsupported/firefox');
|
||||
}
|
||||
else {
|
||||
require('./fixtures/loader/unsupported/fennec');
|
||||
}
|
||||
}, /^Unsupported Application/, "throws Unsupported Application");
|
||||
|
||||
unload(loader);
|
||||
};
|
||||
|
||||
require('sdk/test').run(exports);
|
||||
require('test').run(exports);
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
'use strict';
|
||||
|
||||
let {
|
||||
@ -10,10 +11,9 @@ let { readURI } = require('sdk/net/url');
|
||||
|
||||
let root = module.uri.substr(0, module.uri.lastIndexOf('/'))
|
||||
|
||||
|
||||
// The following adds Debugger constructor to the global namespace.
|
||||
const { Cu } = require('chrome');
|
||||
const app = require('sdk/system/xul-app');
|
||||
|
||||
const { addDebuggerToGlobal } = Cu.import('resource://gre/modules/jsdebugger.jsm', {});
|
||||
addDebuggerToGlobal(this);
|
||||
|
||||
@ -331,7 +331,7 @@ exports['test console global by default'] = function (assert) {
|
||||
let uri = root + '/fixtures/loader/globals/';
|
||||
let loader = Loader({ paths: { '': uri }});
|
||||
let program = main(loader, 'main');
|
||||
|
||||
|
||||
assert.ok(typeof program.console === 'object', 'global `console` exists');
|
||||
assert.ok(typeof program.console.log === 'function', 'global `console.log` exists');
|
||||
|
||||
@ -366,19 +366,4 @@ exports['test shared globals'] = function(assert) {
|
||||
unload(loader);
|
||||
}
|
||||
|
||||
exports['test loader on unsupported modules'] = function(assert) {
|
||||
let loader = Loader({});
|
||||
let err = "";
|
||||
assert.throws(() => {
|
||||
if (!app.is('Firefox')) {
|
||||
require('./fixtures/loader/unsupported/firefox');
|
||||
}
|
||||
else {
|
||||
require('./fixtures/loader/unsupported/fennec');
|
||||
}
|
||||
}, /^Unsupported Application/, "throws Unsupported Application");
|
||||
|
||||
unload(loader);
|
||||
};
|
||||
|
||||
require('sdk/test').run(exports);
|
||||
require('test').run(exports);
|
||||
|
Loading…
Reference in New Issue
Block a user