forked from mirrors/gecko-dev
MozReview-Commit-ID: Ed9FfkskDos --HG-- extra : rebase_source : 6ae47dc76b3ebe77b66725a899d32e728af5d35e
83 lines
3.1 KiB
JavaScript
83 lines
3.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/* eslint-env mozilla/frame-script */
|
|
// assert is available to chrome scripts loaded via SpecialPowers.loadChromeScript.
|
|
/* global assert */
|
|
|
|
/*
|
|
* Infrastructure for the mochitest-chrome tests located in this folder, always
|
|
* executed in the parent process.
|
|
*
|
|
* See "loader_common.js" in the parent folder for a general overview.
|
|
*
|
|
* Unless you are adding new features to the framework, you shouldn't have to
|
|
* modify this file. Use "head_common.js" or "head.js" for shared code.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
|
|
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
|
|
Cu.import("resource://gre/modules/Services.jsm", this);
|
|
|
|
/* import-globals-from ../loader_common.js */
|
|
var sharedUrl = "chrome://mochitests/content/chrome/" +
|
|
"toolkit/components/formautofill/test/chrome/loader_common.js";
|
|
Services.scriptloader.loadSubScript(sharedUrl, this);
|
|
|
|
// Define output functions so they look the same across all frameworks. Since
|
|
// we don't have an output function available here, we report as TEST-PASS.
|
|
var Output = {
|
|
print: message => assert.ok(false, message),
|
|
};
|
|
|
|
// Define assertion functions so they look the same across all frameworks.
|
|
var Assert = {
|
|
ok: assert.ok,
|
|
equal: assert.equal,
|
|
};
|
|
|
|
// Define task registration functions, see description in "loader_common.js".
|
|
function add_task_in_parent_process(taskFn, taskIdOverride) {
|
|
let taskId = taskIdOverride || getTaskId(Components.stack.caller);
|
|
Output.print("Registering in the parent process: " + taskId);
|
|
addMessageListener("start_task_" + taskId, function() {
|
|
Task.spawn(function* () {
|
|
try {
|
|
Output.print("Running in the parent process " + taskId);
|
|
yield Task.spawn(taskFn);
|
|
} catch (ex) {
|
|
assert.ok(false, ex);
|
|
}
|
|
|
|
sendAsyncMessage("finish_task_" + taskId, {});
|
|
});
|
|
});
|
|
}
|
|
var add_task = function() {};
|
|
var add_task_in_child_process = function() {};
|
|
var add_task_in_both_processes = add_task_in_parent_process;
|
|
|
|
// We need to wait for the child process to send us the path of the test file
|
|
// to load before we can actually start loading it.
|
|
var context = this;
|
|
addMessageListener("start_load_in_parent", function(message) {
|
|
Output.print("Starting loading infrastructure in parent process.");
|
|
/* import-globals-from ../head_common.js */
|
|
let headUrl = "chrome://mochitests/content/chrome/" +
|
|
"toolkit/components/formautofill/test/chrome/head_common.js";
|
|
Services.scriptloader.loadSubScript(headUrl, context);
|
|
|
|
Services.scriptloader.loadSubScript(message.testUrl, context);
|
|
|
|
// Register the execution of termination tasks after all other tasks.
|
|
add_task_in_parent_process(terminationTaskFn, terminationTaskFn.name);
|
|
|
|
Output.print("Finished loading infrastructure in parent process.");
|
|
sendAsyncMessage("finish_load_in_parent", {});
|
|
});
|
|
|
|
// Reminder: unless you are adding new features to the framework, you shouldn't
|
|
// have to modify this file. Use "head_common.js" or "head.js" for shared code.
|