gecko-dev/.eslintrc.js
David Parks 90be6e1a12 Bug 1675349: Update tests under dom/plugins/test for the removal of plugins. r=jmathies
ADDED/UPDATED
-------
dom/plugins/test/mochitest/browser_blockallplugins.js
Make sure that all plugin elements use the fallback for removed plugins.

dom/plugins/test/mochitest/test_mixed_case_mime.html
Bug 206659
Test MIME-type case sensitivity using "application/x-Second-Test"
Change to test "image/png".

dom/plugins/test/mochitest/test_plugin_fallback_focus.html
Test that (denying) object/embed focus and focusability are properly maintained when those elements change type to/from plugins.

REMOVED
-------
dom/plugins/test/unit/test_nice_plugin_name.js
bug 838290
Plugin permission string is "nicely" based on plugin lib name.

dom/plugins/test/unit/test_bug471245.js
bug 471245
Something to do with disabled plugins being enabled under some weird condition.

dom/plugins/test/unit/test_bug813245.js
bug 813245
Plugin registry file doesn't cause crash or incorrectly represent real plugin.

dom/plugins/test/unit/test_bug854467.js
bug 854467
PluginTag correctly controls click-to-play behavior.

dom/plugins/test/unit/test_plugin_default_state.js
bug 866390
Click-to-play abides plugin.default.state setting.

dom/plugins/test/unit/test_persist_in_prefs.js
Bug 830267
CTP state is maintained in settings (not pluginreg.dat) and persists regardless of plugin removal

dom/plugins/test/mochitest/test_NPNVdocumentOrigin.html
Bug 622199
Test NPNV connection to DOM properly handles documentOrigin.

dom/plugins/test/mochitest/test_NPPVpluginWantsAllNetworkStreams.html
Test NPPV connection to JS when plugin requests all HTTP stream <body>s (including failed requests)

dom/plugins/test/mochitest/test_bug1028200-*.html
Properly handle fullscreen wrt plugins doing things (like crashing)

dom/plugins/test/unit/test_bug471245.js
Bug 471245
Extensions should not enable inadvertently enable plugins when they consult PluginHost.

dom/plugins/test/unit/test_bug813245.js
Bug 813245
Do not crash when we read a corrupt pluginreg.dat

dom/plugins/test/unit/test_bug854467.js
Bug 854467
Should be able to unset CTP setting in chrome JS.

dom/plugins/test/unit/test_nice_plugin_name.js
Bug 838290
Permission string names for plugins should be pretty and not just based on plugin filename.

dom/plugins/test/unit/test_persist_in_prefs.js
Bug 830267
Persist plugin prefs in user prefs, not pluginreg.dat

dom/plugins/test/unit/test_plugin_default_state.js
Bug 866390
Plugins that use default CTP state should follow changes to the default.  Others should not be affected by changes.

dom/plugins/test/mochitest/test_bug1092842.html
bug 1092842
Plugin clipping around specific HTML element attributes.

dom/plugins/test/mochitest/test_bug1165981.html
bug 1165981
Test non-Flash plugins are blocked

dom/plugins/test/mochitest/test_bug1245545.html
bug 1245545
Test unloading plugins based on `dom.ipc.plugins.unloadTimeoutSecs`

dom/plugins/test/mochitest/test_bug1307694.html
bug 1307694
Test scale and salign attributes musst be processed in an order dependent way.  But salign is no longer supported.  The test uses special testplugin behavior.

dom/plugins/test/mochitest/test_bug532208.html
bug 532208
Test that plugins can handle large streams, using special testplugin behavior.

dom/plugins/test/mochitest/test_bug539565-1.html
dom/plugins/test/mochitest/test_bug539565-2.html
bug 539565
Plugins should get proper mouse coords in the face of CSS transformations

dom/plugins/test/mochitest/test_bug771202.html
bug 771202
Use JS-exported plugin functions after plugin is moved to a subdocument.

dom/plugins/test/mochitest/test_bug777098.html
bug 777098
Test that plugin is properly deleted and a JS exception is thrown when an invalid NPObject (from a dead instance) is passed to a plugin.

dom/plugins/test/mochitest/test_bug784131.html
bug 784131
Plugins should properly stop when they lose their frames (via e.g. `display:none`)

dom/plugins/test/mochitest/test_bug813906.html
bug 813906
Make sure plugins can't access chrome-privileged pages

dom/plugins/test/mochitest/test_bug852315.html
bug 852315
Tests a specific case where JS code that added an element in response to an <embed> event handler would alter a hash table in the midst of iteration, causing a crash.

dom/plugins/test/mochitest/test_bug854082.html
bug 854082
Tests that destroying the plugin's frame inside NPP_New does not cause a crash

dom/plugins/test/mochitest/test_bug863792.htm
bug 863792
Do not leak when a plugin removes itself from the document and inactivates the document in its NPP_New

dom/plugins/test/mochitest/test_bug967694.html
bug 967694
CTP dialog should not spawn plugin inside CTP dialog event.

