--- a/toolkit/components/aboutcheckerboard/content/aboutCheckerboard.js
+++ b/toolkit/components/aboutcheckerboard/content/aboutCheckerboard.js
@@ -1,15 +1,12 @@
/* 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/. */
-// Global in the DOM for privileged code only.
-/* global CheckerboardReportService */
-
"use strict";
var trace;
var service;
var reports;
function onLoad() {
trace = document.getElementById("trace");
--- a/toolkit/components/extensions/ExtensionStorageSync.jsm
+++ b/toolkit/components/extensions/ExtensionStorageSync.jsm
@@ -12,18 +12,16 @@
this.EXPORTED_SYMBOLS = ["ExtensionStorageSync", "extensionStorageSync"];
const Ci = Components.interfaces;
const Cc = Components.classes;
const Cu = Components.utils;
const Cr = Components.results;
const global = this;
-/* globals atob, btoa */
-
Cu.importGlobalProperties(["atob", "btoa"]);
Cu.import("resource://gre/modules/AppConstants.jsm");
const KINTO_PROD_SERVER_URL = "https://webextensions.settings.services.mozilla.com/v1";
const KINTO_DEFAULT_SERVER_URL = KINTO_PROD_SERVER_URL;
const STORAGE_SYNC_ENABLED_PREF = "webextensions.storage.sync.enabled";
const STORAGE_SYNC_SERVER_URL_PREF = "webextensions.storage.sync.serverURL";
@@ -83,18 +81,16 @@ XPCOMUtils.defineLazyPreferenceGetter(th
STORAGE_SYNC_ENABLED_PREF, true);
XPCOMUtils.defineLazyPreferenceGetter(this, "prefStorageSyncServerURL",
STORAGE_SYNC_SERVER_URL_PREF,
KINTO_DEFAULT_SERVER_URL);
const {
runSafeSyncWithoutClone,
} = ExtensionUtils;
-/* globals prefPermitsStorageSync, prefStorageSyncServerURL */
-
// Map of Extensions to Set<Contexts> to track contexts that are still
// "live" and use storage.sync.
const extensionContexts = new Map();
// Borrow logger from Sync.
const log = Log.repository.getLogger("Sync.Engine.Extension-Storage");
// A global that is fxAccounts, or null if (as on android) fxAccounts
// isn't available.
--- a/toolkit/components/extensions/ExtensionUtils.jsm
+++ b/toolkit/components/extensions/ExtensionUtils.jsm
@@ -32,18 +32,16 @@ XPCOMUtils.defineLazyModuleGetter(this,
"resource://gre/modules/Preferences.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Schemas",
"resource://gre/modules/Schemas.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "styleSheetService",
"@mozilla.org/content/style-sheet-service;1",
"nsIStyleSheetService");
-/* globals IDBKeyRange */
-
function getConsole() {
return new ConsoleAPI({
maxLogLevelPref: "extensions.webextensions.log.level",
prefix: "WebExtensions",
});
}
XPCOMUtils.defineLazyGetter(this, "console", getConsole);
@@ -932,17 +930,17 @@ class MessageManagerProxy {
* Arguments to be passed verbatim to the underlying
* sendAsyncMessage method.
* @returns {undefined}
*/
sendAsyncMessage(...args) {
if (this.messageManager) {
return this.messageManager.sendAsyncMessage(...args);
}
- /* globals uneval */
+
Cu.reportError(`Cannot send message: Other side disconnected: ${uneval(args)}`);
}
get isDisconnected() {
return !this.messageManager;
}
/**
--- a/toolkit/components/extensions/Schemas.jsm
+++ b/toolkit/components/extensions/Schemas.jsm
@@ -32,18 +32,16 @@ XPCOMUtils.defineLazyServiceGetter(this,
"nsIAddonContentPolicy");
this.EXPORTED_SYMBOLS = ["Schemas"];
const {DEBUG} = AppConstants;
const isParentProcess = Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_DEFAULT;
-/* globals Schemas, URL */
-
function readJSON(url) {
return new Promise((resolve, reject) => {
NetUtil.asyncFetch({uri: url, loadUsingSystemPrincipal: true}, (inputStream, status) => {
if (!Components.isSuccessCode(status)) {
// Convert status code to a string
let e = Components.Exception("", status);
reject(new Error(`Error while loading '${url}' (${e.name})`));
return;
--- a/toolkit/components/extensions/ext-browser-content.js
+++ b/toolkit/components/extensions/ext-browser-content.js
@@ -17,17 +17,17 @@ XPCOMUtils.defineLazyModuleGetter(this,
"resource://gre/modules/Timer.jsm");
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
const {
getWinUtils,
stylesheetMap,
} = ExtensionUtils;
-/* globals addMessageListener, addEventListener, content, docShell, removeEventListener, sendAsyncMessage */
+/* eslint-env mozilla/frame-script */
// Minimum time between two resizes.
const RESIZE_TIMEOUT = 100;
/**
* Check if the provided color is fully opaque.
*
* @param {string} color
--- a/toolkit/components/extensions/ext-c-identity.js
+++ b/toolkit/components/extensions/ext-c-identity.js
@@ -1,26 +1,23 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
-/* global redirectDomain */
"use strict";
var {Constructor: CC} = Components;
XPCOMUtils.defineLazyModuleGetter(this, "Services",
"resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "CommonUtils",
"resource://services-common/utils.js");
XPCOMUtils.defineLazyPreferenceGetter(this, "redirectDomain",
"extensions.webextensions.identity.redirectDomain");
let CryptoHash = CC("@mozilla.org/security/hash;1", "nsICryptoHash", "initWithString");
-/* globals URL, XMLHttpRequest */
-
Cu.importGlobalProperties(["URL", "XMLHttpRequest", "TextEncoder"]);
var {
promiseDocumentLoaded,
} = ExtensionUtils;
function computeHash(str) {
let byteArr = new TextEncoder().encode(str);
--- a/toolkit/components/lz4/lz4_internal.js
+++ b/toolkit/components/lz4/lz4_internal.js
@@ -15,17 +15,16 @@ if (typeof Components != "undefined") {
Cu.import("resource://gre/modules/osfile/osfile_shared_allthreads.jsm", SharedAll);
this.EXPORTED_SYMBOLS = [
"Primitives"
];
this.Primitives = Primitives;
this.exports = {};
} else if (typeof module != "undefined" && typeof require != "undefined") {
- /* global require:false */
SharedAll = require("resource://gre/modules/osfile/osfile_shared_allthreads.jsm");
} else {
throw new Error("Please load this module with Component.utils.import or with require()");
}
var libxul = new SharedAll.Library("libxul", SharedAll.Constants.Path.libxul);
var Type = SharedAll.Type;
@@ -52,17 +51,16 @@ libxul.declareLazyFFI(Primitives, "decom
libxul.declareLazyFFI(Primitives, "maxCompressedSize",
"workerlz4_maxCompressedSize",
null,
/* return*/ Type.size_t,
/* inputSize*/ Type.size_t
);
if (typeof module != "undefined") {
- /* global module:false */
module.exports = {
get compress() {
return Primitives.compress;
},
get decompress() {
return Primitives.decompress;
},
get maxCompressedSize() {
--- a/toolkit/components/narrate/test/.eslintrc.js
+++ b/toolkit/components/narrate/test/.eslintrc.js
@@ -1,23 +1,7 @@
"use strict";
-module.exports = { // eslint-disable-line no-undef
+module.exports = {
"extends": [
- "../.eslintrc.js"
- ],
-
- "globals": {
- "is": true,
- "isnot": true,
- "ok": true,
- "NarrateTestUtils": true,
- "content": true,
- "ContentTaskUtils": true,
- "ContentTask": true,
- "BrowserTestUtils": true,
- "gBrowser": true,
- },
-
- "rules": {
- "mozilla/import-headjs-globals": "warn"
- }
+ "plugin:mozilla/browser-test"
+ ]
};
--- a/toolkit/components/narrate/test/browser_narrate.js
+++ b/toolkit/components/narrate/test/browser_narrate.js
@@ -1,14 +1,12 @@
/* 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/. */
-/* globals is, isnot, registerCleanupFunction, add_task */
-
"use strict";
registerCleanupFunction(teardown);
add_task(async function testNarrate() {
setup();
await spawnInNewReaderTab(TEST_ARTICLE, async function() {
--- a/toolkit/components/narrate/test/browser_narrate_disable.js
+++ b/toolkit/components/narrate/test/browser_narrate_disable.js
@@ -1,14 +1,12 @@
/* 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/. */
-/* globals registerCleanupFunction, add_task */
-
"use strict";
const ENABLE_PREF = "narrate.enabled";
registerCleanupFunction(() => {
clearUserPref(ENABLE_PREF);
teardown();
});
--- a/toolkit/components/narrate/test/browser_narrate_language.js
+++ b/toolkit/components/narrate/test/browser_narrate_language.js
@@ -1,14 +1,12 @@
/* 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/. */
-/* globals is, isnot, registerCleanupFunction, add_task */
-
"use strict";
registerCleanupFunction(teardown);
add_task(async function testVoiceselectDropdownAutoclose() {
setup("automatic", true);
await spawnInNewReaderTab(TEST_ARTICLE, async function() {
--- a/toolkit/components/narrate/test/browser_voiceselect.js
+++ b/toolkit/components/narrate/test/browser_voiceselect.js
@@ -1,14 +1,12 @@
/* 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/. */
-/* globals registerCleanupFunction, add_task, is, isnot */
-
"use strict";
registerCleanupFunction(teardown);
add_task(async function testVoiceselectDropdownAutoclose() {
setup();
await spawnInNewReaderTab(TEST_ARTICLE, async function() {
--- a/toolkit/components/narrate/test/browser_word_highlight.js
+++ b/toolkit/components/narrate/test/browser_word_highlight.js
@@ -1,14 +1,12 @@
/* 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/. */
-/* globals is, isnot, registerCleanupFunction, add_task */
-
"use strict";
registerCleanupFunction(teardown);
add_task(async function testNarrate() {
setup("urn:moz-tts:fake-indirect:teresa");
await spawnInNewReaderTab(TEST_ARTICLE, async function() {
--- a/toolkit/components/narrate/test/head.js
+++ b/toolkit/components/narrate/test/head.js
@@ -59,16 +59,19 @@ function teardown() {
}
function spawnInNewReaderTab(url, func) {
return BrowserTestUtils.withNewTab(
{ gBrowser,
url: `about:reader?url=${encodeURIComponent(url)}` },
async function(browser) {
await ContentTask.spawn(browser, null, async function() {
+ // This imports the test utils for all tests, so we'll declare it as
+ // a global here which will make it ESLint happy.
+ /* global NarrateTestUtils */
Components.utils.import("chrome://mochitests/content/browser/" +
"toolkit/components/narrate/test/NarrateTestUtils.jsm");
await NarrateTestUtils.getReaderReadyPromise(content);
});
await ContentTask.spawn(browser, null, func);
});
--- a/toolkit/components/passwordmgr/nsLoginManager.js
+++ b/toolkit/components/passwordmgr/nsLoginManager.js
@@ -7,17 +7,17 @@
const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
const PERMISSION_SAVE_LOGINS = "login-saving";
Cu.import("resource://gre/modules/AppConstants.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Timer.jsm");
-Cu.import("resource://gre/modules/LoginManagerContent.jsm"); /* global UserAutoCompleteResult */
+Cu.import("resource://gre/modules/LoginManagerContent.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Promise",
"resource://gre/modules/Promise.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "BrowserUtils",
"resource://gre/modules/BrowserUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "LoginHelper",
"resource://gre/modules/LoginHelper.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "LoginFormFactory",
--- a/toolkit/content/aboutwebrtc/aboutWebrtc.js
+++ b/toolkit/content/aboutwebrtc/aboutWebrtc.js
@@ -1,15 +1,13 @@
/* 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 WebrtcGlobalInformation, document */
-
var Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
"resource://gre/modules/FileUtils.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "FilePicker",
--- a/toolkit/modules/subprocess/.eslintrc.js
+++ b/toolkit/modules/subprocess/.eslintrc.js
@@ -1,28 +1,13 @@
"use strict";
module.exports = {
"extends": "../../components/extensions/.eslintrc.js",
"env": {
- "worker": true,
- },
-
- "globals": {
- "ChromeWorker": false,
- "Components": false,
- "LIBC": true,
- "Library": true,
- "OS": false,
- "Services": false,
- "SubprocessConstants": true,
- "ctypes": false,
- "debug": true,
- "dump": false,
- "libc": true,
- "unix": true,
+ "mozilla/chrome-worker": true,
},
"rules": {
"no-console": "off",
},
};
--- a/toolkit/modules/subprocess/subprocess_common.jsm
+++ b/toolkit/modules/subprocess/subprocess_common.jsm
@@ -17,16 +17,17 @@ Cu.importGlobalProperties(["TextDecoder"
XPCOMUtils.defineLazyModuleGetter(this, "AsyncShutdown",
"resource://gre/modules/AsyncShutdown.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "setTimeout",
"resource://gre/modules/Timer.jsm");
Services.scriptloader.loadSubScript("resource://gre/modules/subprocess/subprocess_shared.js", this);
+/* global SubprocessConstants */
var EXPORTED_SYMBOLS = ["BaseProcess", "PromiseWorker", "SubprocessConstants"];
const BUFFER_SIZE = 4096;
let nextResponseId = 0;
/**
* Wraps a ChromeWorker so that messages sent to it return a promise which
--- a/toolkit/modules/subprocess/subprocess_shared_unix.js
+++ b/toolkit/modules/subprocess/subprocess_shared_unix.js
@@ -2,16 +2,19 @@
/* vim: set sts=2 sw=2 et tw=80: */
/* 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";
/* exported libc */
+// This file is loaded into the same scope as subprocess_unix.jsm
+/* import-globals-from subprocess_unix.jsm */
+
const LIBC = OS.Constants.libc;
const LIBC_CHOICES = ["libc.so", "libSystem.B.dylib", "a.out"];
const unix = {
pid_t: ctypes.int32_t,
pollfd: new ctypes.StructType("pollfd", [
--- a/toolkit/modules/subprocess/subprocess_shared_win.js
+++ b/toolkit/modules/subprocess/subprocess_shared_win.js
@@ -2,16 +2,19 @@
/* vim: set sts=2 sw=2 et tw=80: */
/* 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";
/* exported LIBC, Win, createPipe, libc */
+// This file is loaded into the same scope as subprocess_win.jsm
+/* import-globals-from subprocess_win.jsm */
+
const LIBC = OS.Constants.libc;
const Win = OS.Constants.Win;
const LIBC_CHOICES = ["kernel32.dll"];
var win32 = {
// On Windows 64, winapi_abi is an alias for default_abi.
--- a/toolkit/modules/subprocess/subprocess_unix.jsm
+++ b/toolkit/modules/subprocess/subprocess_unix.jsm
@@ -4,29 +4,29 @@
* 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";
/* eslint-disable mozilla/balanced-listeners */
/* exported SubprocessImpl */
-/* globals BaseProcess, PromiseWorker */
-
var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.importGlobalProperties(["TextDecoder"]);
var EXPORTED_SYMBOLS = ["SubprocessImpl"];
Cu.import("resource://gre/modules/ctypes.jsm");
Cu.import("resource://gre/modules/osfile.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/subprocess/subprocess_common.jsm");
+/* import-globals-from subprocess_shared.js */
+/* import-globals-from subprocess_shared_unix.js */
Services.scriptloader.loadSubScript("resource://gre/modules/subprocess/subprocess_shared.js", this);
Services.scriptloader.loadSubScript("resource://gre/modules/subprocess/subprocess_shared_unix.js", this);
class UnixPromiseWorker extends PromiseWorker {
constructor(...args) {
super(...args);
let fds = ctypes.int.array(2)();
--- a/toolkit/modules/subprocess/subprocess_win.jsm
+++ b/toolkit/modules/subprocess/subprocess_win.jsm
@@ -4,31 +4,31 @@
* 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";
/* eslint-disable mozilla/balanced-listeners */
/* exported SubprocessImpl */
-/* globals BaseProcess, PromiseWorker */
-
var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
var EXPORTED_SYMBOLS = ["SubprocessImpl"];
Cu.import("resource://gre/modules/AppConstants.jsm");
Cu.import("resource://gre/modules/ctypes.jsm");
Cu.import("resource://gre/modules/osfile.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/subprocess/subprocess_common.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "env", "@mozilla.org/process/environment;1", "nsIEnvironment");
+/* import-globals-from subprocess_shared.js */
+/* import-globals-from subprocess_shared_win.js */
Services.scriptloader.loadSubScript("resource://gre/modules/subprocess/subprocess_shared.js", this);
Services.scriptloader.loadSubScript("resource://gre/modules/subprocess/subprocess_shared_win.js", this);
class WinPromiseWorker extends PromiseWorker {
constructor(...args) {
super(...args);
this.signalEvent = libc.CreateSemaphoreW(null, 0, 32, null);
--- a/toolkit/modules/subprocess/subprocess_worker_common.js
+++ b/toolkit/modules/subprocess/subprocess_worker_common.js
@@ -1,17 +1,20 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
/* 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";
+// This file is loaded into the same context as subprocess_worker_unix.js
+// and subprocess_worker_win.js
+/* import-globals-from subprocess_worker_unix.js */
+
/* exported BasePipe, BaseProcess, debug */
-/* globals Process, io */
function debug(message) {
self.postMessage({msg: "debug", message});
}
class BasePipe {
constructor() {
this.closing = false;
--- a/toolkit/modules/subprocess/subprocess_worker_unix.js
+++ b/toolkit/modules/subprocess/subprocess_worker_unix.js
@@ -1,18 +1,20 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
/* 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";
/* exported Process */
-/* globals BaseProcess, BasePipe */
+/* import-globals-from subprocess_shared.js */
+/* import-globals-from subprocess_shared_unix.js */
+/* import-globals-from subprocess_worker_common.js */
importScripts("resource://gre/modules/subprocess/subprocess_shared.js",
"resource://gre/modules/subprocess/subprocess_shared_unix.js",
"resource://gre/modules/subprocess/subprocess_worker_common.js");
const POLL_TIMEOUT = 5000;
let io;
--- a/toolkit/modules/subprocess/subprocess_worker_win.js
+++ b/toolkit/modules/subprocess/subprocess_worker_win.js
@@ -1,18 +1,20 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
/* 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";
/* exported Process */
-/* globals BaseProcess, BasePipe, win32 */
+/* import-globals-from subprocess_shared.js */
+/* import-globals-from subprocess_shared_win.js */
+/* import-globals-from subprocess_worker_common.js */
importScripts("resource://gre/modules/subprocess/subprocess_shared.js",
"resource://gre/modules/subprocess/subprocess_shared_win.js",
"resource://gre/modules/subprocess/subprocess_worker_common.js");
const POLL_TIMEOUT = 5000;
// The exit code that we send when we forcibly terminate a process.
const TERMINATE_EXIT_CODE = 0x7f;
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
@@ -6,16 +6,17 @@ module.exports = {
"es6": true
},
"globals": {
"BroadcastChannel": false,
"BrowserFeedWriter": false,
"CSSPrimitiveValue": false,
"CSSValueList": false,
+ "CheckerboardReportService": false,
// Specific to Firefox (Chrome code only).
"ChromeUtils": false,
"ChromeWindow": false,
"ChromeWorker": false,
"Components": false,
"DOMRequest": false,
"DedicatedWorkerGlobalScope": false,
"IDBFileRequest": false,
@@ -32,16 +33,17 @@ module.exports = {
// Specific to Firefox (Chrome code only).
"MozSelfSupport": false,
"SharedArrayBuffer": false,
"SimpleGestureEvent": false,
// Note: StopIteration will likely be removed as part of removing legacy
// generators, see bug 968038.
"StopIteration": false,
"WebAssembly": false,
+ "WebrtcGlobalInformation": false,
// Non-standard, specific to Firefox.
"XULElement": false,
"dump": true,
"openDialog": false,
"sizeToContent": false,
// Specific to Firefox
// eslint-disable-next-line max-len
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval