1#!/usr/bin/env python
2from __future__ import absolute_import
3from collections import OrderedDict
4
5
6class Mod:
7    """
8    A nserror module. When used with a `with` statement, binds the itself to
9    Mod.active.
10    """
11
12    active = None
13
14    def __init__(self, num):
15        self.num = num
16
17    def __enter__(self):
18        Mod.active = self
19
20    def __exit__(self, _type, _value, _traceback):
21        Mod.active = None
22
23
24modules = OrderedDict()
25
26# To add error code to your module, you need to do the following:
27#
28# 1) Add a module offset code.  Add yours to the bottom of the list
29# right below this comment, adding 1.
30#
31# 2) In your module, define a header file which uses one of the
32# NE_ERROR_GENERATExxxxxx macros.  Some examples below:
33#
34#    #define NS_ERROR_MYMODULE_MYERROR1 \
35#        NS_ERROR_GENERATE(NS_ERROR_SEVERITY_ERROR,NS_ERROR_MODULE_MYMODULE,1)
36#    #define NS_ERROR_MYMODULE_MYERROR2 NS_ERROR_GENERATE_SUCCESS(NS_ERROR_MODULE_MYMODULE,2)
37#    #define NS_ERROR_MYMODULE_MYERROR3 NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_MYMODULE,3)
38
39# @name Standard Module Offset Code. Each Module should identify a unique number
40#       and then all errors associated with that module become offsets from the
41#       base associated with that module id. There are 16 bits of code bits for
42#       each module.
43
44modules["XPCOM"] = Mod(1)
45modules["BASE"] = Mod(2)
46modules["GFX"] = Mod(3)
47modules["WIDGET"] = Mod(4)
48modules["CALENDAR"] = Mod(5)
49modules["NETWORK"] = Mod(6)
50modules["PLUGINS"] = Mod(7)
51modules["LAYOUT"] = Mod(8)
52modules["HTMLPARSER"] = Mod(9)
53modules["RDF"] = Mod(10)
54modules["UCONV"] = Mod(11)
55modules["REG"] = Mod(12)
56modules["FILES"] = Mod(13)
57modules["DOM"] = Mod(14)
58modules["IMGLIB"] = Mod(15)
59modules["MAILNEWS"] = Mod(16)
60modules["EDITOR"] = Mod(17)
61modules["XPCONNECT"] = Mod(18)
62modules["PROFILE"] = Mod(19)
63modules["LDAP"] = Mod(20)
64modules["SECURITY"] = Mod(21)
65modules["DOM_XPATH"] = Mod(22)
66# Mod(23) used to be NS_ERROR_MODULE_DOM_RANGE (see bug 711047)
67modules["URILOADER"] = Mod(24)
68modules["CONTENT"] = Mod(25)
69modules["PYXPCOM"] = Mod(26)
70modules["XSLT"] = Mod(27)
71modules["IPC"] = Mod(28)
72modules["SVG"] = Mod(29)
73modules["STORAGE"] = Mod(30)
74modules["SCHEMA"] = Mod(31)
75modules["DOM_FILE"] = Mod(32)
76modules["DOM_INDEXEDDB"] = Mod(33)
77modules["DOM_FILEHANDLE"] = Mod(34)
78modules["SIGNED_JAR"] = Mod(35)
79modules["DOM_FILESYSTEM"] = Mod(36)
80modules["DOM_BLUETOOTH"] = Mod(37)
81modules["SIGNED_APP"] = Mod(38)
82modules["DOM_ANIM"] = Mod(39)
83modules["DOM_PUSH"] = Mod(40)
84modules["DOM_MEDIA"] = Mod(41)
85modules["URL_CLASSIFIER"] = Mod(42)
86# ErrorResult gets its own module to reduce the chance of someone accidentally
87# defining an error code matching one of the ErrorResult ones.
88modules["ERRORRESULT"] = Mod(43)
89# Win32 system error codes, which are not mapped to a specific other value,
90# see Bug 1686041.
91modules["WIN32"] = Mod(44)
92
93# NS_ERROR_MODULE_GENERAL should be used by modules that do not
94# care if return code values overlap. Callers of methods that
95# return such codes should be aware that they are not
96# globally unique. Implementors should be careful about blindly
97# returning codes from other modules that might also use
98# the generic base.
99modules["GENERAL"] = Mod(51)
100
101MODULE_BASE_OFFSET = 0x45
102
103NS_ERROR_SEVERITY_SUCCESS = 0
104NS_ERROR_SEVERITY_ERROR = 1
105
106
107def SUCCESS_OR_FAILURE(sev, module, code):
108    return (sev << 31) | ((module + MODULE_BASE_OFFSET) << 16) | code
109
110
111def FAILURE(code):
112    return SUCCESS_OR_FAILURE(NS_ERROR_SEVERITY_ERROR, Mod.active.num, code)
113
114
115def SUCCESS(code):
116    return SUCCESS_OR_FAILURE(NS_ERROR_SEVERITY_SUCCESS, Mod.active.num, code)
117
118
119# Errors is an ordered dictionary, so that we can recover the order in which
120# they were defined. This is important for determining which name is the
121# canonical name for an error code.
122errors = OrderedDict()
123
124# Standard "it worked" return value
125errors["NS_OK"] = 0
126
127# =======================================================================
128# Core errors, not part of any modules
129# =======================================================================
130errors["NS_ERROR_BASE"] = 0xC1F30000
131# Returned when an instance is not initialized
132errors["NS_ERROR_NOT_INITIALIZED"] = errors["NS_ERROR_BASE"] + 1
133# Returned when an instance is already initialized
134errors["NS_ERROR_ALREADY_INITIALIZED"] = errors["NS_ERROR_BASE"] + 2
135# Returned by a not implemented function
136errors["NS_ERROR_NOT_IMPLEMENTED"] = 0x80004001
137# Returned when a given interface is not supported.
138errors["NS_NOINTERFACE"] = 0x80004002
139errors["NS_ERROR_NO_INTERFACE"] = errors["NS_NOINTERFACE"]
140# Returned when a function aborts
141errors["NS_ERROR_ABORT"] = 0x80004004
142# Returned when a function fails
143errors["NS_ERROR_FAILURE"] = 0x80004005
144# Returned when an unexpected error occurs
145errors["NS_ERROR_UNEXPECTED"] = 0x8000FFFF
146# Returned when a memory allocation fails
147errors["NS_ERROR_OUT_OF_MEMORY"] = 0x8007000E
148# Returned when an illegal value is passed
149errors["NS_ERROR_ILLEGAL_VALUE"] = 0x80070057
150errors["NS_ERROR_INVALID_ARG"] = errors["NS_ERROR_ILLEGAL_VALUE"]
151errors["NS_ERROR_INVALID_POINTER"] = errors["NS_ERROR_INVALID_ARG"]
152errors["NS_ERROR_NULL_POINTER"] = errors["NS_ERROR_INVALID_ARG"]
153# Returned when a class doesn't allow aggregation
154errors["NS_ERROR_NO_AGGREGATION"] = 0x80040110
155# Returned when an operation can't complete due to an unavailable resource
156errors["NS_ERROR_NOT_AVAILABLE"] = 0x80040111
157# Returned when a class is not registered
158errors["NS_ERROR_FACTORY_NOT_REGISTERED"] = 0x80040154
159# Returned when a class cannot be registered, but may be tried again later
160errors["NS_ERROR_FACTORY_REGISTER_AGAIN"] = 0x80040155
161# Returned when a dynamically loaded factory couldn't be found
162errors["NS_ERROR_FACTORY_NOT_LOADED"] = 0x800401F8
163# Returned when a factory doesn't support signatures
164errors["NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT"] = errors["NS_ERROR_BASE"] + 0x101
165# Returned when a factory already is registered
166errors["NS_ERROR_FACTORY_EXISTS"] = errors["NS_ERROR_BASE"] + 0x100
167
168
169# =======================================================================
170# 1: NS_ERROR_MODULE_XPCOM
171# =======================================================================
172with modules["XPCOM"]:
173    # Result codes used by nsIVariant
174    errors["NS_ERROR_CANNOT_CONVERT_DATA"] = FAILURE(1)
175    errors["NS_ERROR_OBJECT_IS_IMMUTABLE"] = FAILURE(2)
176    errors["NS_ERROR_LOSS_OF_SIGNIFICANT_DATA"] = FAILURE(3)
177    # Result code used by nsIThreadManager
178    errors["NS_ERROR_NOT_SAME_THREAD"] = FAILURE(4)
179    # Various operations are not permitted during XPCOM shutdown and will fail
180    # with this exception.
181    errors["NS_ERROR_ILLEGAL_DURING_SHUTDOWN"] = FAILURE(30)
182    errors["NS_ERROR_SERVICE_NOT_AVAILABLE"] = FAILURE(22)
183
184    errors["NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA"] = SUCCESS(1)
185    # Used by nsCycleCollectionParticipant
186    errors["NS_SUCCESS_INTERRUPTED_TRAVERSE"] = SUCCESS(2)
187
188# =======================================================================
189# 2: NS_ERROR_MODULE_BASE
190# =======================================================================
191with modules["BASE"]:
192    # I/O Errors
193
194    #  Stream closed
195    errors["NS_BASE_STREAM_CLOSED"] = FAILURE(2)
196    #  Error from the operating system
197    errors["NS_BASE_STREAM_OSERROR"] = FAILURE(3)
198    #  Illegal arguments
199    errors["NS_BASE_STREAM_ILLEGAL_ARGS"] = FAILURE(4)
200    #  For unichar streams
201    errors["NS_BASE_STREAM_NO_CONVERTER"] = FAILURE(5)
202    #  For unichar streams
203    errors["NS_BASE_STREAM_BAD_CONVERSION"] = FAILURE(6)
204    errors["NS_BASE_STREAM_WOULD_BLOCK"] = FAILURE(7)
205
206
207# =======================================================================
208# 3: NS_ERROR_MODULE_GFX
209# =======================================================================
210with modules["GFX"]:
211    # no printer available (e.g. cannot find _any_ printer)
212    errors["NS_ERROR_GFX_PRINTER_NO_PRINTER_AVAILABLE"] = FAILURE(1)
213    # _specified_ (by name) printer not found
214    errors["NS_ERROR_GFX_PRINTER_NAME_NOT_FOUND"] = FAILURE(2)
215    # print-to-file: could not open output file
216    errors["NS_ERROR_GFX_PRINTER_COULD_NOT_OPEN_FILE"] = FAILURE(3)
217    # print: starting document
218    errors["NS_ERROR_GFX_PRINTER_STARTDOC"] = FAILURE(4)
219    # print: ending document
220    errors["NS_ERROR_GFX_PRINTER_ENDDOC"] = FAILURE(5)
221    # print: starting page
222    errors["NS_ERROR_GFX_PRINTER_STARTPAGE"] = FAILURE(6)
223    # The document is still being loaded
224    errors["NS_ERROR_GFX_PRINTER_DOC_IS_BUSY"] = FAILURE(7)
225
226    # Font cmap is strangely structured - avoid this font!
227    errors["NS_ERROR_GFX_CMAP_MALFORMED"] = FAILURE(51)
228
229
230# =======================================================================
231# 4:  NS_ERROR_MODULE_WIDGET
232# =======================================================================
233with modules["WIDGET"]:
234    # Used by:
235    #   - nsIWidget::NotifyIME()
236    # Returned when the notification or the event is handled and it's consumed
237    # by somebody.
238    errors["NS_SUCCESS_EVENT_CONSUMED"] = SUCCESS(1)
239
240
241# =======================================================================
242# 6: NS_ERROR_MODULE_NETWORK
243# =======================================================================
244with modules["NETWORK"]:
245    # General async request error codes:
246    #
247    # These error codes are commonly passed through callback methods to indicate
248    # the status of some requested async request.
249    #
250    # For example, see nsIRequestObserver::onStopRequest.
251
252    # The async request completed successfully.
253    errors["NS_BINDING_SUCCEEDED"] = errors["NS_OK"]
254
255    # The async request failed for some unknown reason.
256    errors["NS_BINDING_FAILED"] = FAILURE(1)
257    # The async request failed because it was aborted by some user action.
258    errors["NS_BINDING_ABORTED"] = FAILURE(2)
259    # The async request has been "redirected" to a different async request.
260    # (e.g., an HTTP redirect occurred).
261    #
262    # This error code is used with load groups to notify the load group observer
263    # when a request in the load group is redirected to another request.
264    errors["NS_BINDING_REDIRECTED"] = FAILURE(3)
265    # The async request has been "retargeted" to a different "handler."
266    #
267    # This error code is used with load groups to notify the load group observer
268    # when a request in the load group is removed from the load group and added
269    # to a different load group.
270    errors["NS_BINDING_RETARGETED"] = FAILURE(4)
271
272    # Miscellaneous error codes: These errors are not typically passed via
273    # onStopRequest.
274
275    # The URI is malformed.
276    errors["NS_ERROR_MALFORMED_URI"] = FAILURE(10)
277    # The requested action could not be completed while the object is busy.
278    # Implementations of nsIChannel::asyncOpen will commonly return this error
279    # if the channel has already been opened (and has not yet been closed).
280    errors["NS_ERROR_IN_PROGRESS"] = FAILURE(15)
281    # Returned from nsIChannel::asyncOpen to indicate that OnDataAvailable will
282    # not be called because there is no content available.  This is used by
283    # helper app style protocols (e.g., mailto).  XXX perhaps this should be a
284    # success code.
285    errors["NS_ERROR_NO_CONTENT"] = FAILURE(17)
286    # The URI scheme corresponds to an unknown protocol handler.
287    errors["NS_ERROR_UNKNOWN_PROTOCOL"] = FAILURE(18)
288    # The content encoding of the source document was incorrect, for example
289    # returning a plain HTML document advertised as Content-Encoding: gzip
290    errors["NS_ERROR_INVALID_CONTENT_ENCODING"] = FAILURE(27)
291    # A transport level corruption was found in the source document. for example
292    # a document with a calculated checksum that does not match the Content-MD5
293    # http header.
294    errors["NS_ERROR_CORRUPTED_CONTENT"] = FAILURE(29)
295    # A content signature verification failed for some reason. This can be either
296    # an actual verification error, or any other error that led to the fact that
297    # a content signature that was expected couldn't be verified.
298    errors["NS_ERROR_INVALID_SIGNATURE"] = FAILURE(58)
299    # While parsing for the first component of a header field using syntax as in
300    # Content-Disposition or Content-Type, the first component was found to be
301    # empty, such as in: Content-Disposition: ; filename=foo
302    errors["NS_ERROR_FIRST_HEADER_FIELD_COMPONENT_EMPTY"] = FAILURE(34)
303    # Returned from nsIChannel::asyncOpen when trying to open the channel again
304    # (reopening is not supported).
305    errors["NS_ERROR_ALREADY_OPENED"] = FAILURE(73)
306
307    # Connectivity error codes:
308
309    # The connection is already established.  XXX unused - consider removing.
310    errors["NS_ERROR_ALREADY_CONNECTED"] = FAILURE(11)
311    # The connection does not exist.  XXX unused - consider removing.
312    errors["NS_ERROR_NOT_CONNECTED"] = FAILURE(12)
313    # The connection attempt failed, for example, because no server was
314    # listening at specified host:port.
315    errors["NS_ERROR_CONNECTION_REFUSED"] = FAILURE(13)
316    # The connection was lost due to a timeout error.
317    errors["NS_ERROR_NET_TIMEOUT"] = FAILURE(14)
318    # The requested action could not be completed while the networking library
319    # is in the offline state.
320    errors["NS_ERROR_OFFLINE"] = FAILURE(16)
321    # The requested action was prohibited because it would have caused the
322    # networking library to establish a connection to an unsafe or otherwise
323    # banned port.
324    errors["NS_ERROR_PORT_ACCESS_NOT_ALLOWED"] = FAILURE(19)
325    # The connection was established, but no data was ever received.
326    errors["NS_ERROR_NET_RESET"] = FAILURE(20)
327    # The connection was established, but the data transfer was interrupted.
328    errors["NS_ERROR_NET_INTERRUPT"] = FAILURE(71)
329    # The connection attempt to a proxy failed.
330    errors["NS_ERROR_PROXY_CONNECTION_REFUSED"] = FAILURE(72)
331    # A transfer was only partially done when it completed.
332    errors["NS_ERROR_NET_PARTIAL_TRANSFER"] = FAILURE(76)
333    # HTTP/2 detected invalid TLS configuration
334    errors["NS_ERROR_NET_INADEQUATE_SECURITY"] = FAILURE(82)
335    # HTTP/2 sent a GOAWAY
336    errors["NS_ERROR_NET_HTTP2_SENT_GOAWAY"] = FAILURE(83)
337    # HTTP/3 protocol internal error
338    errors["NS_ERROR_NET_HTTP3_PROTOCOL_ERROR"] = FAILURE(84)
339    # A timeout error code that can be used to cancel requests.
340    errors["NS_ERROR_NET_TIMEOUT_EXTERNAL"] = FAILURE(85)
341
342    # XXX really need to better rationalize these error codes.  are consumers of
343    # necko really expected to know how to discern the meaning of these??
344    # This request is not resumable, but it was tried to resume it, or to
345    # request resume-specific data.
346    errors["NS_ERROR_NOT_RESUMABLE"] = FAILURE(25)
347    # The request failed as a result of a detected redirection loop.
348    errors["NS_ERROR_REDIRECT_LOOP"] = FAILURE(31)
349    # It was attempted to resume the request, but the entity has changed in the
350    # meantime.
351    errors["NS_ERROR_ENTITY_CHANGED"] = FAILURE(32)
352    # The request failed because the content type returned by the server was not
353    # a type expected by the channel (for nested channels such as the JAR
354    # channel).
355    errors["NS_ERROR_UNSAFE_CONTENT_TYPE"] = FAILURE(74)
356    # The request failed because the user tried to access to a remote XUL
357    # document from a website that is not in its white-list.
358    errors["NS_ERROR_REMOTE_XUL"] = FAILURE(75)
359    # The request resulted in an error page being displayed.
360    errors["NS_ERROR_LOAD_SHOWED_ERRORPAGE"] = FAILURE(77)
361    # The request occurred in docshell that lacks a treeowner, so it is
362    # probably in the process of being torn down.
363    errors["NS_ERROR_DOCSHELL_DYING"] = FAILURE(78)
364
365    # DNS specific error codes:
366
367    # The lookup of a hostname failed.  This generally refers to the hostname
368    # from the URL being loaded.
369    errors["NS_ERROR_UNKNOWN_HOST"] = FAILURE(30)
370    # A low or medium priority DNS lookup failed because the pending queue was
371    # already full. High priorty (the default) always makes room
372    errors["NS_ERROR_DNS_LOOKUP_QUEUE_FULL"] = FAILURE(33)
373    # The lookup of a proxy hostname failed.  If a channel is configured to
374    # speak to a proxy server, then it will generate this error if the proxy
375    # hostname cannot be resolved.
376    errors["NS_ERROR_UNKNOWN_PROXY_HOST"] = FAILURE(42)
377    # This DNS error will occur when the resolver uses the Extended DNS Error
378    # option to indicate an error code for which we should not fall back to the
379    # default DNS resolver. This means the DNS failure is definitive.
380    errors["NS_ERROR_DEFINITIVE_UNKNOWN_HOST"] = FAILURE(43)
381
382    # Socket specific error codes:
383
384    # The specified socket type does not exist.
385    errors["NS_ERROR_UNKNOWN_SOCKET_TYPE"] = FAILURE(51)
386    # The specified socket type could not be created.
387    errors["NS_ERROR_SOCKET_CREATE_FAILED"] = FAILURE(52)
388    # The operating system doesn't support the given type of address.
389    errors["NS_ERROR_SOCKET_ADDRESS_NOT_SUPPORTED"] = FAILURE(53)
390    # The address to which we tried to bind the socket was busy.
391    errors["NS_ERROR_SOCKET_ADDRESS_IN_USE"] = FAILURE(54)
392
393    # Cache specific error codes:
394    errors["NS_ERROR_CACHE_KEY_NOT_FOUND"] = FAILURE(61)
395    errors["NS_ERROR_CACHE_DATA_IS_STREAM"] = FAILURE(62)
396    errors["NS_ERROR_CACHE_DATA_IS_NOT_STREAM"] = FAILURE(63)
397    errors["NS_ERROR_CACHE_WAIT_FOR_VALIDATION"] = FAILURE(64)
398    errors["NS_ERROR_CACHE_ENTRY_DOOMED"] = FAILURE(65)
399    errors["NS_ERROR_CACHE_READ_ACCESS_DENIED"] = FAILURE(66)
400    errors["NS_ERROR_CACHE_WRITE_ACCESS_DENIED"] = FAILURE(67)
401    errors["NS_ERROR_CACHE_IN_USE"] = FAILURE(68)
402    # Error passed through onStopRequest if the document could not be fetched
403    # from the cache.
404    errors["NS_ERROR_DOCUMENT_NOT_CACHED"] = FAILURE(70)
405
406    # Effective TLD Service specific error codes:
407
408    # The requested number of domain levels exceeds those present in the host
409    # string.
410    errors["NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS"] = FAILURE(80)
411    # The host string is an IP address.
412    errors["NS_ERROR_HOST_IS_IP_ADDRESS"] = FAILURE(81)
413
414    # StreamLoader specific result codes:
415
416    # Result code returned by nsIStreamLoaderObserver to indicate that the
417    # observer is taking over responsibility for the data buffer, and the loader
418    # should NOT free it.
419    errors["NS_SUCCESS_ADOPTED_DATA"] = SUCCESS(90)
420
421    # This success code may be returned by nsIAuthModule::getNextToken to
422    # indicate that the authentication is finished and thus there's no need
423    # to call getNextToken again.
424    errors["NS_SUCCESS_AUTH_FINISHED"] = SUCCESS(40)
425
426    # These are really not "results", they're statuses, used by nsITransport and
427    # friends.  This is abuse of nsresult, but we'll put up with it for now.
428    # nsITransport
429    errors["NS_NET_STATUS_READING"] = FAILURE(8)
430    errors["NS_NET_STATUS_WRITING"] = FAILURE(9)
431
432    # nsISocketTransport
433    errors["NS_NET_STATUS_RESOLVING_HOST"] = FAILURE(3)
434    errors["NS_NET_STATUS_RESOLVED_HOST"] = FAILURE(11)
435    errors["NS_NET_STATUS_CONNECTING_TO"] = FAILURE(7)
436    errors["NS_NET_STATUS_CONNECTED_TO"] = FAILURE(4)
437    errors["NS_NET_STATUS_TLS_HANDSHAKE_STARTING"] = FAILURE(12)
438    errors["NS_NET_STATUS_TLS_HANDSHAKE_ENDED"] = FAILURE(13)
439    errors["NS_NET_STATUS_SENDING_TO"] = FAILURE(5)
440    errors["NS_NET_STATUS_WAITING_FOR"] = FAILURE(10)
441    errors["NS_NET_STATUS_RECEIVING_FROM"] = FAILURE(6)
442
443    # nsIInterceptedChannel
444    # Generic error for non-specific failures during service worker interception
445    errors["NS_ERROR_INTERCEPTION_FAILED"] = FAILURE(100)
446
447    # All Http proxy CONNECT response codes
448    errors["NS_ERROR_PROXY_CODE_BASE"] = FAILURE(1000)
449    # Redirection 3xx
450    errors["NS_ERROR_PROXY_MULTIPLE_CHOICES"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 300
451    errors["NS_ERROR_PROXY_MOVED_PERMANENTLY"] = (
452        errors["NS_ERROR_PROXY_CODE_BASE"] + 301
453    )
454    errors["NS_ERROR_PROXY_FOUND"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 302
455    errors["NS_ERROR_PROXY_SEE_OTHER"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 303
456    errors["NS_ERROR_PROXY_NOT_MODIFIED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 304
457    errors["NS_ERROR_PROXY_TEMPORARY_REDIRECT"] = (
458        errors["NS_ERROR_PROXY_CODE_BASE"] + 307
459    )
460    errors["NS_ERROR_PROXY_PERMANENT_REDIRECT"] = (
461        errors["NS_ERROR_PROXY_CODE_BASE"] + 308
462    )
463
464    # Client error 4xx
465    errors["NS_ERROR_PROXY_BAD_REQUEST"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 400
466    errors["NS_ERROR_PROXY_UNAUTHORIZED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 401
467    errors["NS_ERROR_PROXY_PAYMENT_REQUIRED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 402
468    errors["NS_ERROR_PROXY_FORBIDDEN"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 403
469    errors["NS_ERROR_PROXY_NOT_FOUND"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 404
470    errors["NS_ERROR_PROXY_METHOD_NOT_ALLOWED"] = (
471        errors["NS_ERROR_PROXY_CODE_BASE"] + 405
472    )
473    errors["NS_ERROR_PROXY_NOT_ACCEPTABLE"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 406
474    # The proxy requires authentication; used when we can't easily propagate 407s.
475    errors["NS_ERROR_PROXY_AUTHENTICATION_FAILED"] = (
476        errors["NS_ERROR_PROXY_CODE_BASE"] + 407
477    )
478    errors["NS_ERROR_PROXY_REQUEST_TIMEOUT"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 408
479    errors["NS_ERROR_PROXY_CONFLICT"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 409
480    errors["NS_ERROR_PROXY_GONE"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 410
481    errors["NS_ERROR_PROXY_LENGTH_REQUIRED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 411
482    errors["NS_ERROR_PROXY_PRECONDITION_FAILED"] = (
483        errors["NS_ERROR_PROXY_CODE_BASE"] + 412
484    )
485    errors["NS_ERROR_PROXY_REQUEST_ENTITY_TOO_LARGE"] = (
486        errors["NS_ERROR_PROXY_CODE_BASE"] + 413
487    )
488    errors["NS_ERROR_PROXY_REQUEST_URI_TOO_LONG"] = (
489        errors["NS_ERROR_PROXY_CODE_BASE"] + 414
490    )
491    errors["NS_ERROR_PROXY_UNSUPPORTED_MEDIA_TYPE"] = (
492        errors["NS_ERROR_PROXY_CODE_BASE"] + 415
493    )
494    errors["NS_ERROR_PROXY_REQUESTED_RANGE_NOT_SATISFIABLE"] = (
495        errors["NS_ERROR_PROXY_CODE_BASE"] + 416
496    )
497    errors["NS_ERROR_PROXY_EXPECTATION_FAILED"] = (
498        errors["NS_ERROR_PROXY_CODE_BASE"] + 417
499    )
500    errors["NS_ERROR_PROXY_MISDIRECTED_REQUEST"] = (
501        errors["NS_ERROR_PROXY_CODE_BASE"] + 421
502    )
503    errors["NS_ERROR_PROXY_TOO_EARLY"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 425
504    errors["NS_ERROR_PROXY_UPGRADE_REQUIRED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 426
505    errors["NS_ERROR_PROXY_PRECONDITION_REQUIRED"] = (
506        errors["NS_ERROR_PROXY_CODE_BASE"] + 428
507    )
508    # Indicates that we have sent too many requests in a given amount of time.
509    errors["NS_ERROR_PROXY_TOO_MANY_REQUESTS"] = (
510        errors["NS_ERROR_PROXY_CODE_BASE"] + 429
511    )
512    errors["NS_ERROR_PROXY_REQUEST_HEADER_FIELDS_TOO_LARGE"] = (
513        errors["NS_ERROR_PROXY_CODE_BASE"] + 431
514    )
515    errors["NS_ERROR_PROXY_UNAVAILABLE_FOR_LEGAL_REASONS"] = (
516        errors["NS_ERROR_PROXY_CODE_BASE"] + 451
517    )
518
519    # Server error 5xx
520    errors["NS_ERROR_PROXY_INTERNAL_SERVER_ERROR"] = (
521        errors["NS_ERROR_PROXY_CODE_BASE"] + 500
522    )
523    errors["NS_ERROR_PROXY_NOT_IMPLEMENTED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 501
524    errors["NS_ERROR_PROXY_BAD_GATEWAY"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 502
525    errors["NS_ERROR_PROXY_SERVICE_UNAVAILABLE"] = (
526        errors["NS_ERROR_PROXY_CODE_BASE"] + 503
527    )
528    # The proxy did get any response from the remote server in time.
529    errors["NS_ERROR_PROXY_GATEWAY_TIMEOUT"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 504
530    errors["NS_ERROR_PROXY_VERSION_NOT_SUPPORTED"] = (
531        errors["NS_ERROR_PROXY_CODE_BASE"] + 505
532    )
533    errors["NS_ERROR_PROXY_VARIANT_ALSO_NEGOTIATES"] = (
534        errors["NS_ERROR_PROXY_CODE_BASE"] + 506
535    )
536    errors["NS_ERROR_PROXY_NOT_EXTENDED"] = errors["NS_ERROR_PROXY_CODE_BASE"] + 510
537    errors["NS_ERROR_PROXY_NETWORK_AUTHENTICATION_REQUIRED"] = (
538        errors["NS_ERROR_PROXY_CODE_BASE"] + 511
539    )
540
541# =======================================================================
542# 7: NS_ERROR_MODULE_PLUGINS
543# =======================================================================
544with modules["PLUGINS"]:
545    errors["NS_ERROR_PLUGINS_PLUGINSNOTCHANGED"] = FAILURE(1000)
546    errors["NS_ERROR_PLUGIN_DISABLED"] = FAILURE(1001)
547    errors["NS_ERROR_PLUGIN_BLOCKLISTED"] = FAILURE(1002)
548    errors["NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED"] = FAILURE(1003)
549    errors["NS_ERROR_PLUGIN_CLICKTOPLAY"] = FAILURE(1004)
550
551
552# =======================================================================
553# 8: NS_ERROR_MODULE_LAYOUT
554# =======================================================================
555with modules["LAYOUT"]:
556    # Return code for SheetLoadData::VerifySheetReadyToParse
557    errors["NS_OK_PARSE_SHEET"] = SUCCESS(1)
558    # Return code for nsFrame::GetNextPrevLineFromeBlockFrame
559    errors["NS_POSITION_BEFORE_TABLE"] = SUCCESS(3)
560
561
562# =======================================================================
563# 9: NS_ERROR_MODULE_HTMLPARSER
564# =======================================================================
565with modules["HTMLPARSER"]:
566    errors["NS_ERROR_HTMLPARSER_CONTINUE"] = errors["NS_OK"]
567
568    errors["NS_ERROR_HTMLPARSER_EOF"] = FAILURE(1000)
569    errors["NS_ERROR_HTMLPARSER_UNKNOWN"] = FAILURE(1001)
570    errors["NS_ERROR_HTMLPARSER_CANTPROPAGATE"] = FAILURE(1002)
571    errors["NS_ERROR_HTMLPARSER_CONTEXTMISMATCH"] = FAILURE(1003)
572    errors["NS_ERROR_HTMLPARSER_BADFILENAME"] = FAILURE(1004)
573    errors["NS_ERROR_HTMLPARSER_BADURL"] = FAILURE(1005)
574    errors["NS_ERROR_HTMLPARSER_INVALIDPARSERCONTEXT"] = FAILURE(1006)
575    errors["NS_ERROR_HTMLPARSER_INTERRUPTED"] = FAILURE(1007)
576    errors["NS_ERROR_HTMLPARSER_BLOCK"] = FAILURE(1008)
577    errors["NS_ERROR_HTMLPARSER_BADTOKENIZER"] = FAILURE(1009)
578    errors["NS_ERROR_HTMLPARSER_BADATTRIBUTE"] = FAILURE(1010)
579    errors["NS_ERROR_HTMLPARSER_UNRESOLVEDDTD"] = FAILURE(1011)
580    errors["NS_ERROR_HTMLPARSER_MISPLACEDTABLECONTENT"] = FAILURE(1012)
581    errors["NS_ERROR_HTMLPARSER_BADDTD"] = FAILURE(1013)
582    errors["NS_ERROR_HTMLPARSER_BADCONTEXT"] = FAILURE(1014)
583    errors["NS_ERROR_HTMLPARSER_STOPPARSING"] = FAILURE(1015)
584    errors["NS_ERROR_HTMLPARSER_UNTERMINATEDSTRINGLITERAL"] = FAILURE(1016)
585    errors["NS_ERROR_HTMLPARSER_HIERARCHYTOODEEP"] = FAILURE(1017)
586    errors["NS_ERROR_HTMLPARSER_FAKE_ENDTAG"] = FAILURE(1018)
587    errors["NS_ERROR_HTMLPARSER_INVALID_COMMENT"] = FAILURE(1019)
588
589
590# =======================================================================
591# 10: NS_ERROR_MODULE_RDF
592# =======================================================================
593with modules["RDF"]:
594    # Returned from nsIRDFDataSource::Assert() and Unassert() if the assertion
595    # (or unassertion was accepted by the datasource
596    errors["NS_RDF_ASSERTION_ACCEPTED"] = errors["NS_OK"]
597    # Returned from nsIRDFDataSource::GetSource() and GetTarget() if the
598    # source/target has no value
599    errors["NS_RDF_NO_VALUE"] = SUCCESS(2)
600    # Returned from nsIRDFDataSource::Assert() and Unassert() if the assertion
601    # (or unassertion) was rejected by the datasource; i.e., the datasource was
602    # not willing to record the statement.
603    errors["NS_RDF_ASSERTION_REJECTED"] = SUCCESS(3)
604    # Return this from rdfITripleVisitor to stop cycling
605    errors["NS_RDF_STOP_VISIT"] = SUCCESS(4)
606
607
608# =======================================================================
609# 11: NS_ERROR_MODULE_UCONV
610# =======================================================================
611with modules["UCONV"]:
612    errors["NS_ERROR_UCONV_NOCONV"] = FAILURE(1)
613    errors["NS_ERROR_UDEC_ILLEGALINPUT"] = FAILURE(14)
614
615    errors["NS_OK_HAD_REPLACEMENTS"] = SUCCESS(3)
616    errors["NS_OK_UDEC_MOREINPUT"] = SUCCESS(12)
617    errors["NS_OK_UDEC_MOREOUTPUT"] = SUCCESS(13)
618    errors["NS_OK_UENC_MOREOUTPUT"] = SUCCESS(34)
619    errors["NS_ERROR_UENC_NOMAPPING"] = SUCCESS(35)
620
621    # BEGIN DEPRECATED
622    errors["NS_ERROR_ILLEGAL_INPUT"] = errors["NS_ERROR_UDEC_ILLEGALINPUT"]
623    # END DEPRECATED
624
625
626# =======================================================================
627# 13: NS_ERROR_MODULE_FILES
628# =======================================================================
629with modules["FILES"]:
630    errors["NS_ERROR_FILE_UNRECOGNIZED_PATH"] = FAILURE(1)
631    errors["NS_ERROR_FILE_UNRESOLVABLE_SYMLINK"] = FAILURE(2)
632    errors["NS_ERROR_FILE_EXECUTION_FAILED"] = FAILURE(3)
633    errors["NS_ERROR_FILE_UNKNOWN_TYPE"] = FAILURE(4)
634    errors["NS_ERROR_FILE_DESTINATION_NOT_DIR"] = FAILURE(5)
635    errors["NS_ERROR_FILE_TARGET_DOES_NOT_EXIST"] = FAILURE(6)
636    errors["NS_ERROR_FILE_COPY_OR_MOVE_FAILED"] = FAILURE(7)
637    errors["NS_ERROR_FILE_ALREADY_EXISTS"] = FAILURE(8)
638    errors["NS_ERROR_FILE_INVALID_PATH"] = FAILURE(9)
639    errors["NS_ERROR_FILE_CORRUPTED"] = FAILURE(11)
640    errors["NS_ERROR_FILE_NOT_DIRECTORY"] = FAILURE(12)
641    errors["NS_ERROR_FILE_IS_DIRECTORY"] = FAILURE(13)
642    errors["NS_ERROR_FILE_IS_LOCKED"] = FAILURE(14)
643    errors["NS_ERROR_FILE_TOO_BIG"] = FAILURE(15)
644    errors["NS_ERROR_FILE_NO_DEVICE_SPACE"] = FAILURE(16)
645    errors["NS_ERROR_FILE_NAME_TOO_LONG"] = FAILURE(17)
646    errors["NS_ERROR_FILE_NOT_FOUND"] = FAILURE(18)
647    errors["NS_ERROR_FILE_READ_ONLY"] = FAILURE(19)
648    errors["NS_ERROR_FILE_DIR_NOT_EMPTY"] = FAILURE(20)
649    errors["NS_ERROR_FILE_ACCESS_DENIED"] = FAILURE(21)
650    errors["NS_ERROR_FILE_FS_CORRUPTED"] = FAILURE(22)
651    errors["NS_ERROR_FILE_DEVICE_FAILURE"] = FAILURE(23)
652
653    errors["NS_SUCCESS_FILE_DIRECTORY_EMPTY"] = SUCCESS(1)
654    # Result codes used by nsIDirectoryServiceProvider2
655    errors["NS_SUCCESS_AGGREGATE_RESULT"] = SUCCESS(2)
656
657
658# =======================================================================
659# 14: NS_ERROR_MODULE_DOM
660# =======================================================================
661with modules["DOM"]:
662    # XXX If you add a new DOM error code, also add an error string to
663    # dom/base/domerr.msg
664
665    # Standard DOM error codes: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html
666    errors["NS_ERROR_DOM_INDEX_SIZE_ERR"] = FAILURE(1)
667    errors["NS_ERROR_DOM_HIERARCHY_REQUEST_ERR"] = FAILURE(3)
668    errors["NS_ERROR_DOM_WRONG_DOCUMENT_ERR"] = FAILURE(4)
669    errors["NS_ERROR_DOM_INVALID_CHARACTER_ERR"] = FAILURE(5)
670    errors["NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR"] = FAILURE(7)
671    errors["NS_ERROR_DOM_NOT_FOUND_ERR"] = FAILURE(8)
672    errors["NS_ERROR_DOM_NOT_SUPPORTED_ERR"] = FAILURE(9)
673    errors["NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR"] = FAILURE(10)
674    errors["NS_ERROR_DOM_INVALID_STATE_ERR"] = FAILURE(11)
675    errors["NS_ERROR_DOM_SYNTAX_ERR"] = FAILURE(12)
676    errors["NS_ERROR_DOM_INVALID_MODIFICATION_ERR"] = FAILURE(13)
677    errors["NS_ERROR_DOM_NAMESPACE_ERR"] = FAILURE(14)
678    errors["NS_ERROR_DOM_INVALID_ACCESS_ERR"] = FAILURE(15)
679    errors["NS_ERROR_DOM_TYPE_MISMATCH_ERR"] = FAILURE(17)
680    errors["NS_ERROR_DOM_SECURITY_ERR"] = FAILURE(18)
681    errors["NS_ERROR_DOM_NETWORK_ERR"] = FAILURE(19)
682    errors["NS_ERROR_DOM_ABORT_ERR"] = FAILURE(20)
683    errors["NS_ERROR_DOM_URL_MISMATCH_ERR"] = FAILURE(21)
684    errors["NS_ERROR_DOM_QUOTA_EXCEEDED_ERR"] = FAILURE(22)
685    errors["NS_ERROR_DOM_TIMEOUT_ERR"] = FAILURE(23)
686    errors["NS_ERROR_DOM_INVALID_NODE_TYPE_ERR"] = FAILURE(24)
687    errors["NS_ERROR_DOM_DATA_CLONE_ERR"] = FAILURE(25)
688    # StringEncoding API errors from http://wiki.whatwg.org/wiki/StringEncoding
689    errors["NS_ERROR_DOM_ENCODING_NOT_SUPPORTED_ERR"] = FAILURE(28)
690    # WebCrypto API errors from http://www.w3.org/TR/WebCryptoAPI/
691    errors["NS_ERROR_DOM_UNKNOWN_ERR"] = FAILURE(30)
692    errors["NS_ERROR_DOM_DATA_ERR"] = FAILURE(31)
693    errors["NS_ERROR_DOM_OPERATION_ERR"] = FAILURE(32)
694    # https://heycam.github.io/webidl/#notallowederror
695    errors["NS_ERROR_DOM_NOT_ALLOWED_ERR"] = FAILURE(33)
696    # DOM error codes defined by us
697    errors["NS_ERROR_DOM_SECMAN_ERR"] = FAILURE(1001)
698    errors["NS_ERROR_DOM_WRONG_TYPE_ERR"] = FAILURE(1002)
699    errors["NS_ERROR_DOM_NOT_OBJECT_ERR"] = FAILURE(1003)
700    errors["NS_ERROR_DOM_NOT_XPC_OBJECT_ERR"] = FAILURE(1004)
701    errors["NS_ERROR_DOM_NOT_NUMBER_ERR"] = FAILURE(1005)
702    errors["NS_ERROR_DOM_NOT_BOOLEAN_ERR"] = FAILURE(1006)
703    errors["NS_ERROR_DOM_NOT_FUNCTION_ERR"] = FAILURE(1007)
704    errors["NS_ERROR_DOM_TOO_FEW_PARAMETERS_ERR"] = FAILURE(1008)
705    errors["NS_ERROR_DOM_PROP_ACCESS_DENIED"] = FAILURE(1010)
706    errors["NS_ERROR_DOM_XPCONNECT_ACCESS_DENIED"] = FAILURE(1011)
707    errors["NS_ERROR_DOM_BAD_URI"] = FAILURE(1012)
708    errors["NS_ERROR_DOM_RETVAL_UNDEFINED"] = FAILURE(1013)
709
710    # A way to represent uncatchable exceptions
711    errors["NS_ERROR_UNCATCHABLE_EXCEPTION"] = FAILURE(1015)
712
713    errors["NS_ERROR_DOM_MALFORMED_URI"] = FAILURE(1016)
714    errors["NS_ERROR_DOM_INVALID_HEADER_NAME"] = FAILURE(1017)
715
716    errors["NS_ERROR_DOM_INVALID_STATE_XHR_HAS_INVALID_CONTEXT"] = FAILURE(1018)
717
718    # When manipulating the bytecode cache with the JS API, some transcoding
719    # errors, such as a different bytecode format can cause failures of the
720    # decoding process.
721    errors["NS_ERROR_DOM_JS_DECODING_ERROR"] = FAILURE(1026)
722
723    # Image decode errors.
724    errors["NS_ERROR_DOM_IMAGE_INACTIVE_DOCUMENT"] = FAILURE(1027)
725    errors["NS_ERROR_DOM_IMAGE_INVALID_REQUEST"] = FAILURE(1028)
726    errors["NS_ERROR_DOM_IMAGE_BROKEN"] = FAILURE(1029)
727
728    # Used to indicate that a resource with the Cross-Origin-Resource-Policy
729    # response header set failed the origin check.
730    # https://fetch.spec.whatwg.org/#cross-origin-resource-policy-header
731    errors["NS_ERROR_DOM_CORP_FAILED"] = FAILURE(1036)
732
733    # Used to indicate that a URI may not be loaded into a cross-origin
734    # context.
735    errors["NS_ERROR_DOM_BAD_CROSS_ORIGIN_URI"] = FAILURE(1037)
736
737    # The request failed because there are too many recursive iframes or
738    # objects being loaded.
739    errors["NS_ERROR_RECURSIVE_DOCUMENT_LOAD"] = FAILURE(1038)
740
741    # WebExtension content script may not load this URL.
742    errors["NS_ERROR_DOM_WEBEXT_CONTENT_SCRIPT_URI"] = FAILURE(1039)
743
744    # May be used to indicate when e.g. setting a property value didn't
745    # actually change the value, like for obj.foo = "bar"; obj.foo = "bar";
746    # the second assignment throws NS_SUCCESS_DOM_NO_OPERATION.
747    errors["NS_SUCCESS_DOM_NO_OPERATION"] = SUCCESS(1)
748
749    # A success code that indicates that evaluating a string of JS went
750    # just fine except it threw an exception. Only for legacy use by
751    # nsJSUtils.
752    errors["NS_SUCCESS_DOM_SCRIPT_EVALUATION_THREW"] = SUCCESS(2)
753
754    # A success code that indicates that evaluating a string of JS went
755    # just fine except it was killed by an uncatchable exception.
756    # Only for legacy use by nsJSUtils.
757    errors["NS_SUCCESS_DOM_SCRIPT_EVALUATION_THREW_UNCATCHABLE"] = SUCCESS(3)
758
759
760# =======================================================================
761# 15: NS_ERROR_MODULE_IMGLIB
762# =======================================================================
763with modules["IMGLIB"]:
764    errors["NS_IMAGELIB_ERROR_FAILURE"] = FAILURE(5)
765    errors["NS_IMAGELIB_ERROR_NO_DECODER"] = FAILURE(6)
766    errors["NS_IMAGELIB_ERROR_NOT_FINISHED"] = FAILURE(7)
767    errors["NS_IMAGELIB_ERROR_NO_ENCODER"] = FAILURE(9)
768
769
770# =======================================================================
771# 17: NS_ERROR_MODULE_EDITOR
772# =======================================================================
773with modules["EDITOR"]:
774    errors["NS_ERROR_EDITOR_DESTROYED"] = FAILURE(1)
775
776    # An error code that indicates that the DOM tree has been modified by
777    # web app or add-on while the editor modifying the tree.  However,
778    # this shouldn't be exposed to the web because the result should've
779    # been expected by the web app.
780    errors["NS_ERROR_EDITOR_UNEXPECTED_DOM_TREE"] = FAILURE(2)
781
782    # An error code that indicates that the edit action canceled by
783    # clipboard event listener or beforeinput event listener.  Note that
784    # don't make this as a success code since it's not check with NS_FAILED()
785    # and may keep handling the operation unexpectedly.
786    errors["NS_ERROR_EDITOR_ACTION_CANCELED"] = FAILURE(3)
787
788    # An error code that indicates that there is no editable selection ranges.
789    # E.g., Selection has no range, caret is in non-editable element,
790    # non-collapsed range crosses editing host boundaries.
791    errors["NS_ERROR_EDITOR_NO_EDITABLE_RANGE"] = FAILURE(4)
792
793    errors["NS_SUCCESS_EDITOR_ELEMENT_NOT_FOUND"] = SUCCESS(1)
794    errors["NS_SUCCESS_EDITOR_FOUND_TARGET"] = SUCCESS(2)
795
796
797# =======================================================================
798# 18: NS_ERROR_MODULE_XPCONNECT
799# =======================================================================
800with modules["XPCONNECT"]:
801    errors["NS_ERROR_XPC_NOT_ENOUGH_ARGS"] = FAILURE(1)
802    errors["NS_ERROR_XPC_NEED_OUT_OBJECT"] = FAILURE(2)
803    errors["NS_ERROR_XPC_CANT_SET_OUT_VAL"] = FAILURE(3)
804    errors["NS_ERROR_XPC_NATIVE_RETURNED_FAILURE"] = FAILURE(4)
805    errors["NS_ERROR_XPC_CANT_GET_INTERFACE_INFO"] = FAILURE(5)
806    errors["NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO"] = FAILURE(6)
807    errors["NS_ERROR_XPC_CANT_GET_METHOD_INFO"] = FAILURE(7)
808    errors["NS_ERROR_XPC_UNEXPECTED"] = FAILURE(8)
809    errors["NS_ERROR_XPC_BAD_CONVERT_JS"] = FAILURE(9)
810    errors["NS_ERROR_XPC_BAD_CONVERT_NATIVE"] = FAILURE(10)
811    errors["NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF"] = FAILURE(11)
812    errors["NS_ERROR_XPC_BAD_OP_ON_WN_PROTO"] = FAILURE(12)
813    errors["NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN"] = FAILURE(13)
814    errors["NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN"] = FAILURE(14)
815    errors["NS_ERROR_XPC_CANT_WATCH_WN_STATIC"] = FAILURE(15)
816    errors["NS_ERROR_XPC_CANT_EXPORT_WN_STATIC"] = FAILURE(16)
817    errors["NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED"] = FAILURE(17)
818    errors["NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED"] = FAILURE(18)
819    errors["NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE"] = FAILURE(19)
820    errors["NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE"] = FAILURE(20)
821    errors["NS_ERROR_XPC_CI_RETURNED_FAILURE"] = FAILURE(21)
822    errors["NS_ERROR_XPC_GS_RETURNED_FAILURE"] = FAILURE(22)
823    errors["NS_ERROR_XPC_BAD_CID"] = FAILURE(23)
824    errors["NS_ERROR_XPC_BAD_IID"] = FAILURE(24)
825    errors["NS_ERROR_XPC_CANT_CREATE_WN"] = FAILURE(25)
826    errors["NS_ERROR_XPC_JS_THREW_EXCEPTION"] = FAILURE(26)
827    errors["NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT"] = FAILURE(27)
828    errors["NS_ERROR_XPC_JS_THREW_JS_OBJECT"] = FAILURE(28)
829    errors["NS_ERROR_XPC_JS_THREW_NULL"] = FAILURE(29)
830    errors["NS_ERROR_XPC_JS_THREW_STRING"] = FAILURE(30)
831    errors["NS_ERROR_XPC_JS_THREW_NUMBER"] = FAILURE(31)
832    errors["NS_ERROR_XPC_JAVASCRIPT_ERROR"] = FAILURE(32)
833    errors["NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS"] = FAILURE(33)
834    errors["NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY"] = FAILURE(34)
835    errors["NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY"] = FAILURE(35)
836    errors["NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY"] = FAILURE(36)
837    errors["NS_ERROR_XPC_CANT_GET_ARRAY_INFO"] = FAILURE(37)
838    errors["NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING"] = FAILURE(38)
839    errors["NS_ERROR_XPC_SECURITY_MANAGER_VETO"] = FAILURE(39)
840    errors["NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE"] = FAILURE(40)
841    errors["NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS"] = FAILURE(41)
842    errors["NS_ERROR_XPC_CANT_SET_READ_ONLY_CONSTANT"] = FAILURE(43)
843    errors["NS_ERROR_XPC_CANT_SET_READ_ONLY_ATTRIBUTE"] = FAILURE(44)
844    errors["NS_ERROR_XPC_CANT_SET_READ_ONLY_METHOD"] = FAILURE(45)
845    errors["NS_ERROR_XPC_CANT_ADD_PROP_TO_WRAPPED_NATIVE"] = FAILURE(46)
846    errors["NS_ERROR_XPC_CALL_TO_SCRIPTABLE_FAILED"] = FAILURE(47)
847    errors["NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED"] = FAILURE(48)
848    errors["NS_ERROR_XPC_BAD_ID_STRING"] = FAILURE(49)
849    errors["NS_ERROR_XPC_BAD_INITIALIZER_NAME"] = FAILURE(50)
850    errors["NS_ERROR_XPC_HAS_BEEN_SHUTDOWN"] = FAILURE(51)
851    errors["NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN"] = FAILURE(52)
852    errors["NS_ERROR_XPC_BAD_CONVERT_JS_ZERO_ISNOT_NULL"] = FAILURE(53)
853    # any new errors here should have an associated entry added in xpc.msg
854
855
856# =======================================================================
857# 19: NS_ERROR_MODULE_PROFILE
858# =======================================================================
859with modules["PROFILE"]:
860    errors["NS_ERROR_LAUNCHED_CHILD_PROCESS"] = FAILURE(200)
861    errors["NS_ERROR_SHOW_PROFILE_MANAGER"] = FAILURE(201)
862    errors["NS_ERROR_DATABASE_CHANGED"] = FAILURE(202)
863
864
865# =======================================================================
866# 21: NS_ERROR_MODULE_SECURITY
867# =======================================================================
868with modules["SECURITY"]:
869    # Error code for XFO
870    errors["NS_ERROR_XFO_VIOLATION"] = FAILURE(96)
871
872    # Error code for CSP
873    errors["NS_ERROR_CSP_NAVIGATE_TO_VIOLATION"] = FAILURE(97)
874    errors["NS_ERROR_CSP_FORM_ACTION_VIOLATION"] = FAILURE(98)
875    errors["NS_ERROR_CSP_FRAME_ANCESTOR_VIOLATION"] = FAILURE(99)
876
877    # Error code for Sub-Resource Integrity
878    errors["NS_ERROR_SRI_CORRUPT"] = FAILURE(200)
879    errors["NS_ERROR_SRI_NOT_ELIGIBLE"] = FAILURE(201)
880    errors["NS_ERROR_SRI_UNEXPECTED_HASH_TYPE"] = FAILURE(202)
881    errors["NS_ERROR_SRI_IMPORT"] = FAILURE(203)
882
883    # CMS specific nsresult error codes.  Note: the numbers used here correspond
884    # to the values in nsICMSMessageErrors.idl.
885    errors["NS_ERROR_CMS_VERIFY_NOT_SIGNED"] = FAILURE(1024)
886    errors["NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO"] = FAILURE(1025)
887    errors["NS_ERROR_CMS_VERIFY_BAD_DIGEST"] = FAILURE(1026)
888    errors["NS_ERROR_CMS_VERIFY_NOCERT"] = FAILURE(1028)
889    errors["NS_ERROR_CMS_VERIFY_UNTRUSTED"] = FAILURE(1029)
890    errors["NS_ERROR_CMS_VERIFY_ERROR_UNVERIFIED"] = FAILURE(1031)
891    errors["NS_ERROR_CMS_VERIFY_ERROR_PROCESSING"] = FAILURE(1032)
892    errors["NS_ERROR_CMS_VERIFY_BAD_SIGNATURE"] = FAILURE(1033)
893    errors["NS_ERROR_CMS_VERIFY_DIGEST_MISMATCH"] = FAILURE(1034)
894    errors["NS_ERROR_CMS_VERIFY_UNKNOWN_ALGO"] = FAILURE(1035)
895    errors["NS_ERROR_CMS_VERIFY_UNSUPPORTED_ALGO"] = FAILURE(1036)
896    errors["NS_ERROR_CMS_VERIFY_MALFORMED_SIGNATURE"] = FAILURE(1037)
897    errors["NS_ERROR_CMS_VERIFY_HEADER_MISMATCH"] = FAILURE(1038)
898    errors["NS_ERROR_CMS_VERIFY_NOT_YET_ATTEMPTED"] = FAILURE(1039)
899    errors["NS_ERROR_CMS_VERIFY_CERT_WITHOUT_ADDRESS"] = FAILURE(1040)
900    errors["NS_ERROR_CMS_ENCRYPT_NO_BULK_ALG"] = FAILURE(1056)
901    errors["NS_ERROR_CMS_ENCRYPT_INCOMPLETE"] = FAILURE(1057)
902
903
904# =======================================================================
905# 24: NS_ERROR_MODULE_URILOADER
906# =======================================================================
907with modules["URILOADER"]:
908    errors["NS_ERROR_WONT_HANDLE_CONTENT"] = FAILURE(1)
909    # The load has been cancelled because it was found on a malware or phishing
910    # list.
911    errors["NS_ERROR_MALWARE_URI"] = FAILURE(30)
912    errors["NS_ERROR_PHISHING_URI"] = FAILURE(31)
913    errors["NS_ERROR_TRACKING_URI"] = FAILURE(34)
914    errors["NS_ERROR_UNWANTED_URI"] = FAILURE(35)
915    errors["NS_ERROR_BLOCKED_URI"] = FAILURE(37)
916    errors["NS_ERROR_HARMFUL_URI"] = FAILURE(38)
917    errors["NS_ERROR_FINGERPRINTING_URI"] = FAILURE(41)
918    errors["NS_ERROR_CRYPTOMINING_URI"] = FAILURE(42)
919    errors["NS_ERROR_SOCIALTRACKING_URI"] = FAILURE(43)
920    # Used when "Save Link As..." doesn't see the headers quickly enough to
921    # choose a filename.  See nsContextMenu.js.
922    errors["NS_ERROR_SAVE_LINK_AS_TIMEOUT"] = FAILURE(32)
923    # Used when the data from a channel has already been parsed and cached so it
924    # doesn't need to be reparsed from the original source.
925    errors["NS_ERROR_PARSED_DATA_CACHED"] = FAILURE(33)
926
927    # This success code indicates that a refresh header was found and
928    # successfully setup.
929    errors["NS_REFRESHURI_HEADER_FOUND"] = SUCCESS(2)
930
931
932# =======================================================================
933# 25: NS_ERROR_MODULE_CONTENT
934# =======================================================================
935with modules["CONTENT"]:
936    # Error codes for content policy blocking
937    errors["NS_ERROR_CONTENT_BLOCKED"] = FAILURE(6)
938    errors["NS_ERROR_CONTENT_BLOCKED_SHOW_ALT"] = FAILURE(7)
939    # Success variations of content policy blocking
940    errors["NS_PROPTABLE_PROP_NOT_THERE"] = FAILURE(10)
941    # Error code for when the content process crashed
942    errors["NS_ERROR_CONTENT_CRASHED"] = FAILURE(16)
943    # Error code for when a subframe process crashed
944    errors["NS_ERROR_FRAME_CRASHED"] = FAILURE(14)
945    # Error code for when the content process had a different buildID than the
946    # parent
947    errors["NS_ERROR_BUILDID_MISMATCH"] = FAILURE(17)
948
949    errors["NS_PROPTABLE_PROP_OVERWRITTEN"] = SUCCESS(11)
950    # Error codes for FindBroadcaster in XULBroadcastManager.cpp
951    errors["NS_FINDBROADCASTER_NOT_FOUND"] = SUCCESS(12)
952    errors["NS_FINDBROADCASTER_FOUND"] = SUCCESS(13)
953
954
955# =======================================================================
956# 27: NS_ERROR_MODULE_XSLT
957# =======================================================================
958with modules["XSLT"]:
959    errors["NS_ERROR_XPATH_INVALID_ARG"] = errors["NS_ERROR_INVALID_ARG"]
960
961    errors["NS_ERROR_XSLT_PARSE_FAILURE"] = FAILURE(1)
962    errors["NS_ERROR_XPATH_PARSE_FAILURE"] = FAILURE(2)
963    errors["NS_ERROR_XSLT_ALREADY_SET"] = FAILURE(3)
964    errors["NS_ERROR_XSLT_EXECUTION_FAILURE"] = FAILURE(4)
965    errors["NS_ERROR_XPATH_UNKNOWN_FUNCTION"] = FAILURE(5)
966    errors["NS_ERROR_XSLT_BAD_RECURSION"] = FAILURE(6)
967    errors["NS_ERROR_XSLT_BAD_VALUE"] = FAILURE(7)
968    errors["NS_ERROR_XSLT_NODESET_EXPECTED"] = FAILURE(8)
969    errors["NS_ERROR_XSLT_ABORTED"] = FAILURE(9)
970    errors["NS_ERROR_XSLT_NETWORK_ERROR"] = FAILURE(10)
971    errors["NS_ERROR_XSLT_WRONG_MIME_TYPE"] = FAILURE(11)
972    errors["NS_ERROR_XSLT_LOAD_RECURSION"] = FAILURE(12)
973    errors["NS_ERROR_XPATH_BAD_ARGUMENT_COUNT"] = FAILURE(13)
974    errors["NS_ERROR_XPATH_BAD_EXTENSION_FUNCTION"] = FAILURE(14)
975    errors["NS_ERROR_XPATH_PAREN_EXPECTED"] = FAILURE(15)
976    errors["NS_ERROR_XPATH_INVALID_AXIS"] = FAILURE(16)
977    errors["NS_ERROR_XPATH_NO_NODE_TYPE_TEST"] = FAILURE(17)
978    errors["NS_ERROR_XPATH_BRACKET_EXPECTED"] = FAILURE(18)
979    errors["NS_ERROR_XPATH_INVALID_VAR_NAME"] = FAILURE(19)
980    errors["NS_ERROR_XPATH_UNEXPECTED_END"] = FAILURE(20)
981    errors["NS_ERROR_XPATH_OPERATOR_EXPECTED"] = FAILURE(21)
982    errors["NS_ERROR_XPATH_UNCLOSED_LITERAL"] = FAILURE(22)
983    errors["NS_ERROR_XPATH_BAD_COLON"] = FAILURE(23)
984    errors["NS_ERROR_XPATH_BAD_BANG"] = FAILURE(24)
985    errors["NS_ERROR_XPATH_ILLEGAL_CHAR"] = FAILURE(25)
986    errors["NS_ERROR_XPATH_BINARY_EXPECTED"] = FAILURE(26)
987    errors["NS_ERROR_XSLT_LOAD_BLOCKED_ERROR"] = FAILURE(27)
988    errors["NS_ERROR_XPATH_INVALID_EXPRESSION_EVALUATED"] = FAILURE(28)
989    errors["NS_ERROR_XPATH_UNBALANCED_CURLY_BRACE"] = FAILURE(29)
990    errors["NS_ERROR_XSLT_BAD_NODE_NAME"] = FAILURE(30)
991    errors["NS_ERROR_XSLT_VAR_ALREADY_SET"] = FAILURE(31)
992    errors["NS_ERROR_XSLT_CALL_TO_KEY_NOT_ALLOWED"] = FAILURE(32)
993
994    errors["NS_XSLT_GET_NEW_HANDLER"] = SUCCESS(1)
995
996
997# =======================================================================
998# 28: NS_ERROR_MODULE_IPC
999# =======================================================================
1000with modules["IPC"]:
1001    # Initial creation of a Transport object failed internally for unknown reasons.
1002    errors["NS_ERROR_TRANSPORT_INIT"] = FAILURE(1)
1003    # Generic error related to duplicating handle failures.
1004    errors["NS_ERROR_DUPLICATE_HANDLE"] = FAILURE(2)
1005    # Bridging: failure trying to open the connection to the parent
1006    errors["NS_ERROR_BRIDGE_OPEN_PARENT"] = FAILURE(3)
1007    # Bridging: failure trying to open the connection to the child
1008    errors["NS_ERROR_BRIDGE_OPEN_CHILD"] = FAILURE(4)
1009
1010
1011# =======================================================================
1012# 30: NS_ERROR_MODULE_STORAGE
1013# =======================================================================
1014with modules["STORAGE"]:
1015    # To add additional errors to Storage, please append entries to the bottom
1016    # of the list in the following format:
1017    #   NS_ERROR_STORAGE_YOUR_ERR,  FAILURE(n)
1018    # where n is the next unique positive integer.  You must also add an entry
1019    # to js/xpconnect/src/xpc.msg under the code block beginning with the
1020    # comment 'storage related codes (from mozStorage.h)', in the following
1021    # format: 'XPC_MSG_DEF(NS_ERROR_STORAGE_YOUR_ERR, "brief description of your
1022    # error")'
1023    errors["NS_ERROR_STORAGE_BUSY"] = FAILURE(1)
1024    errors["NS_ERROR_STORAGE_IOERR"] = FAILURE(2)
1025    errors["NS_ERROR_STORAGE_CONSTRAINT"] = FAILURE(3)
1026
1027
1028# =======================================================================
1029# 32: NS_ERROR_MODULE_DOM_FILE
1030# =======================================================================
1031with modules["DOM_FILE"]:
1032    errors["NS_ERROR_DOM_FILE_NOT_FOUND_ERR"] = FAILURE(0)
1033    errors["NS_ERROR_DOM_FILE_NOT_READABLE_ERR"] = FAILURE(1)
1034
1035
1036# =======================================================================
1037# 33: NS_ERROR_MODULE_DOM_INDEXEDDB
1038# =======================================================================
1039with modules["DOM_INDEXEDDB"]:
1040    # IndexedDB error codes http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html
1041    errors["NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR"] = FAILURE(1)
1042    errors["NS_ERROR_DOM_INDEXEDDB_NOT_FOUND_ERR"] = FAILURE(3)
1043    errors["NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR"] = FAILURE(4)
1044    errors["NS_ERROR_DOM_INDEXEDDB_DATA_ERR"] = FAILURE(5)
1045    errors["NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR"] = FAILURE(6)
1046    errors["NS_ERROR_DOM_INDEXEDDB_TRANSACTION_INACTIVE_ERR"] = FAILURE(7)
1047    errors["NS_ERROR_DOM_INDEXEDDB_ABORT_ERR"] = FAILURE(8)
1048    errors["NS_ERROR_DOM_INDEXEDDB_READ_ONLY_ERR"] = FAILURE(9)
1049    errors["NS_ERROR_DOM_INDEXEDDB_TIMEOUT_ERR"] = FAILURE(10)
1050    errors["NS_ERROR_DOM_INDEXEDDB_QUOTA_ERR"] = FAILURE(11)
1051    errors["NS_ERROR_DOM_INDEXEDDB_VERSION_ERR"] = FAILURE(12)
1052    errors["NS_ERROR_DOM_INDEXEDDB_RECOVERABLE_ERR"] = FAILURE(1001)
1053    errors["NS_ERROR_DOM_INDEXEDDB_KEY_ERR"] = FAILURE(1002)
1054    errors["NS_ERROR_DOM_INDEXEDDB_RENAME_OBJECT_STORE_ERR"] = FAILURE(1003)
1055    errors["NS_ERROR_DOM_INDEXEDDB_RENAME_INDEX_ERR"] = FAILURE(1004)
1056
1057
1058# =======================================================================
1059# 34: NS_ERROR_MODULE_DOM_FILEHANDLE
1060# =======================================================================
1061with modules["DOM_FILEHANDLE"]:
1062    errors["NS_ERROR_DOM_FILEHANDLE_UNKNOWN_ERR"] = FAILURE(1)
1063    errors["NS_ERROR_DOM_FILEHANDLE_NOT_ALLOWED_ERR"] = FAILURE(2)
1064    errors["NS_ERROR_DOM_FILEHANDLE_INACTIVE_ERR"] = FAILURE(3)
1065    errors["NS_ERROR_DOM_FILEHANDLE_ABORT_ERR"] = FAILURE(4)
1066    errors["NS_ERROR_DOM_FILEHANDLE_READ_ONLY_ERR"] = FAILURE(5)
1067    errors["NS_ERROR_DOM_FILEHANDLE_QUOTA_ERR"] = FAILURE(6)
1068
1069
1070# =======================================================================
1071# 35: NS_ERROR_MODULE_SIGNED_JAR
1072# =======================================================================
1073with modules["SIGNED_JAR"]:
1074    errors["NS_ERROR_SIGNED_JAR_NOT_SIGNED"] = FAILURE(1)
1075    errors["NS_ERROR_SIGNED_JAR_MODIFIED_ENTRY"] = FAILURE(2)
1076    errors["NS_ERROR_SIGNED_JAR_UNSIGNED_ENTRY"] = FAILURE(3)
1077    errors["NS_ERROR_SIGNED_JAR_ENTRY_MISSING"] = FAILURE(4)
1078    errors["NS_ERROR_SIGNED_JAR_WRONG_SIGNATURE"] = FAILURE(5)
1079    errors["NS_ERROR_SIGNED_JAR_ENTRY_TOO_LARGE"] = FAILURE(6)
1080    errors["NS_ERROR_SIGNED_JAR_ENTRY_INVALID"] = FAILURE(7)
1081    errors["NS_ERROR_SIGNED_JAR_MANIFEST_INVALID"] = FAILURE(8)
1082
1083
1084# =======================================================================
1085# 36: NS_ERROR_MODULE_DOM_FILESYSTEM
1086# =======================================================================
1087with modules["DOM_FILESYSTEM"]:
1088    errors["NS_ERROR_DOM_FILESYSTEM_INVALID_PATH_ERR"] = FAILURE(1)
1089    errors["NS_ERROR_DOM_FILESYSTEM_INVALID_MODIFICATION_ERR"] = FAILURE(2)
1090    errors["NS_ERROR_DOM_FILESYSTEM_NO_MODIFICATION_ALLOWED_ERR"] = FAILURE(3)
1091    errors["NS_ERROR_DOM_FILESYSTEM_PATH_EXISTS_ERR"] = FAILURE(4)
1092    errors["NS_ERROR_DOM_FILESYSTEM_TYPE_MISMATCH_ERR"] = FAILURE(5)
1093    errors["NS_ERROR_DOM_FILESYSTEM_UNKNOWN_ERR"] = FAILURE(6)
1094
1095
1096# =======================================================================
1097# 38: NS_ERROR_MODULE_SIGNED_APP
1098# =======================================================================
1099with modules["SIGNED_APP"]:
1100    errors["NS_ERROR_SIGNED_APP_MANIFEST_INVALID"] = FAILURE(1)
1101
1102
1103# =======================================================================
1104# 40: NS_ERROR_MODULE_DOM_PUSH
1105# =======================================================================
1106with modules["DOM_PUSH"]:
1107    errors["NS_ERROR_DOM_PUSH_INVALID_REGISTRATION_ERR"] = FAILURE(1)
1108    errors["NS_ERROR_DOM_PUSH_DENIED_ERR"] = FAILURE(2)
1109    errors["NS_ERROR_DOM_PUSH_ABORT_ERR"] = FAILURE(3)
1110    errors["NS_ERROR_DOM_PUSH_SERVICE_UNREACHABLE"] = FAILURE(4)
1111    errors["NS_ERROR_DOM_PUSH_INVALID_KEY_ERR"] = FAILURE(5)
1112    errors["NS_ERROR_DOM_PUSH_MISMATCHED_KEY_ERR"] = FAILURE(6)
1113    errors["NS_ERROR_DOM_PUSH_GCM_DISABLED"] = FAILURE(7)
1114
1115
1116# =======================================================================
1117# 41: NS_ERROR_MODULE_DOM_MEDIA
1118# =======================================================================
1119with modules["DOM_MEDIA"]:
1120    # HTMLMediaElement API errors from
1121    # https://html.spec.whatwg.org/multipage/embedded-content.html#media-elements
1122    errors["NS_ERROR_DOM_MEDIA_ABORT_ERR"] = FAILURE(1)
1123    errors["NS_ERROR_DOM_MEDIA_NOT_ALLOWED_ERR"] = FAILURE(2)
1124    errors["NS_ERROR_DOM_MEDIA_NOT_SUPPORTED_ERR"] = FAILURE(3)
1125
1126    # HTMLMediaElement internal decoding error
1127    errors["NS_ERROR_DOM_MEDIA_DECODE_ERR"] = FAILURE(4)
1128    errors["NS_ERROR_DOM_MEDIA_FATAL_ERR"] = FAILURE(5)
1129    errors["NS_ERROR_DOM_MEDIA_METADATA_ERR"] = FAILURE(6)
1130    errors["NS_ERROR_DOM_MEDIA_OVERFLOW_ERR"] = FAILURE(7)
1131    errors["NS_ERROR_DOM_MEDIA_END_OF_STREAM"] = FAILURE(8)
1132    errors["NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA"] = FAILURE(9)
1133    errors["NS_ERROR_DOM_MEDIA_CANCELED"] = FAILURE(10)
1134    errors["NS_ERROR_DOM_MEDIA_MEDIASINK_ERR"] = FAILURE(11)
1135    errors["NS_ERROR_DOM_MEDIA_DEMUXER_ERR"] = FAILURE(12)
1136    errors["NS_ERROR_DOM_MEDIA_CDM_ERR"] = FAILURE(13)
1137    errors["NS_ERROR_DOM_MEDIA_NEED_NEW_DECODER"] = FAILURE(14)
1138    errors["NS_ERROR_DOM_MEDIA_INITIALIZING_DECODER"] = FAILURE(15)
1139
1140    # Internal platform-related errors
1141    errors["NS_ERROR_DOM_MEDIA_CUBEB_INITIALIZATION_ERR"] = FAILURE(101)
1142
1143
1144# =======================================================================
1145# 42: NS_ERROR_MODULE_URL_CLASSIFIER
1146# =======================================================================
1147with modules["URL_CLASSIFIER"]:
1148    # Errors during list updates
1149    errors["NS_ERROR_UC_UPDATE_UNKNOWN"] = FAILURE(1)
1150    errors["NS_ERROR_UC_UPDATE_DUPLICATE_PREFIX"] = FAILURE(2)
1151    errors["NS_ERROR_UC_UPDATE_INFINITE_LOOP"] = FAILURE(3)
1152    errors["NS_ERROR_UC_UPDATE_WRONG_REMOVAL_INDICES"] = FAILURE(4)
1153    errors["NS_ERROR_UC_UPDATE_CHECKSUM_MISMATCH"] = FAILURE(5)
1154    errors["NS_ERROR_UC_UPDATE_MISSING_CHECKSUM"] = FAILURE(6)
1155    errors["NS_ERROR_UC_UPDATE_SHUTDOWNING"] = FAILURE(7)
1156    errors["NS_ERROR_UC_UPDATE_TABLE_NOT_FOUND"] = FAILURE(8)
1157    errors["NS_ERROR_UC_UPDATE_BUILD_PREFIX_FAILURE"] = FAILURE(9)
1158    errors["NS_ERROR_UC_UPDATE_FAIL_TO_WRITE_DISK"] = FAILURE(10)
1159    errors["NS_ERROR_UC_UPDATE_UNEXPECTED_VERSION"] = FAILURE(11)
1160
1161    # Specific errors while parsing pver2/pver4 responses
1162    errors["NS_ERROR_UC_PARSER_MISSING_PARAM"] = FAILURE(12)
1163    errors["NS_ERROR_UC_PARSER_DECODE_FAILURE"] = FAILURE(13)
1164    errors["NS_ERROR_UC_PARSER_UNKNOWN_THREAT"] = FAILURE(14)
1165    errors["NS_ERROR_UC_PARSER_MISSING_VALUE"] = FAILURE(15)
1166
1167
1168# =======================================================================
1169# 43: NS_ERROR_MODULE_ERRORRESULT
1170# =======================================================================
1171with modules["ERRORRESULT"]:
1172    # Represents a JS Value being thrown as an exception.
1173    errors["NS_ERROR_INTERNAL_ERRORRESULT_JS_EXCEPTION"] = FAILURE(1)
1174    # Used to indicate that we want to throw a DOMException.
1175    errors["NS_ERROR_INTERNAL_ERRORRESULT_DOMEXCEPTION"] = FAILURE(2)
1176    # Used to indicate that an exception is already pending on the JSContext.
1177    errors["NS_ERROR_INTERNAL_ERRORRESULT_EXCEPTION_ON_JSCONTEXT"] = FAILURE(3)
1178    # Used to indicate that we want to throw a TypeError.
1179    errors["NS_ERROR_INTERNAL_ERRORRESULT_TYPEERROR"] = FAILURE(4)
1180    # Used to indicate that we want to throw a RangeError.
1181    errors["NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR"] = FAILURE(5)
1182
1183
1184# =======================================================================
1185# 51: NS_ERROR_MODULE_GENERAL
1186# =======================================================================
1187with modules["GENERAL"]:
1188    # Error code used internally by the incremental downloader to cancel the
1189    # network channel when the download is already complete.
1190    errors["NS_ERROR_DOWNLOAD_COMPLETE"] = FAILURE(1)
1191    # Error code used internally by the incremental downloader to cancel the
1192    # network channel when the response to a range request is 200 instead of
1193    # 206.
1194    errors["NS_ERROR_DOWNLOAD_NOT_PARTIAL"] = FAILURE(2)
1195    errors["NS_ERROR_UNORM_MOREOUTPUT"] = FAILURE(33)
1196
1197    errors["NS_ERROR_DOCSHELL_REQUEST_REJECTED"] = FAILURE(1001)
1198    # This is needed for displaying an error message when navigation is
1199    # attempted on a document when printing The value arbitrary as long as it
1200    # doesn't conflict with any of the other values in the errors in
1201    # DisplayLoadError
1202    errors["NS_ERROR_DOCUMENT_IS_PRINTMODE"] = FAILURE(2001)
1203
1204    errors["NS_SUCCESS_DONT_FIXUP"] = SUCCESS(1)
1205    # This success code may be returned by nsIAppStartup::Run to indicate that
1206    # the application should be restarted.  This condition corresponds to the
1207    # case in which nsIAppStartup::Quit was called with the eRestart flag.
1208    errors["NS_SUCCESS_RESTART_APP"] = SUCCESS(1)
1209
1210    # a11y
1211    # raised when current pivot's position is needed but it's not in the tree
1212    errors["NS_ERROR_NOT_IN_TREE"] = FAILURE(38)
1213
1214    # see nsTextEquivUtils
1215    errors["NS_OK_NO_NAME_CLAUSE_HANDLED"] = SUCCESS(34)
1216
1217    # Error code used to indicate that functionality has been blocked by the
1218    # Policy Manager
1219    errors["NS_ERROR_BLOCKED_BY_POLICY"] = FAILURE(3)
1220
1221
1222# ============================================================================
1223# Write out the resulting module declarations to C++ and rust files
1224# ============================================================================
1225
1226
1227def error_list_h(output):
1228    output.write(
1229        """
1230/* THIS FILE IS GENERATED BY ErrorList.py - DO NOT EDIT */
1231
1232#ifndef ErrorList_h__
1233#define ErrorList_h__
1234
1235#include <stdint.h>
1236
1237"""
1238    )
1239
1240    output.write("#define NS_ERROR_MODULE_BASE_OFFSET {}\n".format(MODULE_BASE_OFFSET))
1241
1242    for mod, val in modules.items():
1243        output.write("#define NS_ERROR_MODULE_{} {}\n".format(mod, val.num))
1244
1245    items = []
1246    for error, val in errors.items():
1247        items.append("  {} = 0x{:X}".format(error, val))
1248    output.write(
1249        """
1250enum class nsresult : uint32_t
1251{{
1252{}
1253}};
1254
1255""".format(
1256            ",\n".join(items)
1257        )
1258    )
1259
1260    items = []
1261    for error, val in errors.items():
1262        items.append("  {0} = nsresult::{0}".format(error))
1263
1264    output.write(
1265        """
1266const nsresult
1267{}
1268;
1269
1270#endif // ErrorList_h__
1271""".format(
1272            ",\n".join(items)
1273        )
1274    )
1275
1276
1277def error_names_internal_h(output):
1278    """Generate ErrorNamesInternal.h, which is a header file declaring one
1279    function, const char* GetErrorNameInternal(nsresult). This method is not
1280    intended to be used by consumer code, which should instead call
1281    GetErrorName in ErrorNames.h."""
1282
1283    output.write(
1284        """
1285/* THIS FILE IS GENERATED BY ErrorList.py - DO NOT EDIT */
1286
1287#ifndef ErrorNamesInternal_h__
1288#define ErrorNamesInternal_h__
1289
1290#include "ErrorNames.h"
1291
1292namespace {
1293
1294const char*
1295GetErrorNameInternal(nsresult rv)
1296{
1297  switch (rv) {
1298"""
1299    )
1300
1301    # NOTE: Making sure we don't write out duplicate values is important as
1302    # we're using a switch statement to implement this.
1303    seen = set()
1304    for error, val in errors.items():
1305        if val not in seen:
1306            output.write('  case nsresult::{0}: return "{0}";\n'.format(error))
1307        seen.add(val)
1308
1309    output.write(
1310        """
1311  default: return nullptr;
1312  }
1313} // GetErrorNameInternal
1314
1315} // namespace
1316
1317#endif // ErrorNamesInternal_h__
1318"""
1319    )
1320
1321
1322def error_list_rs(output):
1323    output.write(
1324        """
1325/* THIS FILE IS GENERATED BY ErrorList.py - DO NOT EDIT */
1326
1327use super::nsresult;
1328
1329"""
1330    )
1331
1332    output.write(
1333        "pub const NS_ERROR_MODULE_BASE_OFFSET: nsresult = nsresult({});\n".format(
1334            MODULE_BASE_OFFSET
1335        )
1336    )
1337
1338    for mod, val in modules.items():
1339        output.write(
1340            "pub const NS_ERROR_MODULE_{}: nsresult = nsresult({});\n".format(
1341                mod, val.num
1342            )
1343        )
1344
1345    for error, val in errors.items():
1346        output.write("pub const {}: nsresult = nsresult(0x{:X});\n".format(error, val))
1347