fune/toolkit/components/formautofill/test/chrome/loader_parent.js
Mark Banner a656cedb11 Bug 1341029 - Turn on the ESLint no-undef rule for all of toolkit/. r=jaws
MozReview-Commit-ID: Ed9FfkskDos

--HG--
extra : rebase_source : 6ae47dc76b3ebe77b66725a899d32e728af5d35e
2017-02-20 11:45:58 +00:00

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.