Bug 1842509 - Remove media.webvtt.regions.enabled pref r=alwu,webidl,smaug,peterv
[gecko.git] / dom / bindings / Bindings.conf
bloba9d9811d90afa2afe7b1044ba48695844ca90338
1 # -*- Mode:Python; tab-width:8; indent-tabs-mode:nil -*- */
2 # vim: set ts=8 sts=4 et sw=4 tw=80: */
3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 # DOM Bindings Configuration.
9 # The WebIDL interfaces are defined in dom/webidl. For interfaces requiring
10 # special handling, there are corresponding entries in the configuration table
11 # below. The configuration table maps each interface name to a |descriptor|.
13 # Valid fields for all descriptors:
14 #   * nativeType - The native type (concrete class or XPCOM interface) that
15 #                  instances of this interface will unwrap to.  If not
16 #                  specified, defaults to 'nsIDOM' followed by the interface
17 #                  name for external interfaces and
18 #                  'mozilla::dom::InterfaceName' for everything else.
19 #   * headerFile - The file in which the nativeType is declared (defaults
20 #                  to an educated guess).
21 #   * concrete - Indicates whether there exist JS objects with this interface as
22 #                their primary interface (and hence whose prototype is this
23 #                interface's prototype object).  Always False for callback
24 #                interfaces.  Defaults to True for leaf interfaces and
25 #                interfaces with constructors, false otherwise.
26 #   * notflattened - The native type does not have nsIClassInfo, so when
27 #                    wrapping it the right IID needs to be passed in.
28 #                    Only relevant for callback interfaces.
29 #   * register - True if this binding should be registered.  Defaults to true.
30 #   * wrapperCache: True if this object is a wrapper cache.  Objects that are
31 #                   not can only be returned from a limited set of methods,
32 #                   cannot be prefable, and must ensure that they disallow
33 #                   XPConnect wrapping.  Always false for callback interfaces.
34 #                   Defaults to true for non-callback descriptors.
35 #   * implicitJSContext - Llist of names of attributes and methods specified in
36 #                         the .webidl file that require a JSContext as the first
37 #                         argument.
39 # The value for an interface is a dictionary which specifies the
40 # descriptor to use when generating that interface's binding.
42 DOMInterfaces = {
44 'AbortSignal': {
45     'implicitJSContext': [ 'throwIfAborted' ],
46     'concrete': True,
49 'AnonymousContent': {
50     'wrapperCache': False
53 'ArchiveReader': {
54     'nativeType': 'mozilla::dom::archivereader::ArchiveReader',
57 'ArchiveRequest': {
58     'nativeType': 'mozilla::dom::archivereader::ArchiveRequest',
61 'AudioBuffer': {
62     'implicitJSContext': [ 'copyToChannel' ],
65 'AudioBufferSourceNode': {
66     'implicitJSContext': [ 'buffer' ],
69 'AudioWorklet': {
70     'nativeType': 'mozilla::dom::Worklet',
73 'AudioWorkletGlobalScope': {
74     'implicitJSContext': [ 'registerProcessor' ],
77 'BarProp': {
78     'headerFile': 'mozilla/dom/BarProps.h',
81 'BaseAudioContext': {
82     'nativeType': 'mozilla::dom::AudioContext',
85 'BatteryManager': {
86     'nativeType': 'mozilla::dom::battery::BatteryManager',
87     'headerFile': 'BatteryManager.h'
90 'Blob': {
91     'implicitJSContext': [ 'stream' ],
94 'BrowsingContext': {
95     'concrete': True,
98 'Cache': {
99     'implicitJSContext': [ 'add', 'addAll', 'match', 'matchAll', 'put',
100                            'delete', 'keys' ],
101     'nativeType': 'mozilla::dom::cache::Cache',
104 'CacheStorage': {
105     'implicitJSContext': [ 'match' ],
106     'nativeType': 'mozilla::dom::cache::CacheStorage',
109 'CanvasRenderingContext2D': {
110     'implicitJSContext': [
111         'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
112     ],
115 'CaretPosition' : {
116     'nativeType': 'nsDOMCaretPosition',
119 'ChannelWrapper': {
120     'nativeType': 'mozilla::extensions::ChannelWrapper',
123 'Client' : {
124     'concrete': True,
127 'ClonedErrorHolder': {
128     'wrapperCache': False
131 'console': {
132     'nativeType': 'mozilla::dom::Console',
135 'ConsoleInstance': {
136     'implicitJSContext': ['clear', 'count', 'countReset', 'groupEnd', 'time', 'timeEnd'],
139 'ConvolverNode': {
140     'implicitJSContext': [ 'buffer' ],
143 'Credential' : {
144     'concrete': True,
147 'Crypto' : {
148     'headerFile': 'Crypto.h'
151 'CSS2Properties': {
152     'nativeType': 'nsDOMCSSDeclaration'
155 'CSSConditionRule': {
156     'nativeType': 'mozilla::css::ConditionRule',
157     'headerFile': 'mozilla/css/GroupRule.h',
160 'CSSGroupingRule': {
161     'nativeType': 'mozilla::css::GroupRule',
164 'CSSLexer': {
165     'wrapperCache': False
168 'CSSRule': {
169     'nativeType': 'mozilla::css::Rule'
172 'CSSStyleDeclaration': {
173     'nativeType': 'nsICSSDeclaration',
174     # Concrete because of the font-face mess.
175     'concrete': True,
178 'CSSStyleSheet': {
179     'nativeType': 'mozilla::StyleSheet',
182 'CustomElementRegistry': {
183     'implicitJSContext': ['define', 'getName'],
186 'DebuggerNotification': {
187     'concrete': True,
189 'CallbackDebuggerNotification': {
190     'concrete': True,
193 'DedicatedWorkerGlobalScope': {
194     'headerFile': 'mozilla/dom/WorkerScope.h',
197 'DeviceAcceleration': {
198     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
201 'DeviceRotationRate': {
202     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
205 'DominatorTree': {
206     'nativeType': 'mozilla::devtools::DominatorTree'
209 'DOMException': {
210     'implicitJSContext': [ 'filename', 'lineNumber', 'stack' ],
213 'DOMMatrixReadOnly': {
214     'headerFile': 'mozilla/dom/DOMMatrix.h',
217 'DOMPointReadOnly': {
218     'headerFile': 'mozilla/dom/DOMPoint.h',
221 'DOMRectList': {
222     'headerFile': 'mozilla/dom/DOMRect.h',
225 'DOMRectReadOnly': {
226     'headerFile': 'mozilla/dom/DOMRect.h',
229 'DOMRequest': {
230     'concrete': True,
233 'DOMStringMap': {
234     'nativeType': 'nsDOMStringMap'
237 'DOMTokenList': {
238     'nativeType': 'nsDOMTokenList',
241 'Element': {
242     'concrete': True,
245 'Event': {
246     'implicitJSContext': [ 'preventDefault' ],
249 'EventTarget': {
250     'jsImplParent': 'mozilla::DOMEventTargetHelper',
253 'Exception': {
254     'headerFile': 'mozilla/dom/DOMException.h',
255     'implicitJSContext': [ '__stringifier', 'filename', 'lineNumber', 'stack' ],
258 'ExtendableEvent': {
259     'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
260     'implicitJSContext': [ 'waitUntil' ],
263 'ExtendableMessageEvent': {
264     'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
267 'FetchEvent': {
268     'headerFile': 'ServiceWorkerEvents.h',
269     'implicitJSContext': [ 'respondWith' ],
272 'FileReader': {
273     'implicitJSContext': [ 'readAsArrayBuffer' ],
276 'FileReaderSync': {
277     'wrapperCache': False,
280 'FileSystemEntry': {
281     'concrete': True,
284 'FileSystemHandle': {
285     'concrete': True,
288 'FluentBundle': {
289     'nativeType': 'mozilla::intl::FluentBundle',
292 'FluentBundleAsyncIterator': {
293     'headerFile': 'mozilla/intl/L10nRegistry.h',
294     'nativeType': 'mozilla::intl::FluentBundleAsyncIterator',
297 'FluentBundleIterator': {
298     'headerFile': 'mozilla/intl/L10nRegistry.h',
299     'nativeType': 'mozilla::intl::FluentBundleIterator',
302 'FluentPattern': {
303     'headerFile': 'mozilla/intl/FluentBundle.h',
304     'nativeType': 'mozilla::intl::FluentPattern',
307 'FluentResource': {
308     'headerFile': 'mozilla/intl/FluentResource.h',
309     'nativeType': 'mozilla::intl::FluentResource',
312 'FontFaceSet': {
313     'implicitJSContext': [ 'load' ],
316 'FontFaceSetIterator': {
317     'wrapperCache': False,
320 'FrameLoader': {
321     'nativeType': 'nsFrameLoader',
324 'FuzzingFunctions': {
325     # The codegen is dumb, and doesn't understand that this interface is only a
326     # collection of static methods, so we have this `concrete: False` hack.
327     'concrete': False,
328     'headerFile': 'mozilla/dom/FuzzingFunctions.h',
331 'HeapSnapshot': {
332     'nativeType': 'mozilla::devtools::HeapSnapshot'
335 'History': {
336     'headerFile': 'nsHistory.h',
337     'nativeType': 'nsHistory'
340 'HTMLBaseElement': {
341     'nativeType': 'mozilla::dom::HTMLSharedElement'
344 'HTMLCollection': {
345     'nativeType': 'nsIHTMLCollection',
346     # nsContentList.h pulls in nsIHTMLCollection.h
347     'headerFile': 'nsContentList.h',
348     'concrete': True,
351 'HTMLDirectoryElement': {
352     'nativeType': 'mozilla::dom::HTMLSharedElement'
355 'HTMLDListElement': {
356     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
359 'HTMLDocument': {
360     'nativeType': 'nsHTMLDocument',
361     'concrete': True,
364 'HTMLElement': {
365     'nativeType': 'nsGenericHTMLElement',
368 'HTMLHeadElement': {
369     'nativeType': 'mozilla::dom::HTMLSharedElement'
372 'HTMLHtmlElement': {
373     'nativeType': 'mozilla::dom::HTMLSharedElement'
376 'HTMLOListElement': {
377     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
380 'HTMLParamElement': {
381     'nativeType': 'mozilla::dom::HTMLSharedElement'
384 'HTMLQuoteElement': {
385     'nativeType': 'mozilla::dom::HTMLSharedElement'
388 'HTMLUListElement': {
389     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
392 'IDBCursor': {
393     'implicitJSContext': [ 'delete' ],
394     'concrete': True,
397 'IDBCursorWithValue': {
398     'nativeType': 'mozilla::dom::IDBCursor',
401 'IDBDatabase': {
402     'implicitJSContext': [ 'transaction' ],
405 'IDBFactory': {
406     'implicitJSContext': [ 'open', 'deleteDatabase', 'openForPrincipal',
407                            'deleteForPrincipal' ],
410 'IDBKeyRange': {
411     'wrapperCache': False,
412     'concrete': True,
415 'IDBLocaleAwareKeyRange': {
416     'headerFile': 'IDBKeyRange.h',
417     'wrapperCache': False,
420 'IDBObjectStore': {
421     'implicitJSContext': [ 'clear' ],
424 'IDBOpenDBRequest': {
425     'headerFile': 'IDBRequest.h'
428 'IDBRequest': {
429     'concrete': True,
432 'IDBVersionChangeEvent': {
433     'headerFile': 'IDBEvents.h',
436 'ImageData': {
437     'wrapperCache': False,
440 'InputStream': {
441     'nativeType': 'nsIInputStream',
442     'notflattened': True
445 'InspectorFontFace': {
446     'wrapperCache': False,
449 'IntersectionObserver': {
450     'nativeType': 'mozilla::dom::DOMIntersectionObserver',
453 'IntersectionObserverEntry': {
454     'nativeType': 'mozilla::dom::DOMIntersectionObserverEntry',
455     'headerFile': 'DOMIntersectionObserver.h',
458 'KeyEvent' : {
459     'concrete': False,
462 'L10nFileSource': {
463     'headerFile': 'mozilla/intl/FileSource.h',
464     'nativeType': 'mozilla::intl::L10nFileSource',
467 'L10nRegistry': {
468     'nativeType': 'mozilla::intl::L10nRegistry',
471 'LegacyMozTCPSocket': {
472     'headerFile': 'TCPSocket.h',
473     'wrapperCache': False,
476 'Localization': {
477     'nativeType': 'mozilla::intl::Localization',
480 'MatchGlob': {
481     'nativeType': 'mozilla::extensions::MatchGlob',
484 'MatchPattern': {
485     'nativeType': 'mozilla::extensions::MatchPattern',
488 'MatchPatternSet': {
489     'headerFile': 'mozilla/extensions/MatchPattern.h',
490     'nativeType': 'mozilla::extensions::MatchPatternSet',
493 'MediaCapabilitiesInfo' : {
494     'wrapperCache': False,
497 'MediaStream': {
498     'headerFile': 'DOMMediaStream.h',
499     'nativeType': 'mozilla::DOMMediaStream'
502 'MediaStreamList': {
503     'headerFile': 'MediaStreamList.h',
506 'MediaRecorder': {
507     'headerFile': 'MediaRecorder.h',
510 'MimeType': {
511     'headerFile' : 'nsMimeTypeArray.h',
512     'nativeType': 'nsMimeType',
515 'MimeTypeArray': {
516     'nativeType': 'nsMimeTypeArray',
519 'MozCanvasPrintState': {
520     'headerFile': 'mozilla/dom/HTMLCanvasElement.h',
521     'nativeType': 'mozilla::dom::HTMLCanvasPrintState',
524 'MozChannel': {
525     'nativeType': 'nsIChannel',
526     'notflattened': True
529 'MozDocumentMatcher': {
530     'nativeType': 'mozilla::extensions::MozDocumentMatcher',
531     'headerFile': 'mozilla/extensions/WebExtensionContentScript.h',
534 'MozDocumentObserver': {
535     'nativeType': 'mozilla::extensions::DocumentObserver',
538 'MozSharedMap': {
539     'nativeType': 'mozilla::dom::ipc::SharedMap',
540     'concrete': True,
543 'MozWritableSharedMap': {
544     'headerFile': 'mozilla/dom/ipc/SharedMap.h',
545     'nativeType': 'mozilla::dom::ipc::WritableSharedMap',
548 'MozSharedMapChangeEvent': {
549     'nativeType': 'mozilla::dom::ipc::SharedMapChangeEvent',
552 'MozStorageAsyncStatementParams': {
553     'headerFile': 'mozilla/storage/mozStorageAsyncStatementParams.h',
554     'nativeType': 'mozilla::storage::AsyncStatementParams',
557 'MozStorageStatementParams': {
558     'headerFile': 'mozilla/storage/mozStorageStatementParams.h',
559     'nativeType': 'mozilla::storage::StatementParams',
562 'MozStorageStatementRow': {
563     'headerFile': 'mozilla/storage/mozStorageStatementRow.h',
564     'nativeType': 'mozilla::storage::StatementRow',
567 'MozQueryInterface': {
568     'wrapperCache': False,
571 'MutationObserver': {
572     'nativeType': 'nsDOMMutationObserver',
575 'MutationRecord': {
576     'nativeType': 'nsDOMMutationRecord',
577     'headerFile': 'nsDOMMutationObserver.h',
580 'NamedNodeMap': {
581     'nativeType': 'nsDOMAttributeMap',
584 'NetworkInformation': {
585     'nativeType': 'mozilla::dom::network::Connection',
588 'Node': {
589     'nativeType': 'nsINode',
590     # Some WebIDL APIs that return Node use nsIContent internally (which doesn't
591     # have a direct correspondence with any WebIDL interface), so we need to use
592     # nsIContent.h so that the compiler knows nsIContent and nsINode are related
593     # by inheritance.
594     'headerFile': 'nsIContent.h',
597 'NodeIterator': {
598     'wrapperCache': False,
601 'NodeList': {
602     'nativeType': 'nsINodeList',
603     'concrete': True,
606 'OfflineAudioContext': {
607     'nativeType': 'mozilla::dom::AudioContext',
610 'OffscreenCanvasRenderingContext2D': {
611     'implicitJSContext': [
612         'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
613     ],
616 'PaintRequestList': {
617     'headerFile': 'mozilla/dom/PaintRequest.h',
620 'Path2D': {
621     'nativeType': 'mozilla::dom::CanvasPath',
622     'headerFile': 'CanvasPath.h'
625 'PeerConnectionImpl': {
626     'nativeType': 'mozilla::PeerConnectionImpl',
627     'headerFile': 'PeerConnectionImpl.h',
630 'Performance' : {
631     'implicitJSContext': [
632         'mark'
633     ],
636 'PerformanceResourceTiming' : {
637     'concrete': True,
640 'PlacesBookmark' : {
641     'concrete': True,
644 'PlacesEvent' : {
645     'concrete': True,
648 'TaskController' : {
649     'nativeType' : 'mozilla::dom::WebTaskController',
650     'headerFile' : 'mozilla/dom/WebTaskController.h'
653 'TransceiverImpl': {
654     'nativeType': 'mozilla::TransceiverImpl',
655     'headerFile': 'TransceiverImpl.h'
658 'TransformStreamDefaultController': {
659     'implicitJSContext': ['terminate'],
662 'Plugin': {
663     'headerFile' : 'nsPluginArray.h',
664     'nativeType': 'nsPluginElement',
667 'PluginArray': {
668     'nativeType': 'nsPluginArray',
671 'PluginTag': {
672     'nativeType': 'nsIPluginTag',
675 'Policy': {
676     'nativeType': 'mozilla::dom::FeaturePolicy',
679 'PromiseNativeHandler': {
680     'wrapperCache': False,
683 'PushEvent': {
684     'headerFile': 'ServiceWorkerEvents.h',
687 'PushMessageData': {
688     'headerFile': 'ServiceWorkerEvents.h',
691 'Range': {
692     'nativeType': 'nsRange',
695 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
696 'ReadableByteStreamController': {
697     'implicitJSContext': ['byobRequest', 'close', 'enqueue'],
700 'ReadableStream': {
701     'implicitJSContext': ['tee'],
704 'ReadableStreamBYOBRequest': {
705     'implicitJSContext': ['respond', 'respondWithNewView'],
708 'ReadableStreamDefaultController': {
709     'implicitJSContext': ['close'],
712 'Request': {
713     'implicitJSContext': [ 'arrayBuffer', 'blob', 'formData', 'json', 'text' ],
716 'ResizeObserverEntry': {
717     'nativeType': 'mozilla::dom::ResizeObserverEntry',
718     'headerFile': 'mozilla/dom/ResizeObserver.h',
721 'ResizeObserverSize': {
722     'nativeType': 'mozilla::dom::ResizeObserverSize',
723     'headerFile': 'mozilla/dom/ResizeObserver.h',
726 'Response': {
727     'implicitJSContext': [ 'arrayBuffer', 'blob', 'body', 'formData', 'json', 'text',
728                            'clone', 'cloneUnfiltered' ],
731 'RTCDataChannel': {
732     'nativeType': 'nsDOMDataChannel',
735 'Scheduler': {
736     'nativeType': 'mozilla::dom::WebTaskScheduler',
737     'headerFile': 'mozilla/dom/WebTaskScheduler.h',
740 'Screen': {
741     'nativeType': 'nsScreen',
744 'ServiceWorkerGlobalScope': {
745     'headerFile': 'mozilla/dom/WorkerScope.h',
748 'ServiceWorkerRegistration': {
749     'implicitJSContext': [ 'pushManager' ],
752 'ShadowRealmGlobalScope': {
753     'hasOrdinaryObjectPrototype': True,
756 'SharedWorkerGlobalScope': {
757     'headerFile': 'mozilla/dom/WorkerScope.h',
760 'StreamFilter': {
761     'nativeType': 'mozilla::extensions::StreamFilter',
764 'StreamFilterDataEvent': {
765     'nativeType': 'mozilla::extensions::StreamFilterDataEvent',
766     'headerFile': 'mozilla/extensions/StreamFilterEvents.h',
769 'StructuredCloneHolder': {
770     'nativeType': 'mozilla::dom::StructuredCloneBlob',
771     'wrapperCache': False,
774 'StyleSheet': {
775     'nativeType': 'mozilla::StyleSheet',
776     'headerFile': 'mozilla/StyleSheetInlines.h',
779 'SVGAnimatedAngle': {
780     'nativeType': 'mozilla::dom::DOMSVGAnimatedAngle',
781     'headerFile': 'DOMSVGAnimatedAngle.h',
784 'SVGAnimatedBoolean': {
785     'nativeType': 'mozilla::dom::DOMSVGAnimatedBoolean',
786     'headerFile': 'DOMSVGAnimatedBoolean.h',
789 'SVGAnimatedEnumeration': {
790     'nativeType': 'mozilla::dom::DOMSVGAnimatedEnumeration',
791     'headerFile': 'DOMSVGAnimatedEnumeration.h',
794 'SVGAnimatedInteger': {
795     'nativeType': 'mozilla::dom::DOMSVGAnimatedInteger',
796     'headerFile': 'DOMSVGAnimatedInteger.h',
799 'SVGAnimatedPreserveAspectRatio': {
800     'nativeType': 'mozilla::dom::DOMSVGAnimatedPreserveAspectRatio',
801     'headerFile': 'SVGAnimatedPreserveAspectRatio.h'
804 'SVGAnimatedLength': {
805     'nativeType': 'mozilla::dom::DOMSVGAnimatedLength',
806     'headerFile': 'DOMSVGAnimatedLength.h',
809 'SVGAnimatedLengthList': {
810     'nativeType': 'mozilla::dom::DOMSVGAnimatedLengthList',
811     'headerFile': 'DOMSVGAnimatedLengthList.h',
814 'SVGAnimatedNumber': {
815     'nativeType': 'mozilla::dom::DOMSVGAnimatedNumber',
816     'headerFile': 'DOMSVGAnimatedNumber.h',
819 'SVGAnimatedNumberList': {
820     'nativeType': 'mozilla::dom::DOMSVGAnimatedNumberList',
821     'headerFile': 'DOMSVGAnimatedNumberList.h'
824 'SVGAnimatedString': {
825     'nativeType': 'mozilla::dom::DOMSVGAnimatedString',
826     'headerFile': 'DOMSVGAnimatedString.h',
829 'SVGAnimatedTransformList': {
830     'nativeType': 'mozilla::dom::DOMSVGAnimatedTransformList',
831     'headerFile': 'DOMSVGAnimatedTransformList.h'
834 'SVGAngle': {
835     'nativeType': 'mozilla::dom::DOMSVGAngle',
836     'headerFile': 'DOMSVGAngle.h'
839 'SVGElement': {
840     'concrete': True,
843 'SVGFEFuncAElement': {
844     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
847 'SVGFEFuncBElement': {
848     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
851 'SVGFEFuncGElement': {
852     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
855 'SVGFEFuncRElement': {
856     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
859 'SVGLength': {
860     'nativeType': 'mozilla::dom::DOMSVGLength',
861     'headerFile': 'DOMSVGLength.h'
864 'SVGLengthList': {
865     'nativeType': 'mozilla::dom::DOMSVGLengthList',
866     'headerFile': 'DOMSVGLengthList.h'
869 'SVGLinearGradientElement': {
870     'headerFile': 'mozilla/dom/SVGGradientElement.h',
873 'SVGNumber': {
874     'nativeType': 'mozilla::dom::DOMSVGNumber',
875     'headerFile': 'DOMSVGNumber.h',
878 'SVGNumberList': {
879     'nativeType': 'mozilla::dom::DOMSVGNumberList',
880     'headerFile': 'DOMSVGNumberList.h'
883 'SVGPathSeg': {
884     'nativeType': 'mozilla::dom::DOMSVGPathSeg',
885     'headerFile': 'DOMSVGPathSeg.h',
888 'SVGPathSegClosePath': {
889     'nativeType': 'mozilla::dom::DOMSVGPathSegClosePath',
890     'headerFile': 'DOMSVGPathSeg.h'
893 'SVGPathSegMovetoAbs': {
894     'nativeType': 'mozilla::dom::DOMSVGPathSegMovetoAbs',
895     'headerFile': 'DOMSVGPathSeg.h'
898 'SVGPathSegMovetoRel': {
899     'nativeType': 'mozilla::dom::DOMSVGPathSegMovetoRel',
900     'headerFile': 'DOMSVGPathSeg.h'
903 'SVGPathSegLinetoAbs': {
904     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoAbs',
905     'headerFile': 'DOMSVGPathSeg.h'
908 'SVGPathSegLinetoRel': {
909     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoRel',
910     'headerFile': 'DOMSVGPathSeg.h'
913 'SVGPathSegCurvetoCubicAbs': {
914     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicAbs',
915     'headerFile': 'DOMSVGPathSeg.h'
918 'SVGPathSegCurvetoCubicRel': {
919     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicRel',
920     'headerFile': 'DOMSVGPathSeg.h'
923 'SVGPathSegCurvetoQuadraticAbs': {
924     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticAbs',
925     'headerFile': 'DOMSVGPathSeg.h'
928 'SVGPathSegCurvetoQuadraticRel': {
929     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticRel',
930     'headerFile': 'DOMSVGPathSeg.h'
933 'SVGPathSegArcAbs': {
934     'nativeType': 'mozilla::dom::DOMSVGPathSegArcAbs',
935     'headerFile': 'DOMSVGPathSeg.h'
938 'SVGPathSegArcRel': {
939     'nativeType': 'mozilla::dom::DOMSVGPathSegArcRel',
940     'headerFile': 'DOMSVGPathSeg.h'
943 'SVGPathSegLinetoHorizontalAbs': {
944     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoHorizontalAbs',
945     'headerFile': 'DOMSVGPathSeg.h'
948 'SVGPathSegLinetoHorizontalRel': {
949     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoHorizontalRel',
950     'headerFile': 'DOMSVGPathSeg.h'
953 'SVGPathSegLinetoVerticalAbs': {
954     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoVerticalAbs',
955     'headerFile': 'DOMSVGPathSeg.h'
958 'SVGPathSegLinetoVerticalRel': {
959     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoVerticalRel',
960     'headerFile': 'DOMSVGPathSeg.h'
963 'SVGPathSegCurvetoCubicSmoothAbs': {
964     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicSmoothAbs',
965     'headerFile': 'DOMSVGPathSeg.h'
968 'SVGPathSegCurvetoCubicSmoothRel': {
969     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicSmoothRel',
970     'headerFile': 'DOMSVGPathSeg.h'
973 'SVGPathSegCurvetoQuadraticSmoothAbs': {
974     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticSmoothAbs',
975     'headerFile': 'DOMSVGPathSeg.h'
978 'SVGPathSegCurvetoQuadraticSmoothRel': {
979     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticSmoothRel',
980     'headerFile': 'DOMSVGPathSeg.h'
983 'SVGPathSegList': {
984     'nativeType': 'mozilla::dom::DOMSVGPathSegList',
985     'headerFile': 'DOMSVGPathSegList.h'
988 'SVGPoint': {
989     'nativeType': 'mozilla::dom::DOMSVGPoint',
990     'headerFile': 'DOMSVGPoint.h'
993 'SVGPointList': {
994     'nativeType': 'mozilla::dom::DOMSVGPointList',
995     'headerFile': 'DOMSVGPointList.h'
998 'SVGPreserveAspectRatio': {
999     'nativeType': 'mozilla::dom::DOMSVGPreserveAspectRatio',
1000     'headerFile': 'SVGPreserveAspectRatio.h'
1003 'SVGRadialGradientElement': {
1004     'headerFile': 'mozilla/dom/SVGGradientElement.h',
1007 'SVGStringList': {
1008     'nativeType': 'mozilla::dom::DOMSVGStringList',
1009     'headerFile': 'DOMSVGStringList.h',
1012 'SVGTransform': {
1013     'nativeType': 'mozilla::dom::DOMSVGTransform',
1014     'headerFile': 'DOMSVGTransform.h',
1017 'SVGTransformList': {
1018     'nativeType': 'mozilla::dom::DOMSVGTransformList',
1019     'headerFile': 'DOMSVGTransformList.h'
1022 'SVGUnitTypes' : {
1023     # Maybe should be a namespace.
1024     'concrete': False,
1027 'SVGZoomAndPan' : {
1028     # Part of a kinda complicated legacy setup for putting some constants on
1029     # both interfaces and this thing, which ideally should be a namespace.
1030     'concrete': False,
1033 'SyncReadFile': {
1034     'headerFile': 'mozilla/dom/IOUtils.h',
1037 'TelemetryStopwatch': {
1038     'nativeType': 'mozilla::telemetry::Stopwatch',
1041 'TestFunctions': {
1042     'wrapperCache': False
1045 'Text': {
1046     # Total hack to allow binding code to realize that nsTextNode can
1047     # in fact be cast to Text.
1048     'headerFile': 'nsTextNode.h',
1051 'TextDecoder': {
1052     'wrapperCache': False
1055 'TextEncoder': {
1056     'wrapperCache': False
1059 'TextMetrics': {
1060     'wrapperCache': False
1063 'TouchList': {
1064     'headerFile': 'mozilla/dom/TouchEvent.h',
1067 'TreeColumn': {
1068     'nativeType': 'nsTreeColumn',
1069     'headerFile': 'nsTreeColumns.h',
1072 'TreeColumns': {
1073     'nativeType': 'nsTreeColumns',
1076 'TreeContentView': {
1077     'nativeType': 'nsTreeContentView',
1080 'TreeWalker': {
1081     'wrapperCache': False,
1084 'UserInteraction': {
1085     'nativeType': 'mozilla::telemetry::UserInteractionStopwatch',
1086     'headerFile': 'mozilla/telemetry/Stopwatch.h',
1089 'VisualViewport': {
1090     'nativeType': 'mozilla::dom::VisualViewport',
1093 'VTTCue': {
1094     'nativeType': 'mozilla::dom::TextTrackCue'
1097 'VTTRegion': {
1098   'nativeType': 'mozilla::dom::TextTrackRegion',
1101 'WebExtensionContentScript': {
1102     'nativeType': 'mozilla::extensions::WebExtensionContentScript',
1105 'WebExtensionPolicy': {
1106     'nativeType': 'mozilla::extensions::WebExtensionPolicy',
1109 'WindowClient': {
1110     'nativeType': 'mozilla::dom::Client',
1113 'WindowGlobalChild': {
1114     'implicitJSContext': ['getActor'],
1117 'WindowGlobalParent': {
1118     'implicitJSContext': ['getActor'],
1121 'WebGLActiveInfo': {
1122     'nativeType': 'mozilla::WebGLActiveInfoJS',
1123     'headerFile': 'ClientWebGLContext.h',
1124     'wrapperCache': False
1127 'WebGLBuffer': {
1128     'nativeType': 'mozilla::WebGLBufferJS',
1129     'headerFile': 'ClientWebGLContext.h'
1132 'EXT_float_blend': {
1133     'nativeType': 'mozilla::ClientWebGLExtensionFloatBlend',
1134     'headerFile': 'ClientWebGLExtensions.h'
1137 'EXT_texture_compression_bptc': {
1138     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureBPTC',
1139     'headerFile': 'ClientWebGLExtensions.h'
1142 'EXT_texture_compression_rgtc': {
1143     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureRGTC',
1144     'headerFile': 'ClientWebGLExtensions.h'
1147 'EXT_texture_norm16': {
1148     'nativeType': 'mozilla::ClientWebGLExtensionTextureNorm16',
1149     'headerFile': 'ClientWebGLExtensions.h'
1152 'OES_fbo_render_mipmap': {
1153     'nativeType': 'mozilla::ClientWebGLExtensionFBORenderMipmap',
1154     'headerFile': 'ClientWebGLExtensions.h'
1157 'OVR_multiview2': {
1158     'nativeType': 'mozilla::ClientWebGLExtensionMultiview',
1159     'headerFile': 'ClientWebGLExtensions.h'
1162 'WEBGL_compressed_texture_astc': {
1163     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureASTC',
1164     'headerFile': 'ClientWebGLExtensions.h'
1167 'WEBGL_compressed_texture_etc': {
1168     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureES3',
1169     'headerFile': 'ClientWebGLExtensions.h'
1172 'WEBGL_compressed_texture_etc1': {
1173     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureETC1',
1174     'headerFile': 'ClientWebGLExtensions.h'
1177 'WEBGL_compressed_texture_pvrtc': {
1178     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTexturePVRTC',
1179     'headerFile': 'ClientWebGLExtensions.h'
1182 'WEBGL_compressed_texture_s3tc': {
1183     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureS3TC',
1184     'headerFile': 'ClientWebGLExtensions.h'
1187 'WEBGL_compressed_texture_s3tc_srgb': {
1188     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureS3TC_SRGB',
1189     'headerFile': 'ClientWebGLExtensions.h'
1192 'WEBGL_depth_texture': {
1193     'nativeType': 'mozilla::ClientWebGLExtensionDepthTexture',
1194     'headerFile': 'ClientWebGLExtensions.h'
1197 'WEBGL_debug_renderer_info': {
1198     'nativeType': 'mozilla::ClientWebGLExtensionDebugRendererInfo',
1199     'headerFile': 'ClientWebGLExtensions.h'
1202 'WEBGL_debug_shaders': {
1203     'nativeType': 'mozilla::ClientWebGLExtensionDebugShaders',
1204     'headerFile': 'ClientWebGLExtensions.h'
1207 'WEBGL_explicit_present': {
1208     'nativeType': 'mozilla::ClientWebGLExtensionExplicitPresent',
1209     'headerFile': 'ClientWebGLExtensions.h'
1212 'WEBGL_provoking_vertex': {
1213     'nativeType': 'mozilla::ClientWebGLExtensionProvokingVertex',
1214     'headerFile': 'ClientWebGLExtensions.h'
1217 'OES_draw_buffers_indexed': {
1218     'nativeType': 'mozilla::ClientWebGLExtensionDrawBuffersIndexed',
1219     'headerFile': 'ClientWebGLExtensions.h'
1222 'OES_element_index_uint': {
1223     'nativeType': 'mozilla::ClientWebGLExtensionElementIndexUint',
1224     'headerFile': 'ClientWebGLExtensions.h'
1227 'EXT_frag_depth': {
1228     'nativeType': 'mozilla::ClientWebGLExtensionFragDepth',
1229     'headerFile': 'ClientWebGLExtensions.h'
1232 'WEBGL_lose_context': {
1233     'nativeType': 'mozilla::ClientWebGLExtensionLoseContext',
1234     'headerFile': 'ClientWebGLExtensions.h'
1237 'EXT_sRGB': {
1238     'nativeType': 'mozilla::ClientWebGLExtensionSRGB',
1239     'headerFile': 'ClientWebGLExtensions.h'
1242 'OES_standard_derivatives': {
1243     'nativeType': 'mozilla::ClientWebGLExtensionStandardDerivatives',
1244     'headerFile': 'ClientWebGLExtensions.h'
1247 'EXT_shader_texture_lod': {
1248     'nativeType': 'mozilla::ClientWebGLExtensionShaderTextureLod',
1249     'headerFile': 'ClientWebGLExtensions.h'
1252 'EXT_texture_filter_anisotropic': {
1253     'nativeType': 'mozilla::ClientWebGLExtensionTextureFilterAnisotropic',
1254     'headerFile': 'ClientWebGLExtensions.h'
1257 'OES_texture_float': {
1258     'nativeType': 'mozilla::ClientWebGLExtensionTextureFloat',
1259     'headerFile': 'ClientWebGLExtensions.h'
1262 'OES_texture_float_linear': {
1263     'nativeType': 'mozilla::ClientWebGLExtensionTextureFloatLinear',
1264     'headerFile': 'ClientWebGLExtensions.h'
1267 'OES_texture_half_float': {
1268    'nativeType': 'mozilla::ClientWebGLExtensionTextureHalfFloat',
1269    'headerFile': 'ClientWebGLExtensions.h'
1272 'OES_texture_half_float_linear': {
1273    'nativeType': 'mozilla::ClientWebGLExtensionTextureHalfFloatLinear',
1274    'headerFile': 'ClientWebGLExtensions.h'
1277 'WEBGL_color_buffer_float': {
1278    'nativeType': 'mozilla::ClientWebGLExtensionColorBufferFloat',
1279    'headerFile': 'ClientWebGLExtensions.h'
1282 'EXT_color_buffer_half_float': {
1283    'nativeType': 'mozilla::ClientWebGLExtensionColorBufferHalfFloat',
1284    'headerFile': 'ClientWebGLExtensions.h'
1287 'EXT_color_buffer_float': {
1288    'nativeType': 'mozilla::ClientWebGLExtensionEXTColorBufferFloat',
1289    'headerFile': 'ClientWebGLExtensions.h'
1292 'WEBGL_draw_buffers': {
1293     'nativeType': 'mozilla::ClientWebGLExtensionDrawBuffers',
1294     'headerFile': 'ClientWebGLExtensions.h'
1297 'OES_vertex_array_object': {
1298     'nativeType': 'mozilla::ClientWebGLExtensionVertexArray',
1299     'headerFile': 'ClientWebGLExtensions.h'
1302 'ANGLE_instanced_arrays': {
1303     'nativeType': 'mozilla::ClientWebGLExtensionInstancedArrays',
1304     'headerFile': 'ClientWebGLExtensions.h'
1307 'EXT_blend_minmax': {
1308     'nativeType': 'mozilla::ClientWebGLExtensionBlendMinMax',
1309     'headerFile': 'ClientWebGLExtensions.h'
1312 'EXT_disjoint_timer_query': {
1313     'nativeType': 'mozilla::ClientWebGLExtensionDisjointTimerQuery',
1314     'headerFile': 'ClientWebGLExtensions.h'
1317 'MOZ_debug': {
1318     'nativeType': 'mozilla::ClientWebGLExtensionMOZDebug',
1319     'headerFile': 'ClientWebGLExtensions.h'
1322 'WebGLFramebuffer': {
1323     'nativeType': 'mozilla::WebGLFramebufferJS',
1324     'headerFile': 'ClientWebGLContext.h'
1327 'WebGLProgram': {
1328     'nativeType': 'mozilla::WebGLProgramJS',
1329     'headerFile': 'ClientWebGLContext.h'
1332 'WebGLQuery': {
1333     'nativeType': 'mozilla::WebGLQueryJS',
1334     'headerFile': 'ClientWebGLContext.h'
1337 'WebGLRenderbuffer': {
1338     'nativeType': 'mozilla::WebGLRenderbufferJS',
1339     'headerFile': 'ClientWebGLContext.h'
1342 'WebGLRenderingContext': {
1343     'nativeType': 'mozilla::ClientWebGLContext',
1344     'headerFile': 'ClientWebGLContext.h',
1347 'WebGL2RenderingContext': {
1348     'nativeType': 'mozilla::ClientWebGLContext',
1349     'headerFile': 'ClientWebGLContext.h',
1352 'WebGLSampler': {
1353     'nativeType': 'mozilla::WebGLSamplerJS',
1354     'headerFile': 'ClientWebGLContext.h'
1357 'WebGLShader': {
1358     'nativeType': 'mozilla::WebGLShaderJS',
1359     'headerFile': 'ClientWebGLContext.h'
1362 'WebGLShaderPrecisionFormat': {
1363     'nativeType': 'mozilla::WebGLShaderPrecisionFormatJS',
1364     'headerFile': 'ClientWebGLContext.h',
1365     'wrapperCache': False
1368 'WebGLSync': {
1369     'nativeType': 'mozilla::WebGLSyncJS',
1370     'headerFile': 'ClientWebGLContext.h'
1373 'WebGLTexture': {
1374     'nativeType': 'mozilla::WebGLTextureJS',
1375     'headerFile': 'ClientWebGLContext.h'
1378 'WebGLTransformFeedback': {
1379     'nativeType': 'mozilla::WebGLTransformFeedbackJS',
1380     'headerFile': 'ClientWebGLContext.h'
1383 'WebGLUniformLocation': {
1384     'nativeType': 'mozilla::WebGLUniformLocationJS',
1385     'headerFile': 'ClientWebGLContext.h'
1388 'WebGLVertexArrayObject': {
1389     'nativeType': 'mozilla::WebGLVertexArrayJS',
1390     'headerFile': 'ClientWebGLContext.h'
1393 # WebGPU
1395 'GPU': {
1396     'nativeType': 'mozilla::webgpu::Instance',
1398 'GPUAdapter': {
1399     'nativeType': 'mozilla::webgpu::Adapter',
1401 'GPUAdapterInfo': {
1402     'nativeType': 'mozilla::webgpu::AdapterInfo',
1403     'headerFile': 'mozilla/webgpu/Adapter.h',
1404     'wrapperCache': False
1406 'GPUBindGroup': {
1407     'nativeType': 'mozilla::webgpu::BindGroup',
1409 'GPUBindGroupLayout': {
1410     'nativeType': 'mozilla::webgpu::BindGroupLayout',
1412 'GPUBuffer': {
1413     'nativeType': 'mozilla::webgpu::Buffer',
1414     'implicitJSContext': [ 'unmap', 'destroy' ],
1416 'GPUCanvasContext': {
1417     'nativeType': 'mozilla::webgpu::CanvasContext',
1419 'GPUCommandBuffer': {
1420     'nativeType': 'mozilla::webgpu::CommandBuffer',
1422 'GPUCommandEncoder': {
1423     'nativeType': 'mozilla::webgpu::CommandEncoder',
1425 'GPUCompilationInfo': {
1426     'nativeType': 'mozilla::webgpu::CompilationInfo',
1428 'GPUCompilationMessage': {
1429     'nativeType': 'mozilla::webgpu::CompilationMessage',
1431 'GPUComputePassEncoder': {
1432     'nativeType': 'mozilla::webgpu::ComputePassEncoder',
1434 'GPUComputePipeline': {
1435     'nativeType': 'mozilla::webgpu::ComputePipeline',
1437 'GPUDevice': {
1438     'nativeType': 'mozilla::webgpu::Device',
1440 'GPUDeviceLostInfo': {
1441     'nativeType': 'mozilla::webgpu::DeviceLostInfo',
1443 'GPUError': {
1444     'nativeType': 'mozilla::webgpu::Error',
1446 'GPUInternalError': {
1447     'nativeType': 'mozilla::webgpu::InternalError',
1449 'GPUOutOfMemoryError': {
1450     'nativeType': 'mozilla::webgpu::OutOfMemoryError',
1452 'GPUPipelineLayout': {
1453     'nativeType': 'mozilla::webgpu::PipelineLayout',
1455 'GPUQuerySet': {
1456     'nativeType': 'mozilla::webgpu::QuerySet',
1458 'GPUQueue': {
1459     'nativeType': 'mozilla::webgpu::Queue',
1461 'GPURenderBundle': {
1462     'nativeType': 'mozilla::webgpu::RenderBundle',
1464 'GPURenderBundleEncoder': {
1465     'nativeType': 'mozilla::webgpu::RenderBundleEncoder',
1467 'GPURenderPassEncoder': {
1468     'nativeType': 'mozilla::webgpu::RenderPassEncoder',
1470 'GPURenderPipeline': {
1471     'nativeType': 'mozilla::webgpu::RenderPipeline',
1473 'GPUSampler': {
1474     'nativeType': 'mozilla::webgpu::Sampler',
1476 'GPUShaderModule': {
1477     'nativeType': 'mozilla::webgpu::ShaderModule',
1479 'GPUSupportedFeatures': {
1480     'nativeType': 'mozilla::webgpu::SupportedFeatures',
1482 'GPUSupportedLimits': {
1483     'nativeType': 'mozilla::webgpu::SupportedLimits',
1485 'GPUTexture': {
1486     'nativeType': 'mozilla::webgpu::Texture',
1488 'GPUTextureView': {
1489     'nativeType': 'mozilla::webgpu::TextureView',
1491 'GPUValidationError': {
1492     'nativeType': 'mozilla::webgpu::ValidationError',
1495 'GPUBindingType': {
1496     'concrete': False,
1498 'GPUBlendFactor': {
1499     'concrete': False,
1501 'GPUBlendOperation': {
1502     'concrete': False,
1504 'GPUBufferUsage': {
1505     'concrete': False,
1507 'GPUColorWrite': {
1508     'concrete': False,
1510 'GPUCompareFunction': {
1511     'concrete': False,
1513 'GPUFilterMode': {
1514     'concrete': False,
1516 'GPUIndexFormat': {
1517     'concrete': False,
1519 'GPUInputStepMode': {
1520     'concrete': False,
1522 'GPULoadOp': {
1523     'concrete': False,
1525 'GPUMapMode': {
1526     'concrete': False,
1528 'GPUPrimitiveTopology': {
1529     'concrete': False,
1531 'GPUShaderStage': {
1532     'concrete': False,
1534 'GPUStencilOperation': {
1535     'concrete': False,
1537 'GPUStoreOp': {
1538     'concrete': False,
1540 'GPUTextureDimension': {
1541     'concrete': False,
1543 'GPUTextureFormat': {
1544     'concrete': False,
1546 'GPUTextureUsage': {
1547     'concrete': False,
1549 'GPUVertexFormat': {
1550     'concrete': False,
1553 # Glean
1555 'GleanImpl': {
1556     'nativeType': 'mozilla::glean::Glean',
1557     'headerFile': 'mozilla/glean/bindings/Glean.h',
1559 'GleanCategory': {
1560     'nativeType': 'mozilla::glean::Category',
1561     'headerFile': 'mozilla/glean/bindings/Category.h',
1563 'GleanPingsImpl': {
1564     'nativeType': 'mozilla::glean::GleanPings',
1565     'headerFile': 'mozilla/glean/bindings/GleanPings.h',
1567 'GleanLabeled': {
1568     'nativeType': 'mozilla::glean::GleanLabeled',
1569     'headerFile': 'mozilla/glean/bindings/Labeled.h',
1572 # WebRTC
1574 'WebrtcGlobalInformation': {
1575     'nativeType': 'mozilla::dom::WebrtcGlobalInformation',
1576     'headerFile': 'WebrtcGlobalInformation.h',
1579 'Window': {
1580     'nativeType': 'nsGlobalWindowInner',
1581     'headerFile': 'nsGlobalWindow.h',
1582     'implicitJSContext': [
1583         'requestIdleCallback', 'indexedDB'
1584     ],
1587 'WindowContext': {
1588     'concrete': True
1591 'WindowProxy': {
1592     'nativeType': 'mozilla::dom::WindowProxyHolder',
1593     'headerFile': 'mozilla/dom/WindowProxyHolder.h',
1594     'concrete': False
1597 'WindowRoot': {
1598     'nativeType': 'nsWindowRoot'
1601 'WorkerDebuggerGlobalScope': {
1602     'headerFile': 'mozilla/dom/WorkerScope.h',
1603     'implicitJSContext': [
1604         'dump', 'clearConsoleEvents', 'reportError', 'setConsoleEventHandler',
1605     ],
1608 'WorkerGlobalScope': {
1609     'headerFile': 'mozilla/dom/WorkerScope.h',
1610     'implicitJSContext': [ 'importScripts', 'indexedDB' ],
1613 'Worklet': {
1614     # Paint worklets just use the Worklet interface.
1615     'concrete': True,
1616     'implicitJSContext': [ 'addModule' ],
1619 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
1620 'WritableStream': {
1621     'implicitJSContext': ['close'],
1624 'WritableStreamDefaultWriter': {
1625     'implicitJSContext': ['close', 'releaseLock'],
1628 'XMLSerializer': {
1629     'nativeType': 'nsDOMSerializer',
1630     'wrapperCache': False
1633 'XPathEvaluator': {
1634     'wrapperCache': False,
1635     'concrete': True,
1638 'XPathExpression': {
1639     'wrapperCache': False,
1642 'XRPose': {
1643    'concrete': True,
1646 'XRReferenceSpace': {
1647     'concrete': True,
1650 'XRSpace': {
1651     'concrete': True,
1654 'XSLTProcessor': {
1655     'nativeType': 'txMozillaXSLTProcessor',
1658 'XULElement': {
1659     'nativeType': 'nsXULElement',
1662 # WebExtension API
1664 'ExtensionBrowser': {
1665     'headerFile': 'mozilla/extensions/ExtensionBrowser.h',
1666     'nativeType': 'mozilla::extensions::ExtensionBrowser',
1669 'ExtensionMockAPI': {
1670     'headerFile': 'mozilla/extensions/ExtensionMockAPI.h',
1671     'nativeType': 'mozilla::extensions::ExtensionMockAPI',
1674 'ExtensionBrowserSettings': {
1675     'headerFile': 'mozilla/extensions/ExtensionBrowserSettings.h',
1676     'nativeType': 'mozilla::extensions::ExtensionBrowserSettings',
1679 'ExtensionBrowserSettingsColorManagement': {
1680     'headerFile': 'mozilla/extensions/ExtensionBrowserSettingsColorManagement.h',
1681     'nativeType': 'mozilla::extensions::ExtensionBrowserSettingsColorManagement',
1684 'ExtensionDns': {
1685     'headerFile': 'mozilla/extensions/ExtensionDns.h',
1686     'nativeType': 'mozilla::extensions::ExtensionDns',
1689 'ExtensionEventManager': {
1690     'headerFile': 'mozilla/extensions/ExtensionEventManager.h',
1691     'nativeType': 'mozilla::extensions::ExtensionEventManager',
1694 'ExtensionPort': {
1695     'headerFile': 'mozilla/extensions/ExtensionPort.h',
1696     'nativeType': 'mozilla::extensions::ExtensionPort',
1699 'ExtensionProxy': {
1700     'headerFile': 'mozilla/extensions/ExtensionProxy.h',
1701     'nativeType': 'mozilla::extensions::ExtensionProxy',
1704 'ExtensionRuntime': {
1705     'headerFile': 'mozilla/extensions/ExtensionRuntime.h',
1706     'nativeType': 'mozilla::extensions::ExtensionRuntime',
1709 'ExtensionScripting': {
1710     'headerFile': 'mozilla/extensions/ExtensionScripting.h',
1711     'nativeType': 'mozilla::extensions::ExtensionScripting',
1714 'ExtensionSetting': {
1715     'headerFile': 'mozilla/extensions/ExtensionSetting.h',
1716     'nativeType': 'mozilla::extensions::ExtensionSetting',
1719 'ExtensionTest': {
1720     'headerFile': 'mozilla/extensions/ExtensionTest.h',
1721     'nativeType': 'mozilla::extensions::ExtensionTest',
1724 'ExtensionAlarms': {
1725     'headerFile': 'mozilla/extensions/ExtensionAlarms.h',
1726     'nativeType': 'mozilla::extensions::ExtensionAlarms',
1729 ####################################
1730 # Test Interfaces of various sorts #
1731 ####################################
1733 'TestInterface' : {
1734         # Keep this in sync with TestExampleInterface
1735         'headerFile': 'TestBindingHeader.h',
1736         'register': False,
1737         },
1739 'TestParentInterface' : {
1740         'headerFile': 'TestBindingHeader.h',
1741         'register': False,
1742         },
1744 'TestChildInterface' : {
1745         'headerFile': 'TestBindingHeader.h',
1746         'register': False,
1747         },
1749 'TestCImplementedInterface' : {
1750         'headerFile': 'TestCImplementedInterface.h',
1751         'register': False,
1752         },
1754 'TestCImplementedInterface2' : {
1755         'headerFile': 'TestCImplementedInterface.h',
1756         'register': False,
1757         },
1759 'TestJSImplInterface' : {
1760         # Keep this in sync with TestExampleInterface
1761         'headerFile': 'TestJSImplGenBinding.h',
1762         'register': False,
1763         },
1765 'TestJSImplInterface2' : {
1766         'headerFile': 'TestJSImplGenBinding.h',
1767         'register': False
1768         },
1770 'TestJSImplInterface3' : {
1771         'headerFile': 'TestJSImplGenBinding.h',
1772         'register': False
1773         },
1775 'TestJSImplInterface4' : {
1776         'headerFile': 'TestJSImplGenBinding.h',
1777         'register': False
1778         },
1780 'TestJSImplInterface5' : {
1781         'headerFile': 'TestJSImplGenBinding.h',
1782         'register': False
1783         },
1785 'TestJSImplInterface6' : {
1786         'headerFile': 'TestJSImplGenBinding.h',
1787         'register': False
1788         },
1790 'TestNavigator' : {
1791         'headerFile': 'TestJSImplGenBinding.h',
1792         'register' : False
1793         },
1795 'TestNavigatorWithConstructor' : {
1796         'headerFile': 'TestJSImplGenBinding.h',
1797         'register' : False
1798         },
1800 'TestExternalInterface' : {
1801         'nativeType': 'mozilla::dom::TestExternalInterface',
1802         'headerFile': 'TestBindingHeader.h',
1803         'register': False
1804         },
1806 'TestNonWrapperCacheInterface' : {
1807         'headerFile': 'TestBindingHeader.h',
1808         'register': False,
1809         'wrapperCache': False
1810         },
1812 'IndirectlyImplementedInterface': {
1813         'headerFile': 'TestBindingHeader.h',
1814         'register': False,
1815         'castable': False,
1816         },
1818 'OnlyForUseInConstructor' : {
1819         'headerFile': 'TestBindingHeader.h',
1820         'register': False
1821         },
1823 'ImplementedInterface' : {
1824         'headerFile': 'TestBindingHeader.h',
1825         'register': False,
1826         },
1828 'ImplementedInterfaceParent' : {
1829         'headerFile': 'TestBindingHeader.h',
1830         'register': False
1831         },
1833 'DiamondImplements' : {
1834         'headerFile': 'TestBindingHeader.h',
1835         'register': False
1836         },
1838 'DiamondBranch1A' : {
1839         'headerFile': 'TestBindingHeader.h',
1840         'register': False
1841         },
1843 'DiamondBranch1B' : {
1844         'headerFile': 'TestBindingHeader.h',
1845         'register': False
1846         },
1848 'DiamondBranch2A' : {
1849         'headerFile': 'TestBindingHeader.h',
1850         'register': False
1851         },
1853 'DiamondBranch2B' : {
1854         'headerFile': 'TestBindingHeader.h',
1855         'register': False
1856         },
1858 'TestIndexedGetterInterface' : {
1859         'headerFile': 'TestBindingHeader.h',
1860         'register': False
1861         },
1863 'TestNamedGetterInterface' : {
1864         'headerFile': 'TestBindingHeader.h',
1865         'register': False
1866         },
1868 'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
1869         'headerFile': 'TestBindingHeader.h',
1870         'register': False
1871         },
1873 'TestIndexedAndNamedGetterInterface' : {
1874         'headerFile': 'TestBindingHeader.h',
1875         'register': False
1876         },
1878 'TestIndexedSetterInterface' : {
1879         'headerFile': 'TestBindingHeader.h',
1880         'register': False
1881         },
1883 'TestNamedSetterInterface' : {
1884         'headerFile': 'TestBindingHeader.h',
1885         'register': False
1886         },
1888 'TestIndexedAndNamedSetterInterface' : {
1889         'headerFile': 'TestBindingHeader.h',
1890         'register': False
1891         },
1893 'TestIndexedAndNamedGetterAndSetterInterface' : {
1894         'headerFile': 'TestBindingHeader.h',
1895         'register': False,
1896         },
1898 'TestRenamedInterface' : {
1899         'headerFile': 'TestBindingHeader.h',
1900         'register': False,
1901         'nativeType': 'nsRenamedInterface'
1902         },
1904 'TestNamedDeleterInterface' : {
1905         'headerFile': 'TestBindingHeader.h',
1906         'register': False
1907         },
1909 'TestNamedDeleterWithRetvalInterface' : {
1910         'headerFile': 'TestBindingHeader.h',
1911         'register': False
1912         },
1914 'TestCppKeywordNamedMethodsInterface' : {
1915         'headerFile': 'TestBindingHeader.h',
1916         'register': False
1917         },
1919 'TestExampleInterface' : {
1920         # Keep this in sync with TestInterface
1921         'headerFile': 'TestExampleInterface-example.h',
1922         'register': False,
1923         },
1925 'TestExampleWorkerInterface' : {
1926         'headerFile': 'TestExampleWorkerInterface-example.h',
1927         'register': False,
1928         },
1930 'TestExampleProxyInterface' : {
1931         'headerFile': 'TestExampleProxyInterface-example.h',
1932         'register': False
1933         },
1935 'TestExampleThrowingConstructorInterface' : {
1936         'headerFile': 'TestExampleThrowingConstructorInterface-example.h',
1937         'register': False,
1938         },
1940 'TestDeprecatedInterface' : {
1941         # Keep this in sync with TestExampleInterface
1942         'headerFile': 'TestBindingHeader.h',
1943         'register': False
1944         },
1946 'TestInterfaceWithPromiseConstructorArg' : {
1947         'headerFile': 'TestBindingHeader.h',
1948         'register': False,
1949         },
1951 'TestSecureContextInterface' : {
1952         # Keep this in sync with TestExampleInterface
1953         'headerFile': 'TestBindingHeader.h',
1954         'register': False
1955         },
1957 'TestNamespace' : {
1958         'headerFile': 'TestBindingHeader.h',
1959         'register': False,
1960         },
1962 'TestRenamedNamespace' : {
1963         'headerFile': 'TestBindingHeader.h',
1964         'register': False,
1965         },
1967 'TestProtoObjectHackedNamespace' : {
1968         'headerFile': 'TestBindingHeader.h',
1969         'register': False,
1970         },
1972 'TestWorkerExposedInterface' : {
1973         'headerFile': 'TestBindingHeader.h',
1974         'register': False,
1975         },
1977 'TestHTMLConstructorInterface' : {
1978         'headerFile': 'TestBindingHeader.h',
1979         'register': False,
1980         },
1982 'TestThrowingConstructorInterface' : {
1983         'headerFile': 'TestBindingHeader.h',
1984         'register': False,
1985         },
1987 'TestCEReactionsInterface' : {
1988         'headerFile': 'TestBindingHeader.h',
1989         'register': False,
1990         },
1992 'TestAttributesOnTypes' : {
1993         'headerFile': 'TestBindingHeader.h',
1994         'register': False,
1995         },
1997 'TestPrefConstructorForInterface' : {
1998         'headerFile': 'TestBindingHeader.h',
1999         'register': False,
2000         },
2002 'TestConstructorForPrefInterface' : {
2003         'headerFile': 'TestBindingHeader.h',
2004         'register': False,
2005         },
2007 'TestPrefConstructorForDifferentPrefInterface' : {
2008         'headerFile': 'TestBindingHeader.h',
2009         'register': False,
2010         },
2012 'TestConstructorForSCInterface' : {
2013         'headerFile': 'TestBindingHeader.h',
2014         'register': False,
2015         },
2017 'TestSCConstructorForInterface' : {
2018         'headerFile': 'TestBindingHeader.h',
2019         'register': False,
2020         },
2022 'TestConstructorForFuncInterface' : {
2023         'headerFile': 'TestBindingHeader.h',
2024         'register': False,
2025         },
2027 'TestFuncConstructorForInterface' : {
2028         'headerFile': 'TestBindingHeader.h',
2029         'register': False,
2030         },
2032 'TestFuncConstructorForDifferentFuncInterface' : {
2033         'headerFile': 'TestBindingHeader.h',
2034         'register': False,
2035         },
2037 'TestPrefChromeOnlySCFuncConstructorForInterface' : {
2038         'headerFile': 'TestBindingHeader.h',
2039         'register': False,
2040         },
2043 # These are temporary, until they've been converted to use new DOM bindings
2044 def addExternalIface(iface, nativeType=None, headerFile=None,
2045                      notflattened=False):
2046     if iface in DOMInterfaces:
2047         raise Exception('Interface declared both as WebIDL and External interface')
2048     domInterface = {
2049         'concrete': False
2050     }
2051     if not nativeType is None:
2052         domInterface['nativeType'] = nativeType
2053     if not headerFile is None:
2054         domInterface['headerFile'] = headerFile
2055     domInterface['notflattened'] = notflattened
2056     DOMInterfaces[iface] = domInterface
2058 addExternalIface('Cookie', nativeType='nsICookie',
2059                  headerFile='nsICookie.h', notflattened=True)
2060 addExternalIface('ContentSecurityPolicy', nativeType='nsIContentSecurityPolicy',
2061                  notflattened=True)
2062 addExternalIface('HitRegionOptions', nativeType='nsISupports')
2063 addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
2064 addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True)
2065 addExternalIface('LoadContext', nativeType='nsILoadContext', notflattened=True)
2066 addExternalIface('LoadInfo', nativeType='nsILoadInfo',
2067                  headerFile='nsILoadInfo.h', notflattened=True)
2068 addExternalIface('XULControllers', nativeType='nsIControllers', notflattened=True)
2069 addExternalIface('MozObserver', nativeType='nsIObserver', notflattened=True)
2070 addExternalIface('MozTreeView', nativeType='nsITreeView',
2071                   headerFile='nsITreeView.h', notflattened=True)
2072 addExternalIface('MozWakeLockListener', headerFile='nsIDOMWakeLockListener.h')
2073 addExternalIface('nsIBrowserDOMWindow', nativeType='nsIBrowserDOMWindow',
2074                  notflattened=True)
2075 addExternalIface('nsIDOMWindowUtils', nativeType='nsIDOMWindowUtils', notflattened=True)
2076 addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=True)
2077 addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True)
2078 addExternalIface('nsILoadGroup', nativeType='nsILoadGroup',
2079                  headerFile='nsILoadGroup.h', notflattened=True)
2080 addExternalIface('nsIMediaDevice', nativeType='nsIMediaDevice',
2081                  notflattened=True)
2082 addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings',
2083                  notflattened=True)
2084 addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
2085 addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
2086 addExternalIface('nsISocketTransport', nativeType='nsISocketTransport',
2087                  notflattened=True)
2088 addExternalIface('nsITransportProvider', nativeType='nsITransportProvider')
2089 addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
2090                  notflattened=True)
2091 addExternalIface('nsISupports', nativeType='nsISupports')
2092 addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
2093 addExternalIface('nsIDOMProcessChild', nativeType='nsIDOMProcessChild', notflattened=True)
2094 addExternalIface('nsIDOMProcessParent', nativeType='nsIDOMProcessParent', notflattened=True)
2095 addExternalIface('nsIReferrerInfo', nativeType='nsIReferrerInfo', notflattened=True)
2096 addExternalIface('nsISecureBrowserUI', nativeType='nsISecureBrowserUI', notflattened=True)
2097 addExternalIface('nsIWebProgress', nativeType='nsIWebProgress', notflattened=True)
2098 addExternalIface('nsIWebNavigation', nativeType='nsIWebNavigation', notflattened=True)
2099 addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True)
2100 addExternalIface('nsIWebBrowserPersistDocumentReceiver',
2101                  nativeType='nsIWebBrowserPersistDocumentReceiver',
2102                  headerFile='nsIWebBrowserPersistDocument.h',
2103                  notflattened=True)
2104 addExternalIface('nsIWebProgressListener', nativeType='nsIWebProgressListener',
2105                  notflattened=True)
2106 addExternalIface('OutputStream', nativeType='nsIOutputStream',
2107                  notflattened=True)
2108 addExternalIface('Principal', nativeType='nsIPrincipal',
2109                  headerFile='nsIPrincipal.h', notflattened=True)
2110 addExternalIface('StackFrame', nativeType='nsIStackFrame',
2111                  headerFile='nsIException.h', notflattened=True)
2112 addExternalIface('RemoteTab', nativeType='nsIRemoteTab',
2113                  notflattened=True)
2114 addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
2115                  notflattened=True)
2116 addExternalIface('XULCommandDispatcher', notflattened=True)
2117 addExternalIface('nsISHistory', nativeType='nsISHistory', notflattened=True)
2118 addExternalIface('nsISHEntry', nativeType='nsISHEntry', notflattened=True)
2119 addExternalIface('ReferrerInfo', nativeType='nsIReferrerInfo')
2120 addExternalIface('nsIPermissionDelegateHandler',
2121                  nativeType='nsIPermissionDelegateHandler',
2122                  notflattened=True)
2123 addExternalIface('nsIOpenWindowInfo', nativeType='nsIOpenWindowInfo',
2124                  notflattened=True)
2125 addExternalIface('nsICookieJarSettings', nativeType='nsICookieJarSettings',
2126                  notflattened=True)
2127 addExternalIface('nsIGleanPing', headerFile='mozilla/glean/bindings/Ping.h',
2128                  nativeType='nsIGleanPing', notflattened=True)
2129 addExternalIface('nsISessionStoreRestoreData',
2130                  nativeType='nsISessionStoreRestoreData',
2131                  headerFile='nsISessionStoreRestoreData.h', notflattened=True)
2132 addExternalIface('nsIScreen', nativeType='nsIScreen',
2133                  headerFile='nsIScreen.h', notflattened=True)
2135 # The TemplatedAttributes dictionary has the interface name where the template
2136 # should be generated as the key. The values are lists of dictionaries, where
2137 # each dictionary corresponds to one template. The dictionary contains:
2139 #   template  the template's name
2140 #   getter    the name for the native getter to call
2141 #   setter    the name for the native setter to call
2142 #   argument  a tuple for the additional argument that should be passed to the
2143 #             native getter and setter, containing the type for the argument
2144 #             and a name for the argument. The value will be supplied by the
2145 #             [BindingTemplate] extended attribute.
2146 #   attrName  a string which in the generated C++ code would yield a
2147 #             |const char*| that contains the attribute's name
2149 TemplatedAttributes = {
2151 'CSS2Properties': [
2152     {
2153         'template': 'CSS2Property',
2154         'getter': 'GetPropertyValue',
2155         'setter': 'SetPropertyValue',
2156         'argument': ('nsCSSPropertyID', 'id'),
2157         'attrName': 'nsCSSProps::PropertyIDLName(id)',
2158     },