mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 812608 - Part 0: API to (re)define nsIXULAppInfo from unit tests; r=rnewman
This commit is contained in:
parent
561a42877c
commit
72031d6ed9
@ -18,6 +18,7 @@ modules := \
|
||||
|
||||
testing_modules := \
|
||||
mocks.jsm \
|
||||
utils.jsm \
|
||||
$(NULL)
|
||||
|
||||
TEST_DIRS += tests
|
||||
|
73
services/healthreport/modules-testing/utils.jsm
Normal file
73
services/healthreport/modules-testing/utils.jsm
Normal file
@ -0,0 +1,73 @@
|
||||
/* 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";
|
||||
|
||||
this.EXPORTED_SYMBOLS = [
|
||||
"getAppInfo",
|
||||
"updateAppInfo",
|
||||
];
|
||||
|
||||
|
||||
const {interfaces: Ci, results: Cr, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
let APP_INFO = {
|
||||
vendor: "Mozilla",
|
||||
name: "xpcshell",
|
||||
ID: "xpcshell@tests.mozilla.org",
|
||||
version: "1",
|
||||
appBuildID: "20121107",
|
||||
platformVersion: "p-ver",
|
||||
platformBuildID: "20121106",
|
||||
inSafeMode: false,
|
||||
logConsoleErrors: true,
|
||||
OS: "XPCShell",
|
||||
XPCOMABI: "noarch-spidermonkey",
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULAppInfo, Ci.nsIXULRuntime]),
|
||||
invalidateCachesOnRestart: function() {},
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Obtain a reference to the current object used to define XULAppInfo.
|
||||
*/
|
||||
this.getAppInfo = function () { return APP_INFO; }
|
||||
|
||||
/**
|
||||
* Update the current application info.
|
||||
*
|
||||
* If the argument is defined, it will be the object used. Else, APP_INFO is
|
||||
* used.
|
||||
*
|
||||
* To change the current XULAppInfo, simply call this function. If there was
|
||||
* a previously registered app info object, it will be unloaded and replaced.
|
||||
*/
|
||||
this.updateAppInfo = function (obj) {
|
||||
obj = obj || APP_INFO;
|
||||
APP_INFO = obj;
|
||||
|
||||
let id = Components.ID("{fbfae60b-64a4-44ef-a911-08ceb70b9f31}");
|
||||
let cid = "@mozilla.org/xre/app-info;1";
|
||||
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
||||
|
||||
// Unregister an existing factory if one exists.
|
||||
try {
|
||||
let existing = Components.manager.getClassObjectByContractID(cid, Ci.nsIFactory);
|
||||
registrar.unregisterFactory(id, existing);
|
||||
} catch (ex) {}
|
||||
|
||||
let factory = {
|
||||
createInstance: function (outer, iid) {
|
||||
if (outer != null) {
|
||||
throw Cr.NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
|
||||
return obj.QueryInterface(iid);
|
||||
},
|
||||
};
|
||||
|
||||
registrar.registerFactory(id, "XULAppInfo", cid, factory);
|
||||
};
|
@ -14,3 +14,9 @@ do_get_profile();
|
||||
ns.initTestLogging();
|
||||
}).call(this);
|
||||
|
||||
(function createAppInfo() {
|
||||
let ns = {};
|
||||
Components.utils.import("resource://testing-common/services/healthreport/utils.jsm", ns);
|
||||
ns.updateAppInfo();
|
||||
}).call(this);
|
||||
|
||||
|
@ -10,37 +10,6 @@ Cu.import("resource://gre/modules/services/healthreport/providers.jsm");
|
||||
Cu.import("resource://gre/modules/services/metrics/dataprovider.jsm");
|
||||
|
||||
function run_test() {
|
||||
let appInfo = {
|
||||
vendor: "Mozilla",
|
||||
name: "xpcshell",
|
||||
ID: "xpcshell@tests.mozilla.org",
|
||||
version: "1",
|
||||
appBuildID: "20121107",
|
||||
platformVersion: "p-ver",
|
||||
platformBuildID: "20121106",
|
||||
inSafeMode: false,
|
||||
logConsoleErrors: true,
|
||||
OS: "XPCShell",
|
||||
XPCOMABI: "noarch-spidermonkey",
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULAppInfo, Ci.nsIXULRuntime]),
|
||||
invalidateCachesOnRestart: function() {},
|
||||
};
|
||||
|
||||
let factory = {
|
||||
createInstance: function createInstance(outer, iid) {
|
||||
if (outer != null) {
|
||||
throw Cr.NS_ERROR_NO_AGGREGATION;
|
||||
}
|
||||
|
||||
return appInfo.QueryInterface(iid);
|
||||
},
|
||||
};
|
||||
|
||||
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
||||
registrar.registerFactory(Components.ID("{fbfae60b-64a4-44ef-a911-08ceb70b9f31}"),
|
||||
"XULAppInfo", "@mozilla.org/xre/app-info;1",
|
||||
factory);
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user