diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-content-task-globals.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-content-task-globals.js')
-rw-r--r-- | tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-content-task-globals.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-content-task-globals.js b/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-content-task-globals.js new file mode 100644 index 0000000000..b8545b45f8 --- /dev/null +++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-content-task-globals.js @@ -0,0 +1,84 @@ +/** + * @fileoverview For ContentTask.spawn, this will automatically declare the + * frame script variables in the global scope. + * Note: due to the way ESLint works, it appears it is only + * easy to declare these variables on a file-global scope, rather + * than function global. + * + * 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"; + +// ----------------------------------------------------------------------------- +// Rule Definition +// ----------------------------------------------------------------------------- + +var helpers = require("../helpers"); +var frameScriptEnv = require("../environments/frame-script"); + +// The global environment of SpecialPowers.spawn tasks is +// controlled by the Sandbox environment created by +// SpecialPowersSandbox.jsm. This list should be kept in sync with +// that module. +var sandboxGlobals = [ + "Assert", + "Blob", + "BrowsingContext", + "ChromeUtils", + "ContentTaskUtils", + "EventUtils", + "Services", + "TextDecoder", + "TextEncoder", + "URL", + "assert", + "info", + "is", + "isnot", + "ok", + "todo", + "todo_is", +]; + +module.exports = function(context) { + // --------------------------------------------------------------------------- + // Public + // --------------------------------------------------------------------------- + + return { + "CallExpression[callee.object.name='ContentTask'][callee.property.name='spawn']": function( + node + ) { + for (let global in frameScriptEnv.globals) { + helpers.addVarToScope( + global, + context.getScope(), + frameScriptEnv.globals[global] + ); + } + }, + "CallExpression[callee.object.name='SpecialPowers'][callee.property.name='spawn']": function( + node + ) { + let globals = [...sandboxGlobals, "SpecialPowers", "content", "docShell"]; + for (let global of globals) { + helpers.addVarToScope(global, context.getScope(), false); + } + }, + "CallExpression[callee.object.name='SpecialPowers'][callee.property.name='spawnChrome']": function( + node + ) { + let globals = [ + ...sandboxGlobals, + "browsingContext", + "windowGlobalParent", + ]; + for (let global of globals) { + helpers.addVarToScope(global, context.getScope(), false); + } + }, + }; +}; |