summaryrefslogtreecommitdiffstats
path: root/docs/code-quality/lint/linters/eslint-plugin-mozilla/reject-importGlobalProperties.rst
blob: 68b2e46928a3104525434453c530973879aaf3c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
reject-importGlobalProperties
=============================

Rejects calls to ``Cu.importGlobalProperties`` or
``XPCOMUtils.defineLazyGlobalGetters``.

In system modules all the required properties should already be available. In
non-module code or non-system modules, webidl defined interfaces should already
be available and hence do not need importing.

Options
-------

* "everything": Disallows using the import/getters completely.
* "allownonwebidl": Disallows using the import functions for webidl symbols. Allows
  other symbols.

everything
----------

Incorrect code for this option:

.. code-block:: js

    Cu.importGlobalProperties(['TextEncoder']);
    XPCOMUtils.defineLazyGlobalGetters(this, ['TextEncoder']);

allownonwebidl
--------------

Incorrect code for this option:

.. code-block:: js

    // AnimationEffect is a webidl property.
    Cu.importGlobalProperties(['AnimationEffect']);
    XPCOMUtils.defineLazyGlobalGetters(this, ['AnimationEffect']);

Correct code for this option:

.. code-block:: js

    // TextEncoder is not defined by webidl.
    Cu.importGlobalProperties(['TextEncoder']);
    XPCOMUtils.defineLazyGlobalGetters(this, ['TextEncoder']);