mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 06:08:24 +02:00
121 lines
3.7 KiB
JavaScript
121 lines
3.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
|
|
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
Cu.import("resource://gre/modules/Promise.jsm");
|
|
Cu.import("resource://gre/modules/Task.jsm");
|
|
Cu.import("resource://gre/modules/osfile.jsm");
|
|
Cu.import("resource://services-sync/healthreport.jsm", this);
|
|
Cu.import("resource://testing-common/services/healthreport/utils.jsm", this);
|
|
Cu.import("resource://gre/modules/services/healthreport/providers.jsm");
|
|
|
|
const EXPERIMENT1_ID = "test-experiment-1@tests.mozilla.org";
|
|
const EXPERIMENT1_XPI_SHA1 = "sha1:08c4d3ef1d0fc74faa455e85106ef0bc8cf8ca90";
|
|
const EXPERIMENT1_XPI_NAME = "experiment-1.xpi";
|
|
|
|
const EXPERIMENT2_ID = "test-experiment-2@tests.mozilla.org"
|
|
const EXPERIMENT2_XPI_SHA1 = "sha1:81877991ec70360fb48db84c34a9b2da7aa41d6a";
|
|
const EXPERIMENT2_XPI_NAME = "experiment-2.xpi";
|
|
|
|
let gAppInfo = null;
|
|
|
|
function getReporter(name, uri, inspected) {
|
|
return Task.spawn(function init() {
|
|
let reporter = getHealthReporter(name, uri, inspected);
|
|
yield reporter.init();
|
|
|
|
yield reporter._providerManager.registerProviderFromType(
|
|
HealthReportProvider);
|
|
|
|
throw new Task.Result(reporter);
|
|
});
|
|
}
|
|
|
|
function disableCertificateChecks() {
|
|
let pref = "experiments.manifest.cert.checkAttributes";
|
|
Services.prefs.setBoolPref(pref, false);
|
|
do_register_cleanup(() => Services.prefs.clearUserPref(pref));
|
|
}
|
|
|
|
function patchPolicy(policy, data) {
|
|
for (let key of Object.keys(data)) {
|
|
Object.defineProperty(policy, key, {
|
|
value: data[key],
|
|
writable: true,
|
|
});
|
|
}
|
|
}
|
|
|
|
function defineNow(policy, time) {
|
|
patchPolicy(policy, { now: () => new Date(time) });
|
|
}
|
|
|
|
function futureDate(date, offset) {
|
|
return new Date(date.getTime() + offset);
|
|
}
|
|
|
|
function dateToSeconds(date) {
|
|
return date.getTime() / 1000;
|
|
}
|
|
|
|
function createAppInfo(options) {
|
|
const XULAPPINFO_CONTRACTID = "@mozilla.org/xre/app-info;1";
|
|
const XULAPPINFO_CID = Components.ID("{c763b610-9d49-455a-bbd2-ede71682a1ac}");
|
|
|
|
let options = options || {};
|
|
let id = options.id || "xpcshell@tests.mozilla.org";
|
|
let name = options.name || "XPCShell";
|
|
let version = options.version || "1.0";
|
|
let platformVersion = options.platformVersion || "1.0";
|
|
let date = options.date || new Date();
|
|
|
|
let buildID = "" + date.getYear() + date.getMonth() + date.getDate() + "01";
|
|
|
|
gAppInfo = {
|
|
// nsIXULAppInfo
|
|
vendor: "Mozilla",
|
|
name: name,
|
|
ID: id,
|
|
version: version,
|
|
appBuildID: buildID,
|
|
platformVersion: platformVersion ? platformVersion : "1.0",
|
|
platformBuildID: buildID,
|
|
|
|
// nsIXULRuntime
|
|
inSafeMode: false,
|
|
logConsoleErrors: true,
|
|
OS: "XPCShell",
|
|
XPCOMABI: "noarch-spidermonkey",
|
|
invalidateCachesOnRestart: function invalidateCachesOnRestart() {
|
|
// Do nothing
|
|
},
|
|
|
|
// nsICrashReporter
|
|
annotations: {},
|
|
|
|
annotateCrashReport: function(key, data) {
|
|
this.annotations[key] = data;
|
|
},
|
|
|
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULAppInfo,
|
|
Ci.nsIXULRuntime,
|
|
Ci.nsICrashReporter,
|
|
Ci.nsISupports])
|
|
};
|
|
|
|
let XULAppInfoFactory = {
|
|
createInstance: function (outer, iid) {
|
|
if (outer != null) {
|
|
throw Cr.NS_ERROR_NO_AGGREGATION;
|
|
}
|
|
return gAppInfo.QueryInterface(iid);
|
|
}
|
|
};
|
|
|
|
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
|
|
registrar.registerFactory(XULAPPINFO_CID, "XULAppInfo",
|
|
XULAPPINFO_CONTRACTID, XULAppInfoFactory);
|
|
}
|