dom/plugins/test/mochitest/test_bug985859.html
bug 985859
navigator.mimetypes should work as case-insensitive hashmap (there don't seem to be any legal mimetypes left now).

dom/plugins/test/mochitest/test_bug986930.html
bug 986930
Properly handle plugin with non-ASCII mime type.

dom/plugins/test/mochitest/test_copyText.html
Plugins should be able to use the clipboard.

dom/plugins/test/mochitest/test_crash_nested_loop.html
Plugins resulting in a call to PluginCrashed while still on the stack causing a browser crash (non-oop plugins).  So this is ancient (11 years).

dom/plugins/test/mochitest/test_crashing.html
Bug 560213
Test that plugin crashes generate exceptions and do not lead to heap corruption when using JS to call methods on the crashed plugin.

dom/plugins/test/mochitest/test_CrashService_crash.html
dom/plugins/test/mochitest/test_CrashService_hang.html
dom/plugins/test/mochitest/test_x11_error_crash.html
Bug 983313 and bug 1331320
Check that CrashService (which is currently only used by plugin tests) properly detects plugin crash, hang and crashes from X11 errors.

dom/plugins/test/mochitest/test_crashing2.html
Reloading should restore crashed plugin.  Test was already completely disabled.

dom/plugins/test/mochitest/test_defaultValue.html
Bug 679509
Make NPObjects ok to use as a primitve [[DefaultValue]], instead of calling valueOf on the NPObject itself.

dom/plugins/test/mochitest/test_bug751809.html
Bug 751809
Plugin CTP broke plugin input (ancient).

dom/plugins/test/mochitest/browser_bug1335475.js
bug 1335475
Test that plugins aren't available in chrome-privilege, null-principal, and file:// content but are available to http:// and about:blank content

dom/plugins/test/mochitest/browser_data_url_plugin.js
Bug 1381755
Test that data URIs inside iframes can't use plugins

dom/plugins/test/mochitest/browser_bug1196539.js
Test that plugin repaints when it should (and not more than that, modulo OS repaints)

dom/plugins/test/mochitest/test_hidden_plugin.html
Test navigator.plugins, including that disabling plugins removes them from navigator.plugins

dom/plugins/test/mochitest/test_enumerate.html
Test PluginHost's ability to expose plugin's JS API (looks for TestPlugin's SetColor)

dom/plugins/test/mochitest/test_clear_site_data.html
Directly test PluginHost's clearSiteData API.

dom/plugins/test/mochitest/test_instance_re-parent.html
Bug 90268
Test that reparenting plugin instance in DOM before spinning event loop does not destroy or restart it.

dom/plugins/test/mochitest/test_instance_unparent1.html
dom/plugins/test/mochitest/test_instance_unparent2.html
dom/plugins/test/mochitest/test_instance_unparent3.html
Bug 90268
Test that removing plugin from DOM destroys it (1) normally, (2) if reparented and removed in the same event cycle and (3) when its parent is the element that gets removed.

dom/plugins/test/mochitest/test_instantiation.html
Create that plugin is loaded when element is programmatically created (using createElement).

dom/plugins/test/mochitest/test_multipleinstanceobjects.html
Test NPObject access from multiple plugin instances

dom/plugins/test/mochitest/test_newstreamondestroy.html
Test calling NPN_GetURL from NPP_Destroy

dom/plugins/test/mochitest/test_npn_timers.html
Test NPN_Timer

dom/plugins/test/mochitest/test_npobject_getters.html
Test `pluginFoundElement` and `pluginFoundWindow` JS properties set on plugin instance by `NPP_New`.

dom/plugins/test/mochitest/test_npruntime_construct.html
Test that NP plugin JS method `constructObject` properly configures prototype chain

dom/plugins/test/mochitest/test_npruntime_identifiers.html
Test various ways the plugin JS reflection method can convert "identifiers" to JS values.

dom/plugins/test/mochitest/test_npruntime_npnevaluate.html
Test NPN_Evaluate (i.e. plugin executing JS code)

dom/plugins/test/mochitest/test_npruntime_npninvoke.html
Test NPN_Invoke (i.e. plugin calling JS method)

dom/plugins/test/mochitest/test_npruntime_npninvokedefault.html
Test NPN_InvokeDefault (i.e. plugin calling default JS method)

dom/plugins/test/mochitest/test_painting.html
Test invalidation and repaint requests for clipped plugins.

dom/plugins/test/mochitest/test_pluginstream_err.html
Bug 517078
Test that plugin streaming error reporting works

dom/plugins/test/mochitest/test_pluginstream_post.html
dom/plugins/test/mochitest/test_pluginstream_poststream.html
Test NPN_PostURL responds (1) by inserting response into given element or (2) by sending response to plugin with NPN_NewStream.

dom/plugins/test/mochitest/test_bug479979.xhtml
Bug 479979
NPN_SetValue should return error for unknown variables.

dom/plugins/test/mochitest/test_crash_notify.xhtml
dom/plugins/test/mochitest/test_crash_notify_no_report.xhtml
Check event data, crash report/minidump (or not using MOZ_CRASHREPORTER_NO_REPORT), etc for `plugin-crash` event.

dom/plugins/test/mochitest/test_crash_submit.xhtml
dom/plugins/test/mochitest/test_hang_submit.xhtml
Test plugin crash/hang report submission using mock server from toolkit.

dom/plugins/test/mochitest/test_pluginstream_referer.html
Bugs 410904 and 724465
Test NPN_PostURLNotify and NPN_GetURLNotify.

dom/plugins/test/mochitest/test_pluginstream_src.html
Test NPP_NewStream and NPP_DestroyStream using embed tag streammode/streamchunksize parameters.

dom/plugins/test/mochitest/test_pluginstream_src_dynamic.html
Bug 90268
Like test_pluginstream_src.html but using dynamic HTML elements.

dom/plugins/test/mochitest/test_pluginstream_src_referer.html
Bug 737433
Make sure plugin stream data includes the correct referrer (taken from its content)

dom/plugins/test/mochitest/test_propertyAndMethod.html
Test NPObject with property and method with the same name

dom/plugins/test/mochitest/test_queryCSSZoomFactor.htm
Bug 1171182
Test CSS zoom with plugins (handled with NPNVcontentsScaleFactor)

dom/plugins/test/mochitest/test_redirect_handling.html
Test NPN_PostURLNotify and NPN_GetURLNotify URL redirect support.

dom/plugins/test/mochitest/test_secondPlugin.html
Bug 749257
Test navigator.plugins and navigator.mimeTypes (via index and iteration) for proper behavior WRT active, CTP and disabled plugins.

dom/plugins/test/mochitest/test_src_url_change.html
Bug 726734
Changing embed src tag should destroy/restart plugin.

dom/plugins/test/mochitest/test_streamNotify.html
Test that plugin streams properly handle all URLs, including proper errors for malformed URLs.

dom/plugins/test/mochitest/test_streamatclose.html
Any open streams should be notified before NPP_Destroy.

dom/plugins/test/mochitest/test_stringHandling.html
Bug 1106552
Properly handle 0 bytes in strings passed to plugins as NPVariants.

dom/plugins/test/mochitest/test_visibility.html
Make sure plugins respect visibility attribute and issue the correct number of paints.

dom/plugins/test/mochitest/test_zero_opacity.html
Windowed plugins should use clip rect to avoid drawing opacity:0 displays.

dom/plugins/test/mochitest/test_cocoa_window_focus.htm
Test that NPCocoaEventWindowFocusChanged is properly sent for plugin's window

dom/plugins/test/mochitest/test_cocoa_focus.htm
Test that NPCocoaEventFocusChanged is properly sent for plugin's element

dom/plugins/test/mochitest/test_windowed_invalidate.html
Test NPN_Invalidate for windowed plugins

dom/plugins/test/mochitest/test_windowless_flash.htm
Make sure Flash always runs in windowless mode

dom/plugins/test/mochitest/test_windowless_ime.html
Test (windowless) plugins with IME

dom/plugins/test/mochitest/test_busy_hang.xhtml
dom/plugins/test/mochitest/test_idle_hang.xhtml
Test plugin busy/idle detection observers and events

dom/plugins/test/mochitest/test_object.html
Bug 783059
Test plugin "instantiation", mostly by stressing behavior when the plugin's element tags are programmatically updated.

dom/plugins/test/mochitest/test_convertpoint.xhtml
Test coordinate space transformations via NPN_ConvertPoint.

dom/plugins/test/mochitest/test_hangui.xhtml
Test the _plugin hung_ UI.

dom/plugins/test/mochitest/test_npruntime.xhtml
Simple test that npruntime (the JS/plugin bridge) works.

dom/plugins/test/mochitest/test_plugin_tag_clicktoplay.html
Make sure nsIPluginTags click-to-play state properly matches enabledState of plugin (in chrome code)

dom/plugins/test/mochitest/test_privatemode_perwindowpb.xhtml
Check that plugins can properly determine when run in private mode with NPNVprivateModeBool.

dom/plugins/test/mochitest/test_wmode.xhtml
Bad test that ends up checking the constant boolean in testplugin returned by pluginSupportsWindowMode() and "confirming" that mac and Linux don't support windowed mode but Windows does.

dom/plugins/test/mochitest/test_xulbrowser_plugin_visibility.xhtml
Tests that plugins properly get visibility and invalidate messages when in the current or not-current tab.

Differential Revision: https://phabricator.services.mozilla.com/D95910
2020-11-18 15:58:15 +00:00

736 lines
32 KiB
JavaScript

/* 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";
const xpcshellTestConfig = require("eslint-plugin-mozilla/lib/configs/xpcshell-test.js");
const browserTestConfig = require("eslint-plugin-mozilla/lib/configs/browser-test.js");
const mochitestTestConfig = require("eslint-plugin-mozilla/lib/configs/mochitest-test.js");
const chromeTestConfig = require("eslint-plugin-mozilla/lib/configs/chrome-test.js");
const fs = require("fs");
const path = require("path");
/**
* Some configurations have overrides, which can't be specified within overrides,
* so we need to remove them.
*/
function removeOverrides(config) {
config = { ...config };
delete config.overrides;
return config;
}
const xpcshellTestPaths = ["**/test*/unit*/", "**/test*/xpcshell/"];
const browserTestPaths = ["**/test*/**/browser*/"];
const mochitestTestPaths = [
// Note: we do not want to match testing/mochitest as that would apply
// too many globals for that directory.
"**/test/mochitest/",
"**/tests/mochitest/",
"**/test/mochitests/",
"testing/mochitest/tests/SimpleTest/",
"testing/mochitest/tests/Harness_sanity/",
];
const chromeTestPaths = ["**/test*/chrome/"];
const ignorePatterns = [
...fs
.readFileSync(
path.join(__dirname, "tools", "rewriting", "ThirdPartyPaths.txt")
)
.toString("utf-8")
.split("\n"),
...fs
.readFileSync(
path.join(__dirname, "devtools", "client", "debugger", ".eslintignore")
)
.toString("utf-8")
.split("\n")
.filter(p => p && !p.startsWith("#"))
.map(p => `devtools/client/debugger/${p}`),
];
module.exports = {
parser: "babel-eslint",
parserOptions: {
sourceType: "script",
babelOptions: {
configFile: path.join(__dirname, ".babel-eslint.rc.js"),
},
},
ignorePatterns,
// Ignore eslint configurations in parent directories.
root: true,
// New rules and configurations should generally be added in
// tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js to
// allow external repositories that use the plugin to pick them up as well.
extends: ["plugin:mozilla/recommended"],
plugins: ["mozilla"],
overrides: [
{
// All .eslintrc.js files are in the node environment, so turn that
// on here.
// https://github.com/eslint/eslint/issues/13008
files: [".eslintrc.js"],
env: {
node: true,
browser: false,
},
},
{
files: [
"*.html",
"*.xhtml",
"*.xul",
"*.xml",
"js/src/builtin/**/*.js",
"js/src/shell/**/*.js",
],
rules: {
// Curly brackets are required for all the tree via recommended.js,
// however these files aren't auto-fixable at the moment.
curly: "off",
},
},
{
// TODO: Bug 1515949. Enable no-undef for gfx/
files: "gfx/layers/apz/test/mochitest/**",
rules: {
"no-undef": "off",
},
},
{
...removeOverrides(xpcshellTestConfig),
files: xpcshellTestPaths.map(path => `${path}**`),
excludedFiles: "devtools/**",
},
{
// If it is an xpcshell head file, we turn off global unused variable checks, as it
// would require searching the other test files to know if they are used or not.
// This would be expensive and slow, and it isn't worth it for head files.
// We could get developers to declare as exported, but that doesn't seem worth it.
files: xpcshellTestPaths.map(path => `${path}head*.js`),
rules: {
"no-unused-vars": [
"error",
{
args: "none",
vars: "local",
},
],
},
},
{
...browserTestConfig,
files: browserTestPaths.map(path => `${path}**`),
excludedFiles: "devtools/**",
},
{
...removeOverrides(mochitestTestConfig),
files: mochitestTestPaths.map(path => `${path}**`),
excludedFiles: [
"devtools/**",
"security/manager/ssl/tests/mochitest/browser/**",
],
},
{
...removeOverrides(chromeTestConfig),
files: chromeTestPaths.map(path => `${path}**`),
excludedFiles: ["devtools/**"],
},
{
env: {
// Ideally we wouldn't be using the simpletest env here, but our uses of
// js files mean we pick up everything from the global scope, which could
// be any one of a number of html files. So we just allow the basics...
"mozilla/simpletest": true,
},
files: [
...mochitestTestPaths.map(path => `${path}/**/*.js`),
...chromeTestPaths.map(path => `${path}/**/*.js`),
],
},
{
files: [
"netwerk/cookie/test/browser/**",
"netwerk/test/browser/**",
"netwerk/test/mochitests/**",
"netwerk/test/unit*/**",
],
rules: {
"mozilla/no-arbitrary-setTimeout": "off",
"mozilla/no-define-cc-etc": "off",
"mozilla/use-services": "off",
"consistent-return": "off",
"no-eval": "off",
"no-global-assign": "off",
"no-nested-ternary": "off",
"no-redeclare": "off",
"no-shadow": "off",
"no-throw-literal": "off",
"no-unused-vars": "off",
},
},
{
files: ["layout/**"],
rules: {
"object-shorthand": "off",
"mozilla/avoid-removeChild": "off",
"mozilla/consistent-if-bracing": "off",
"mozilla/reject-importGlobalProperties": "off",
"mozilla/no-arbitrary-setTimeout": "off",
"mozilla/no-define-cc-etc": "off",
"mozilla/use-chromeutils-generateqi": "off",
"mozilla/use-default-preference-values": "off",
"mozilla/use-includes-instead-of-indexOf": "off",
"mozilla/use-services": "off",
"mozilla/use-ownerGlobal": "off",
complexity: "off",
"consistent-return": "off",
"no-array-constructor": "off",
"no-caller": "off",
"no-cond-assign": "off",
"no-extra-boolean-cast": "off",
"no-eval": "off",
"no-func-assign": "off",
"no-global-assign": "off",
"no-implied-eval": "off",
"no-lonely-if": "off",
"no-nested-ternary": "off",
"no-new-wrappers": "off",
"no-redeclare": "off",
"no-restricted-globals": "off",
"no-return-await": "off",
"no-sequences": "off",
"no-throw-literal": "off",
"no-useless-concat": "off",
"no-undef": "off",
"no-unreachable": "off",
"no-unsanitized/method": "off",
"no-unsanitized/property": "off",
"no-unsafe-negation": "off",
"no-unused-vars": "off",
"no-useless-return": "off",
},
},
{
files: [
"dom/animation/**",
"dom/base/test/*.*",
"dom/base/test/unit/test_serializers_entities*.js",
"dom/base/test/unit_ipc/**",
"dom/base/test/jsmodules/**",
"dom/base/*.*",
"dom/canvas/**",
"dom/encoding/**",
"dom/events/**",
"dom/fetch/**",
"dom/file/**",
"dom/html/**",
"dom/jsurl/**",
"dom/media/tests/**",
"dom/media/webaudio/**",
"dom/media/webrtc/tests/**",
"dom/media/webspeech/**",
"dom/messagechannel/**",
"dom/midi/**",
"dom/network/**",
"dom/payments/**",
"dom/performance/**",
"dom/permission/**",
"dom/quota/**",
"dom/security/test/cors/**",
"dom/security/test/csp/**",
"dom/security/test/general/**",
"dom/security/test/https-only/**",
"dom/security/test/mixedcontentblocker/**",
"dom/security/test/sri/**",
"dom/security/test/referrer-policy/**",
"dom/serviceworkers/**",
"dom/smil/**",
"dom/tests/mochitest/**",
"dom/u2f/**",
"dom/vr/**",
"dom/webauthn/**",
"dom/webgpu/**",
"dom/websocket/**",
"dom/workers/**",
"dom/worklet/**",
"dom/xml/**",
"dom/xslt/**",
"dom/xul/**",
"dom/ipc/test.xhtml",
],
rules: {
"consistent-return": "off",
"mozilla/avoid-removeChild": "off",
"mozilla/consistent-if-bracing": "off",
"mozilla/no-arbitrary-setTimeout": "off",
"mozilla/no-compare-against-boolean-literals": "off",
"mozilla/no-define-cc-etc": "off",
"mozilla/reject-importGlobalProperties": "off",
"mozilla/use-cc-etc": "off",
"mozilla/use-chromeutils-generateqi": "off",
"mozilla/use-chromeutils-import": "off",
"mozilla/use-includes-instead-of-indexOf": "off",
"mozilla/use-ownerGlobal": "off",
"mozilla/use-services": "off",
"no-array-constructor": "off",
"no-caller": "off",
"no-cond-assign": "off",
"no-control-regex": "off",
"no-debugger": "off",
"no-else-return": "off",
"no-empty": "off",
"no-eval": "off",
"no-func-assign": "off",
"no-global-assign": "off",
"no-implied-eval": "off",
"no-lone-blocks": "off",
"no-lonely-if": "off",
"no-nested-ternary": "off",
"no-new-object": "off",
"no-new-wrappers": "off",
"no-octal": "off",
"no-redeclare": "off",
"no-return-await": "off",
"no-restricted-globals": "off",
"no-self-assign": "off",
"no-self-compare": "off",
"no-sequences": "off",
"no-shadow": "off",
"no-shadow-restricted-names": "off",
"no-sparse-arrays": "off",
"no-throw-literal": "off",
"no-unreachable": "off",
"no-unsanitized/method": "off",
"no-unsanitized/property": "off",
"no-undef": "off",
"no-unused-vars": "off",
"no-useless-call": "off",
"no-useless-concat": "off",
"no-useless-return": "off",
"no-with": "off",
},
},
{
files: [
"dom/l10n/tests/mochitest/document_l10n/non-system-principal/test.html",
"dom/payments/test/test_basiccard.html",
"dom/payments/test/test_bug1478740.html",
"dom/payments/test/test_canMakePayment.html",
"dom/payments/test/test_closePayment.html",
"dom/payments/test/test_showPayment.html",
"dom/tests/browser/browser_persist_cookies.js",
"dom/tests/browser/browser_persist_mixed_content_image.js",
"netwerk/test/unit/test_http2-proxy.js",
],
rules: {
"no-async-promise-executor": "off",
},
},
{
files: [
"testing/mochitest/browser-harness.xhtml",
"testing/mochitest/chrome/test_chromeGetTestFile.xhtml",
"testing/mochitest/chrome/test_sanityEventUtils.xhtml",
"testing/mochitest/chrome/test_sanityException.xhtml",
"testing/mochitest/chrome/test_sanityException2.xhtml",
"testing/mochitest/harness.xhtml",
],
rules: {
"dot-notation": "off",
"object-shorthand": "off",
"mozilla/use-services": "off",
"mozilla/no-compare-against-boolean-literals": "off",
"mozilla/no-useless-parameters": "off",
"mozilla/no-useless-removeEventListener": "off",
"mozilla/use-cc-etc": "off",
"consistent-return": "off",
"no-fallthrough": "off",
"no-nested-ternary": "off",
"no-redeclare": "off",
"no-sequences": "off",
"no-shadow": "off",
"no-throw-literal": "off",
"no-undef": "off",
"no-unsanitized/property": "off",
"no-unused-vars": "off",
"no-useless-call": "off",
},
},
{
files: [
"docshell/test/chrome/bug113934_window.xhtml",
"docshell/test/chrome/bug215405_window.xhtml",
"docshell/test/chrome/bug293235_window.xhtml",
"docshell/test/chrome/bug294258_window.xhtml",
"docshell/test/chrome/bug298622_window.xhtml",
"docshell/test/chrome/bug301397_window.xhtml",
"docshell/test/chrome/bug303267_window.xhtml",
"docshell/test/chrome/bug311007_window.xhtml",
"docshell/test/chrome/bug321671_window.xhtml",
"docshell/test/chrome/bug360511_window.xhtml",
"docshell/test/chrome/bug396519_window.xhtml",
"docshell/test/chrome/bug396649_window.xhtml",
"docshell/test/chrome/bug449778_window.xhtml",
"docshell/test/chrome/bug449780_window.xhtml",
"docshell/test/chrome/bug582176_window.xhtml",
"docshell/test/chrome/bug662200_window.xhtml",
"docshell/test/chrome/bug690056_window.xhtml",
"docshell/test/chrome/bug89419_window.xhtml",
"docshell/test/chrome/mozFrameType_window.xhtml",
"docshell/test/chrome/test_bug453650.xhtml",
"docshell/test/chrome/test_bug454235.xhtml",
"docshell/test/chrome/test_bug565388.xhtml",
"docshell/test/chrome/test_bug608669.xhtml",
"docshell/test/chrome/test_bug789773.xhtml",
"docshell/test/chrome/test_bug846906.xhtml",
"docshell/test/chrome/test_docRedirect.xhtml",
"docshell/test/chrome/test_principalInherit.xhtml",
"docshell/test/chrome/test_viewsource_forbidden_in_iframe.xhtml",
],
rules: {
"dot-notation": "off",
"no-global-assign": "off",
"no-octal": "off",
"object-shorthand": "off",
"mozilla/consistent-if-bracing": "off",
"mozilla/no-compare-against-boolean-literals": "off",
"mozilla/no-useless-parameters": "off",
"mozilla/no-useless-removeEventListener": "off",
"mozilla/use-cc-etc": "off",
"mozilla/use-services": "off",
"mozilla/use-chromeutils-generateqi": "off",
"consistent-return": "off",
"no-delete-var": "off",
"no-redeclare": "off",
"no-sequences": "off",
"no-shadow": "off",
"no-undef": "off",
"no-unused-vars": "off",
"no-useless-call": "off",
},
},
{
files: [
"dom/base/test/chrome/file_bug1139964.xhtml",
"dom/base/test/chrome/file_bug549682.xhtml",
"dom/base/test/chrome/file_bug616841.xhtml",
"dom/base/test/chrome/file_bug990812-1.xhtml",
"dom/base/test/chrome/file_bug990812-2.xhtml",
"dom/base/test/chrome/file_bug990812-3.xhtml",
"dom/base/test/chrome/file_bug990812-4.xhtml",
"dom/base/test/chrome/file_bug990812-5.xhtml",
"dom/base/test/chrome/file_bug990812.xhtml",
"dom/base/test/chrome/test_bug1098074_throw_from_ReceiveMessage.xhtml",
"dom/base/test/chrome/test_bug339494.xhtml",
"dom/base/test/chrome/test_bug429785.xhtml",
"dom/base/test/chrome/test_bug467123.xhtml",
"dom/base/test/chrome/test_bug683852.xhtml",
"dom/base/test/chrome/test_bug780529.xhtml",
"dom/base/test/chrome/test_bug800386.xhtml",
"dom/base/test/chrome/test_bug884693.xhtml",
"dom/base/test/chrome/test_document-element-inserted.xhtml",
"dom/base/test/chrome/test_domparsing.xhtml",
"dom/base/test/chrome/test_fileconstructor.xhtml",
"dom/base/test/chrome/title_window.xhtml",
"dom/base/test/chrome/window_nsITextInputProcessor.xhtml",
"dom/base/test/chrome/window_swapFrameLoaders.xhtml",
"dom/base/test/test_domrequesthelper.xhtml",
"dom/bindings/test/test_bug1123516_maplikesetlikechrome.xhtml",
"dom/console/tests/test_jsm.xhtml",
"dom/events/test/test_bug1412775.xhtml",
"dom/events/test/test_bug336682_2.xhtml",
"dom/events/test/test_bug415498.xhtml",
"dom/events/test/test_bug602962.xhtml",
"dom/events/test/test_bug617528.xhtml",
"dom/events/test/test_bug679494.xhtml",
"dom/indexedDB/test/test_globalObjects_chrome.xhtml",
"dom/indexedDB/test/test_wrappedArray.xhtml",
"dom/ipc/test.xhtml",
"dom/ipc/tests/test_process_error.xhtml",
"dom/notification/test/chrome/test_notification_system_principal.xhtml",
"dom/security/test/general/test_bug1277803.xhtml",
"dom/serviceworkers/test/test_serviceworkerinfo.xhtml",
"dom/serviceworkers/test/test_serviceworkermanager.xhtml",
"dom/system/tests/test_constants.xhtml",
"dom/tests/mochitest/chrome/DOMWindowCreated_chrome.xhtml",
"dom/tests/mochitest/chrome/MozDomFullscreen_chrome.xhtml",
"dom/tests/mochitest/chrome/sizemode_attribute.xhtml",
"dom/tests/mochitest/chrome/test_cyclecollector.xhtml",
"dom/tests/mochitest/chrome/test_docshell_swap.xhtml",
"dom/tests/mochitest/chrome/window_focus.xhtml",
"dom/url/tests/test_bug883784.xhtml",
"dom/workers/test/test_WorkerDebugger.xhtml",
"dom/workers/test/test_WorkerDebugger_console.xhtml",
"dom/workers/test/test_fileReadSlice.xhtml",
"dom/workers/test/test_fileReaderSync.xhtml",
"dom/workers/test/test_fileSlice.xhtml",
],
rules: {
"mozilla/no-useless-parameters": "off",
"mozilla/no-useless-removeEventListener": "off",
"mozilla/use-chromeutils-generateqi": "off",
"mozilla/use-services": "off",
complexity: "off",
"no-array-constructor": "off",
"no-caller": "off",
"no-empty": "off",
"no-eval": "off",
"no-lone-blocks": "off",
"no-octal": "off",
"no-redeclare": "off",
"no-shadow": "off",
"no-throw-literal": "off",
"no-undef": "off",
"no-unsanitized/method": "off",
"no-unused-vars": "off",
"no-useless-return": "off",
"object-shorthand": "off",
},
},
{
files: [
"accessible/**",
"devtools/**",
"dom/**",
"docshell/**",
"editor/libeditor/tests/**",
"editor/spellchecker/tests/test_bug338427.html",
"gfx/**",
"image/test/browser/browser_image.js",
"js/src/builtin/**",
"layout/**",
"mobile/android/**",
"modules/**",
"netwerk/**",
"remote/**",
"security/manager/**",
"services/**",
"storage/test/unit/test_vacuum.js",
"taskcluster/docker/periodic-updates/scripts/**",
"testing/**",
"tools/**",
"widget/tests/test_assign_event_data.html",
],
rules: {
"mozilla/prefer-boolean-length-check": "off",
},
},
{
// TODO: Bug 1609271 Fix all violations for ChromeUtils.import(..., null)
files: [
"browser/base/content/test/forms/head.js",
"browser/base/content/test/general/browser_datachoices_notification.js",
"browser/base/content/test/plugins/head.js",
"browser/base/content/test/sync/browser_fxa_web_channel.js",
"browser/base/content/test/webextensions/head.js",
"browser/components/customizableui/test/browser_1042100_default_placements_update.js",
"browser/components/customizableui/test/browser_1096763_seen_widgets_post_reset.js",
"browser/components/customizableui/test/browser_1161838_inserted_new_default_buttons.js",
"browser/components/customizableui/test/browser_989338_saved_placements_not_resaved.js",
"browser/components/customizableui/test/browser_currentset_post_reset.js",
"browser/components/customizableui/test/browser_panel_keyboard_navigation.js",
"browser/components/enterprisepolicies/tests/browser/browser_policies_setAndLockPref_API.js",
"browser/components/enterprisepolicies/tests/browser/head.js",
"browser/components/enterprisepolicies/tests/xpcshell/head.js",
"browser/components/enterprisepolicies/tests/xpcshell/test_proxy.js",
"browser/components/enterprisepolicies/tests/xpcshell/test_runOnce_helper.js",
"browser/components/extensions/test/browser/browser_ext_browserAction_context.js",
"browser/components/extensions/test/browser/browser_ext_browserAction_popup.js",
"browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js",
"browser/components/extensions/test/browser/browser_ext_currentWindow.js",
"browser/components/extensions/test/browser/browser_ext_getViews.js",
"browser/components/extensions/test/browser/browser_ext_management.js",
"browser/components/extensions/test/browser/browser_ext_menus_events.js",
"browser/components/extensions/test/browser/browser_ext_openPanel.js",
"browser/components/extensions/test/browser/browser_ext_pageAction_context.js",
"browser/components/extensions/test/browser/browser_ext_pageAction_popup.js",
"browser/components/extensions/test/browser/browser_ext_pageAction_show_matches.js",
"browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js",
"browser/components/extensions/test/browser/browser_ext_sessions_restore.js",
"browser/components/extensions/test/browser/browser_ext_tabs_audio.js",
"browser/components/extensions/test/browser/browser_ext_tabs_create_url.js",
"browser/components/extensions/test/browser/browser_ext_tabs_duplicate.js",
"browser/components/extensions/test/browser/browser_ext_tabs_newtab_private.js",
"browser/components/extensions/test/browser/browser_ext_tabs_removeCSS.js",
"browser/components/extensions/test/browser/browser_ext_tabs_zoom.js",
"browser/components/extensions/test/browser/browser_ext_windows.js",
"browser/components/extensions/test/browser/browser_ext_windows_events.js",
"browser/components/extensions/test/browser/head.js",
"browser/components/extensions/test/browser/head_webNavigation.js",
"browser/components/extensions/test/xpcshell/test_ext_url_overrides_newtab.js",
"browser/components/migration/tests/unit/test_Edge_db_migration.js",
"browser/components/preferences/tests/browser_contentblocking.js",
"browser/components/translation/test/unit/test_cld2.js",
"browser/components/urlbar/tests/ext/browser/update/browser_getBrowserUpdateStatus_updateDisabledByPolicy.js",
"browser/extensions/formautofill/test/unit/head.js",
"browser/extensions/formautofill/test/unit/test_creditCardRecords.js",
"browser/extensions/formautofill/test/unit/test_migrateRecords.js",
"browser/extensions/formautofill/test/unit/test_storage_remove.js",
"browser/extensions/formautofill/test/unit/test_storage_tombstones.js",
"browser/extensions/formautofill/test/unit/test_sync.js",
"browser/extensions/formautofill/test/unit/test_transformFields.js",
"browser/extensions/report-site-issue/experimentalAPIs/pageActionExtras.js",
"browser/extensions/report-site-issue/test/browser/head.js",
"devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_debug_popup.js",
"dom/ipc/tests/browser_memory_distribution_telemetry.js",
"dom/push/test/xpcshell/head.js",
"dom/push/test/xpcshell/test_broadcast_success.js",
"dom/push/test/xpcshell/test_crypto.js",
"gfx/layers/apz/test/mochitest/browser_test_select_zoom.js",
"security/manager/ssl/RemoteSecuritySettings.jsm",
"security/manager/ssl/tests/unit/test_der.js",
"security/manager/ssl/X509.jsm",
"services/common/tests/unit/head_helpers.js",
"services/common/tests/unit/test_uptake_telemetry.js",
"services/fxaccounts/tests/xpcshell/test_accounts.js",
"services/fxaccounts/tests/xpcshell/test_accounts_device_registration.js",
"services/fxaccounts/tests/xpcshell/test_loginmgr_storage.js",
"services/fxaccounts/tests/xpcshell/test_oauth_token_storage.js",
"services/fxaccounts/tests/xpcshell/test_oauth_tokens.js",
"services/fxaccounts/tests/xpcshell/test_web_channel.js",
"services/sync/modules-testing/utils.js",
"services/sync/tests/unit/test_doctor.js",
"services/sync/tests/unit/test_postqueue.js",
"testing/marionette/components/marionette.js",
"testing/marionette/driver.js",
"testing/marionette/format.js",
"testing/marionette/server.js",
"testing/marionette/test/unit/test_prefs.js",
"testing/mochitest/browser-test.js",
"testing/mochitest/BrowserTestUtils/content/content-task.js",
"testing/xpcshell/head.js",
"toolkit/components/cloudstorage/tests/unit/test_cloudstorage.js",
"toolkit/components/crashes/tests/xpcshell/test_crash_manager.js",
"toolkit/components/crashes/tests/xpcshell/test_crash_service.js",
"toolkit/components/crashes/tests/xpcshell/test_crash_store.js",
"toolkit/components/enterprisepolicies/tests/browser/head.js",
"toolkit/components/enterprisepolicies/tests/EnterprisePolicyTesting.jsm",
"toolkit/components/enterprisepolicies/tests/xpcshell/head.js",
"toolkit/components/extensions/ExtensionPreferencesManager.jsm",
"toolkit/components/extensions/ExtensionXPCShellUtils.jsm",
"toolkit/components/extensions/ExtensionXPCShellUtils.jsm",
"toolkit/components/extensions/parent/ext-management.js",
"toolkit/components/extensions/test/mochitest/test_ext_contentscript_cache.html",
"toolkit/components/extensions/test/xpcshell/head_native_messaging.js",
"toolkit/components/extensions/test/xpcshell/test_ext_api_permissions.js",
"toolkit/components/extensions/test/xpcshell/test_ext_background_early_shutdown.js",
"toolkit/components/extensions/test/xpcshell/test_ext_background_teardown.js",
"toolkit/components/extensions/test/xpcshell/test_ext_contentscript_context.js",
"toolkit/components/extensions/test/xpcshell/test_ext_contentscript_context_isolation.js",
"toolkit/components/extensions/test/xpcshell/test_ext_contentscript_teardown.js",
"toolkit/components/extensions/test/xpcshell/test_ext_contexts_gc.js",
"toolkit/components/extensions/test/xpcshell/test_ext_privacy_disable.js",
"toolkit/components/extensions/test/xpcshell/test_ext_schemas_interactive.js",
"toolkit/components/extensions/test/xpcshell/test_ext_shutdown_cleanup.js",
"toolkit/components/extensions/test/xpcshell/test_ext_storage_sync_kinto.js",
"toolkit/components/extensions/test/xpcshell/test_ext_storage_sync_kinto_crypto.js",
"toolkit/components/extensions/test/xpcshell/test_ext_tab_teardown.js",
"toolkit/components/extensions/test/xpcshell/test_native_manifests.js",
"toolkit/components/featuregates/test/unit/test_FeatureGate.js",
"toolkit/components/mozintl/mozIntl.jsm",
"toolkit/components/normandy/test/browser/browser_actions_ShowHeartbeatAction.js",
"toolkit/components/osfile/modules/osfile_async_front.jsm",
"toolkit/components/osfile/modules/osfile_native.jsm",
"toolkit/components/osfile/tests/xpcshell/test_osfile_kill.js",
"toolkit/components/passwordmgr/test/unit/test_getFormFields.js",
"toolkit/components/passwordmgr/test/unit/test_getPasswordFields.js",
"toolkit/components/passwordmgr/test/unit/test_getUserNameAndPasswordFields.js",
"toolkit/components/processsingleton/MainProcessSingleton.jsm",
"toolkit/components/telemetry/tests/unit/head.js",
"toolkit/components/telemetry/tests/unit/test_EcosystemTelemetry.js",
"toolkit/components/telemetry/tests/unit/test_EventPing.js",
"toolkit/components/telemetry/tests/unit/test_HealthPing.js",
"toolkit/components/telemetry/tests/unit/test_PingAPI.js",
"toolkit/components/telemetry/tests/unit/test_PrioPing.js",
"toolkit/components/telemetry/tests/unit/test_TelemetryController_idle.js",
"toolkit/components/telemetry/tests/unit/test_TelemetryReportingPolicy.js",
"toolkit/components/telemetry/tests/unit/test_TelemetrySendOldPings.js",
"toolkit/components/telemetry/tests/unit/test_TelemetrySession.js",
"toolkit/modules/subprocess/test/xpcshell/test_subprocess.js",
"toolkit/modules/tests/xpcshell/test_GMPInstallManager.js",
"toolkit/mozapps/extensions/internal/AddonTestUtils.jsm",
"toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js",
"toolkit/mozapps/extensions/test/xpcshell/head_addons.js",
"toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_clients.js",
"toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_regexp_split.js",
"toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_targetapp_filter.js",
"toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklist_telemetry.js",
"toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/test_blocklistchange.js",
"toolkit/mozapps/extensions/test/xpcshell/test_gmpProvider.js",
"toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js",
"toolkit/mozapps/extensions/test/xpcshell/test_permissions_prefs.js",
"toolkit/mozapps/extensions/test/xpcshell/test_signed_updatepref.js",
"toolkit/mozapps/extensions/test/xpcshell/test_signed_verify.js",
"toolkit/mozapps/extensions/test/xpcshell/test_webextension.js",
"toolkit/mozapps/extensions/test/xpcshell/test_webextension_events.js",
"toolkit/mozapps/extensions/test/xpcshell/test_XPIStates.js",
"toolkit/mozapps/installer/precompile_cache.js",
],
rules: {
"mozilla/reject-chromeutils-import-null": "off",
},
},
{
files: [
"browser/base/content/browser-gestureSupport.js",
"browser/base/content/tabbrowser-tab.js",
"browser/base/content/tabbrowser-tabs.js",
"browser/base/content/tabbrowser.js",
"browser/components/downloads/DownloadsCommon.jsm",
"browser/components/downloads/content/allDownloadsView.js",
"browser/components/downloads/content/downloads.js",
"browser/components/downloads/content/indicator.js",
"browser/components/payments/res/components/csc-input.js",
"browser/components/payments/res/components/labelled-checkbox.js",
"browser/components/pocket/content/Pocket.jsm",
"browser/components/preferences/search.js",
"browser/components/search/content/search-one-offs.js",
"browser/components/search/content/searchbar.js",
"browser/components/sessionstore/ContentSessionStore.jsm",
"browser/components/urlbar/UrlbarInput.jsm",
"browser/components/urlbar/UrlbarView.jsm",
"browser/extensions/formautofill/content/customElements.js",
"browser/modules/PageActions.jsm",
"devtools/client/shared/async-store-helper.js",
"devtools/client/shared/prefs.js",
"devtools/shared/task.js",
"dom/base/SlowScriptDebug.jsm",
"dom/media/PeerConnection.jsm",
"mobile/android/chrome/geckoview/SessionStateAggregator.js",
"mobile/android/modules/geckoview/DelayedInit.jsm",
"services/sync/modules/record.js",
"toolkit/actors/AutoCompleteChild.jsm",
"toolkit/components/autocomplete/tests/unit/test_stopSearch.js",
"toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm",
"toolkit/components/extensions/ExtensionParent.jsm",
"toolkit/components/osfile/modules/osfile_async_front.jsm",
"toolkit/components/osfile/modules/osfile_shared_allthreads.jsm",
"toolkit/content/aboutSupport.js",
"toolkit/content/customElements.js",
"toolkit/content/preferencesBindings.js",
"toolkit/content/tests/chrome/test_custom_element_base.xhtml",
"toolkit/content/viewZoomOverlay.js",
"toolkit/content/widgets/*.js",
"toolkit/modules/NewTabUtils.jsm",
"toolkit/modules/tests/modules/Task.jsm",
"toolkit/mozapps/extensions/AddonManager.jsm",
"toolkit/mozapps/extensions/internal/PluginProvider.jsm",
"toolkit/mozapps/extensions/internal/XPIDatabase.jsm",
"toolkit/mozapps/extensions/test/browser/head.js",
"toolkit/mozapps/extensions/test/xpcshell/head_addons.js",
"toolkit/mozapps/handling/content/dialog.js",
],
rules: {
"no-setter-return": "off",
},
},
],
};