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 /devtools/client/shared/test-helpers/shared-node-helpers.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 'devtools/client/shared/test-helpers/shared-node-helpers.js')
-rw-r--r-- | devtools/client/shared/test-helpers/shared-node-helpers.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/devtools/client/shared/test-helpers/shared-node-helpers.js b/devtools/client/shared/test-helpers/shared-node-helpers.js new file mode 100644 index 0000000000..eadf94ec26 --- /dev/null +++ b/devtools/client/shared/test-helpers/shared-node-helpers.js @@ -0,0 +1,94 @@ +/* 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"; + +/* global global */ + +/** + * Adds mocks for browser-environment global variables/methods to Node global. + */ +function setMocksInGlobal() { + global.isWorker = false; + + global.loader = { + lazyGetter: (context, name, fn) => { + const module = fn(); + global[name] = module; + }, + lazyRequireGetter: (context, names, module, destructure) => { + if (!Array.isArray(names)) { + names = [names]; + } + + for (const name of names) { + const value = destructure + ? require(module)[name] + : require(module || name); + global[name] = value; + } + }, + lazyImporter: () => {}, + }; + + global.define = function() {}; + + // Used for the HTMLTooltip component. + // And set "isSystemPrincipal: false" because can't support XUL element in node. + global.document.nodePrincipal = { + isSystemPrincipal: false, + }; + + global.requestIdleCallback = function() {}; + + global.requestAnimationFrame = function(cb) { + cb(); + return null; + }; + + // Mock getSelection + let selection; + global.getSelection = function() { + return { + toString: () => selection, + get type() { + if (selection === undefined) { + return "None"; + } + if (selection === "") { + return "Caret"; + } + return "Range"; + }, + setMockSelection: str => { + selection = str; + }, + }; + }; + + // Array#flatMap is only supported in Node 11+ + if (!Array.prototype.flatMap) { + // eslint-disable-next-line no-extend-native + Array.prototype.flatMap = function(cb) { + return this.reduce((acc, x, i, arr) => { + return acc.concat(cb(x, i, arr)); + }, []); + }; + } + + global.indexedDB = function() { + const store = {}; + return { + open: () => ({}), + getItem: async key => store[key], + setItem: async (key, value) => { + store[key] = value; + }, + }; + }; +} + +module.exports = { + setMocksInGlobal, +}; |