Bug 1856663 - Add more chunks for Android mochitest-plain. r=jmaher,taskgraph-reviewe...
[gecko.git] / dom / bindings / Bindings.conf
blob017a4df5110cc54157bedb7b88f2228d268dfc93
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',
1571 'GleanMetric': {
1572     'nativeType': 'mozilla::glean::GleanMetric',
1573     'headerFile': 'mozilla/glean/bindings/GleanMetric.h',
1575 'GleanBoolean': {
1576     'nativeType': 'mozilla::glean::GleanBoolean',
1577     'headerFile': 'mozilla/glean/bindings/Boolean.h',
1579 'GleanCounter': {
1580     'nativeType': 'mozilla::glean::GleanCounter',
1581     'headerFile': 'mozilla/glean/bindings/Counter.h',
1583 'GleanCustomDistribution': {
1584     'nativeType': 'mozilla::glean::GleanCustomDistribution',
1585     'headerFile': 'mozilla/glean/bindings/CustomDistribution.h',
1587 'GleanDatetime': {
1588     'nativeType': 'mozilla::glean::GleanDatetime',
1589     'headerFile': 'mozilla/glean/bindings/Datetime.h',
1591 'GleanString': {
1592     'nativeType': 'mozilla::glean::GleanString',
1593     'headerFile': 'mozilla/glean/bindings/String.h',
1595 'GleanStringList': {
1596     'nativeType': 'mozilla::glean::GleanStringList',
1597     'headerFile': 'mozilla/glean/bindings/StringList.h',
1599 'GleanTimespan': {
1600     'nativeType': 'mozilla::glean::GleanTimespan',
1601     'headerFile': 'mozilla/glean/bindings/Timespan.h',
1603 'GleanUuid': {
1604     'nativeType': 'mozilla::glean::GleanUuid',
1605     'headerFile': 'mozilla/glean/bindings/Uuid.h',
1607 'GleanEvent': {
1608     'nativeType': 'mozilla::glean::GleanEvent',
1609     'headerFile': 'mozilla/glean/bindings/Event.h',
1611 'GleanQuantity': {
1612     'nativeType': 'mozilla::glean::GleanQuantity',
1613     'headerFile': 'mozilla/glean/bindings/Quantity.h',
1615 'GleanUrl': {
1616     'nativeType': 'mozilla::glean::GleanUrl',
1617     'headerFile': 'mozilla/glean/bindings/Url.h',
1619 'GleanTimingDistribution': {
1620     'nativeType': 'mozilla::glean::GleanTimingDistribution',
1621     'headerFile': 'mozilla/glean/bindings/TimingDistribution.h',
1623 'GleanMemoryDistribution': {
1624     'nativeType': 'mozilla::glean::GleanMemoryDistribution',
1625     'headerFile': 'mozilla/glean/bindings/MemoryDistribution.h',
1627 'GleanNumerator': {
1628     'nativeType': 'mozilla::glean::GleanNumerator',
1629     'headerFile': 'mozilla/glean/bindings/Numerator.h',
1631 'GleanDenominator': {
1632     'nativeType': 'mozilla::glean::GleanDenominator',
1633     'headerFile': 'mozilla/glean/bindings/Denominator.h',
1635 'GleanRate': {
1636     'nativeType': 'mozilla::glean::GleanRate',
1637     'headerFile': 'mozilla/glean/bindings/Rate.h',
1639 'GleanText': {
1640     'nativeType': 'mozilla::glean::GleanText',
1641     'headerFile': 'mozilla/glean/bindings/Text.h',
1644 # WebRTC
1646 'WebrtcGlobalInformation': {
1647     'nativeType': 'mozilla::dom::WebrtcGlobalInformation',
1648     'headerFile': 'WebrtcGlobalInformation.h',
1651 'Window': {
1652     'nativeType': 'nsGlobalWindowInner',
1653     'headerFile': 'nsGlobalWindowInner.h',
1654     'implicitJSContext': [
1655         'requestIdleCallback', 'indexedDB'
1656     ],
1659 'WindowContext': {
1660     'concrete': True
1663 'WindowProxy': {
1664     'nativeType': 'mozilla::dom::WindowProxyHolder',
1665     'headerFile': 'mozilla/dom/WindowProxyHolder.h',
1666     'concrete': False
1669 'WindowRoot': {
1670     'nativeType': 'nsWindowRoot'
1673 'WorkerDebuggerGlobalScope': {
1674     'headerFile': 'mozilla/dom/WorkerScope.h',
1675     'implicitJSContext': [
1676         'dump', 'clearConsoleEvents', 'reportError', 'setConsoleEventHandler',
1677     ],
1680 'WorkerGlobalScope': {
1681     'headerFile': 'mozilla/dom/WorkerScope.h',
1682     'implicitJSContext': [ 'importScripts', 'indexedDB' ],
1685 'Worklet': {
1686     # Paint worklets just use the Worklet interface.
1687     'concrete': True,
1688     'implicitJSContext': [ 'addModule' ],
1691 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
1692 'WritableStream': {
1693     'implicitJSContext': ['close'],
1696 'WritableStreamDefaultWriter': {
1697     'implicitJSContext': ['close', 'releaseLock'],
1700 'XMLSerializer': {
1701     'nativeType': 'nsDOMSerializer',
1702     'wrapperCache': False
1705 'XPathEvaluator': {
1706     'wrapperCache': False,
1707     'concrete': True,
1710 'XPathExpression': {
1711     'wrapperCache': False,
1714 'XRPose': {
1715    'concrete': True,
1718 'XRReferenceSpace': {
1719     'concrete': True,
1722 'XRSpace': {
1723     'concrete': True,
1726 'XSLTProcessor': {
1727     'nativeType': 'txMozillaXSLTProcessor',
1730 'XULElement': {
1731     'nativeType': 'nsXULElement',
1734 # WebExtension API
1736 'ExtensionBrowser': {
1737     'headerFile': 'mozilla/extensions/ExtensionBrowser.h',
1738     'nativeType': 'mozilla::extensions::ExtensionBrowser',
1741 'ExtensionMockAPI': {
1742     'headerFile': 'mozilla/extensions/ExtensionMockAPI.h',
1743     'nativeType': 'mozilla::extensions::ExtensionMockAPI',
1746 'ExtensionBrowserSettings': {
1747     'headerFile': 'mozilla/extensions/ExtensionBrowserSettings.h',
1748     'nativeType': 'mozilla::extensions::ExtensionBrowserSettings',
1751 'ExtensionBrowserSettingsColorManagement': {
1752     'headerFile': 'mozilla/extensions/ExtensionBrowserSettingsColorManagement.h',
1753     'nativeType': 'mozilla::extensions::ExtensionBrowserSettingsColorManagement',
1756 'ExtensionDns': {
1757     'headerFile': 'mozilla/extensions/ExtensionDns.h',
1758     'nativeType': 'mozilla::extensions::ExtensionDns',
1761 'ExtensionEventManager': {
1762     'headerFile': 'mozilla/extensions/ExtensionEventManager.h',
1763     'nativeType': 'mozilla::extensions::ExtensionEventManager',
1766 'ExtensionPort': {
1767     'headerFile': 'mozilla/extensions/ExtensionPort.h',
1768     'nativeType': 'mozilla::extensions::ExtensionPort',
1771 'ExtensionProxy': {
1772     'headerFile': 'mozilla/extensions/ExtensionProxy.h',
1773     'nativeType': 'mozilla::extensions::ExtensionProxy',
1776 'ExtensionRuntime': {
1777     'headerFile': 'mozilla/extensions/ExtensionRuntime.h',
1778     'nativeType': 'mozilla::extensions::ExtensionRuntime',
1781 'ExtensionScripting': {
1782     'headerFile': 'mozilla/extensions/ExtensionScripting.h',
1783     'nativeType': 'mozilla::extensions::ExtensionScripting',
1786 'ExtensionSetting': {
1787     'headerFile': 'mozilla/extensions/ExtensionSetting.h',
1788     'nativeType': 'mozilla::extensions::ExtensionSetting',
1791 'ExtensionTest': {
1792     'headerFile': 'mozilla/extensions/ExtensionTest.h',
1793     'nativeType': 'mozilla::extensions::ExtensionTest',
1796 'ExtensionAlarms': {
1797     'headerFile': 'mozilla/extensions/ExtensionAlarms.h',
1798     'nativeType': 'mozilla::extensions::ExtensionAlarms',
1801 ####################################
1802 # Test Interfaces of various sorts #
1803 ####################################
1805 'TestInterface' : {
1806         # Keep this in sync with TestExampleInterface
1807         'headerFile': 'TestBindingHeader.h',
1808         'register': False,
1809         },
1811 'TestParentInterface' : {
1812         'headerFile': 'TestBindingHeader.h',
1813         'register': False,
1814         },
1816 'TestChildInterface' : {
1817         'headerFile': 'TestBindingHeader.h',
1818         'register': False,
1819         },
1821 'TestCImplementedInterface' : {
1822         'headerFile': 'TestCImplementedInterface.h',
1823         'register': False,
1824         },
1826 'TestCImplementedInterface2' : {
1827         'headerFile': 'TestCImplementedInterface.h',
1828         'register': False,
1829         },
1831 'TestJSImplInterface' : {
1832         # Keep this in sync with TestExampleInterface
1833         'headerFile': 'TestJSImplGenBinding.h',
1834         'register': False,
1835         },
1837 'TestJSImplInterface2' : {
1838         'headerFile': 'TestJSImplGenBinding.h',
1839         'register': False
1840         },
1842 'TestJSImplInterface3' : {
1843         'headerFile': 'TestJSImplGenBinding.h',
1844         'register': False
1845         },
1847 'TestJSImplInterface4' : {
1848         'headerFile': 'TestJSImplGenBinding.h',
1849         'register': False
1850         },
1852 'TestJSImplInterface5' : {
1853         'headerFile': 'TestJSImplGenBinding.h',
1854         'register': False
1855         },
1857 'TestJSImplInterface6' : {
1858         'headerFile': 'TestJSImplGenBinding.h',
1859         'register': False
1860         },
1862 'TestNavigator' : {
1863         'headerFile': 'TestJSImplGenBinding.h',
1864         'register' : False
1865         },
1867 'TestNavigatorWithConstructor' : {
1868         'headerFile': 'TestJSImplGenBinding.h',
1869         'register' : False
1870         },
1872 'TestExternalInterface' : {
1873         'nativeType': 'mozilla::dom::TestExternalInterface',
1874         'headerFile': 'TestBindingHeader.h',
1875         'register': False
1876         },
1878 'TestNonWrapperCacheInterface' : {
1879         'headerFile': 'TestBindingHeader.h',
1880         'register': False,
1881         'wrapperCache': False
1882         },
1884 'IndirectlyImplementedInterface': {
1885         'headerFile': 'TestBindingHeader.h',
1886         'register': False,
1887         'castable': False,
1888         },
1890 'OnlyForUseInConstructor' : {
1891         'headerFile': 'TestBindingHeader.h',
1892         'register': False
1893         },
1895 'ImplementedInterface' : {
1896         'headerFile': 'TestBindingHeader.h',
1897         'register': False,
1898         },
1900 'ImplementedInterfaceParent' : {
1901         'headerFile': 'TestBindingHeader.h',
1902         'register': False
1903         },
1905 'DiamondImplements' : {
1906         'headerFile': 'TestBindingHeader.h',
1907         'register': False
1908         },
1910 'DiamondBranch1A' : {
1911         'headerFile': 'TestBindingHeader.h',
1912         'register': False
1913         },
1915 'DiamondBranch1B' : {
1916         'headerFile': 'TestBindingHeader.h',
1917         'register': False
1918         },
1920 'DiamondBranch2A' : {
1921         'headerFile': 'TestBindingHeader.h',
1922         'register': False
1923         },
1925 'DiamondBranch2B' : {
1926         'headerFile': 'TestBindingHeader.h',
1927         'register': False
1928         },
1930 'TestIndexedGetterInterface' : {
1931         'headerFile': 'TestBindingHeader.h',
1932         'register': False
1933         },
1935 'TestNamedGetterInterface' : {
1936         'headerFile': 'TestBindingHeader.h',
1937         'register': False
1938         },
1940 'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
1941         'headerFile': 'TestBindingHeader.h',
1942         'register': False
1943         },
1945 'TestIndexedAndNamedGetterInterface' : {
1946         'headerFile': 'TestBindingHeader.h',
1947         'register': False
1948         },
1950 'TestIndexedSetterInterface' : {
1951         'headerFile': 'TestBindingHeader.h',
1952         'register': False
1953         },
1955 'TestNamedSetterInterface' : {
1956         'headerFile': 'TestBindingHeader.h',
1957         'register': False
1958         },
1960 'TestIndexedAndNamedSetterInterface' : {
1961         'headerFile': 'TestBindingHeader.h',
1962         'register': False
1963         },
1965 'TestIndexedAndNamedGetterAndSetterInterface' : {
1966         'headerFile': 'TestBindingHeader.h',
1967         'register': False,
1968         },
1970 'TestRenamedInterface' : {
1971         'headerFile': 'TestBindingHeader.h',
1972         'register': False,
1973         'nativeType': 'nsRenamedInterface'
1974         },
1976 'TestNamedDeleterInterface' : {
1977         'headerFile': 'TestBindingHeader.h',
1978         'register': False
1979         },
1981 'TestNamedDeleterWithRetvalInterface' : {
1982         'headerFile': 'TestBindingHeader.h',
1983         'register': False
1984         },
1986 'TestCppKeywordNamedMethodsInterface' : {
1987         'headerFile': 'TestBindingHeader.h',
1988         'register': False
1989         },
1991 'TestExampleInterface' : {
1992         # Keep this in sync with TestInterface
1993         'headerFile': 'TestExampleInterface-example.h',
1994         'register': False,
1995         },
1997 'TestExampleWorkerInterface' : {
1998         'headerFile': 'TestExampleWorkerInterface-example.h',
1999         'register': False,
2000         },
2002 'TestExampleProxyInterface' : {
2003         'headerFile': 'TestExampleProxyInterface-example.h',
2004         'register': False
2005         },
2007 'TestExampleThrowingConstructorInterface' : {
2008         'headerFile': 'TestExampleThrowingConstructorInterface-example.h',
2009         'register': False,
2010         },
2012 'TestDeprecatedInterface' : {
2013         # Keep this in sync with TestExampleInterface
2014         'headerFile': 'TestBindingHeader.h',
2015         'register': False
2016         },
2018 'TestInterfaceWithPromiseConstructorArg' : {
2019         'headerFile': 'TestBindingHeader.h',
2020         'register': False,
2021         },
2023 'TestSecureContextInterface' : {
2024         # Keep this in sync with TestExampleInterface
2025         'headerFile': 'TestBindingHeader.h',
2026         'register': False
2027         },
2029 'TestNamespace' : {
2030         'headerFile': 'TestBindingHeader.h',
2031         'register': False,
2032         },
2034 'TestRenamedNamespace' : {
2035         'headerFile': 'TestBindingHeader.h',
2036         'register': False,
2037         },
2039 'TestProtoObjectHackedNamespace' : {
2040         'headerFile': 'TestBindingHeader.h',
2041         'register': False,
2042         },
2044 'TestWorkerExposedInterface' : {
2045         'headerFile': 'TestBindingHeader.h',
2046         'register': False,
2047         },
2049 'TestHTMLConstructorInterface' : {
2050         'headerFile': 'TestBindingHeader.h',
2051         'register': False,
2052         },
2054 'TestThrowingConstructorInterface' : {
2055         'headerFile': 'TestBindingHeader.h',
2056         'register': False,
2057         },
2059 'TestCEReactionsInterface' : {
2060         'headerFile': 'TestBindingHeader.h',
2061         'register': False,
2062         },
2064 'TestAttributesOnTypes' : {
2065         'headerFile': 'TestBindingHeader.h',
2066         'register': False,
2067         },
2069 'TestPrefConstructorForInterface' : {
2070         'headerFile': 'TestBindingHeader.h',
2071         'register': False,
2072         },
2074 'TestConstructorForPrefInterface' : {
2075         'headerFile': 'TestBindingHeader.h',
2076         'register': False,
2077         },
2079 'TestPrefConstructorForDifferentPrefInterface' : {
2080         'headerFile': 'TestBindingHeader.h',
2081         'register': False,
2082         },
2084 'TestConstructorForSCInterface' : {
2085         'headerFile': 'TestBindingHeader.h',
2086         'register': False,
2087         },
2089 'TestSCConstructorForInterface' : {
2090         'headerFile': 'TestBindingHeader.h',
2091         'register': False,
2092         },
2094 'TestConstructorForFuncInterface' : {
2095         'headerFile': 'TestBindingHeader.h',
2096         'register': False,
2097         },
2099 'TestFuncConstructorForInterface' : {
2100         'headerFile': 'TestBindingHeader.h',
2101         'register': False,
2102         },
2104 'TestFuncConstructorForDifferentFuncInterface' : {
2105         'headerFile': 'TestBindingHeader.h',
2106         'register': False,
2107         },
2109 'TestPrefChromeOnlySCFuncConstructorForInterface' : {
2110         'headerFile': 'TestBindingHeader.h',
2111         'register': False,
2112         },
2115 # These are temporary, until they've been converted to use new DOM bindings
2116 def addExternalIface(iface, nativeType=None, headerFile=None,
2117                      notflattened=False):
2118     if iface in DOMInterfaces:
2119         raise Exception('Interface declared both as WebIDL and External interface')
2120     domInterface = {
2121         'concrete': False
2122     }
2123     if not nativeType is None:
2124         domInterface['nativeType'] = nativeType
2125     if not headerFile is None:
2126         domInterface['headerFile'] = headerFile
2127     domInterface['notflattened'] = notflattened
2128     DOMInterfaces[iface] = domInterface
2130 addExternalIface('Cookie', nativeType='nsICookie',
2131                  headerFile='nsICookie.h', notflattened=True)
2132 addExternalIface('ContentSecurityPolicy', nativeType='nsIContentSecurityPolicy',
2133                  notflattened=True)
2134 addExternalIface('HitRegionOptions', nativeType='nsISupports')
2135 addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
2136 addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True)
2137 addExternalIface('LoadContext', nativeType='nsILoadContext', notflattened=True)
2138 addExternalIface('LoadInfo', nativeType='nsILoadInfo',
2139                  headerFile='nsILoadInfo.h', notflattened=True)
2140 addExternalIface('XULControllers', nativeType='nsIControllers', notflattened=True)
2141 addExternalIface('MozObserver', nativeType='nsIObserver', notflattened=True)
2142 addExternalIface('MozTreeView', nativeType='nsITreeView',
2143                   headerFile='nsITreeView.h', notflattened=True)
2144 addExternalIface('MozWakeLockListener', headerFile='nsIDOMWakeLockListener.h')
2145 addExternalIface('nsIBrowserDOMWindow', nativeType='nsIBrowserDOMWindow',
2146                  notflattened=True)
2147 addExternalIface('nsIDOMWindowUtils', nativeType='nsIDOMWindowUtils', notflattened=True)
2148 addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=True)
2149 addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True)
2150 addExternalIface('nsILoadGroup', nativeType='nsILoadGroup',
2151                  headerFile='nsILoadGroup.h', notflattened=True)
2152 addExternalIface('nsIMediaDevice', nativeType='nsIMediaDevice',
2153                  notflattened=True)
2154 addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings',
2155                  notflattened=True)
2156 addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
2157 addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
2158 addExternalIface('nsISocketTransport', nativeType='nsISocketTransport',
2159                  notflattened=True)
2160 addExternalIface('nsITransportProvider', nativeType='nsITransportProvider')
2161 addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
2162                  notflattened=True)
2163 addExternalIface('nsISupports', nativeType='nsISupports')
2164 addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
2165 addExternalIface('nsIDOMProcessChild', nativeType='nsIDOMProcessChild', notflattened=True)
2166 addExternalIface('nsIDOMProcessParent', nativeType='nsIDOMProcessParent', notflattened=True)
2167 addExternalIface('nsIReferrerInfo', nativeType='nsIReferrerInfo', notflattened=True)
2168 addExternalIface('nsISecureBrowserUI', nativeType='nsISecureBrowserUI', notflattened=True)
2169 addExternalIface('nsIWebProgress', nativeType='nsIWebProgress', notflattened=True)
2170 addExternalIface('nsIWebNavigation', nativeType='nsIWebNavigation', notflattened=True)
2171 addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True)
2172 addExternalIface('nsIWebBrowserPersistDocumentReceiver',
2173                  nativeType='nsIWebBrowserPersistDocumentReceiver',
2174                  headerFile='nsIWebBrowserPersistDocument.h',
2175                  notflattened=True)
2176 addExternalIface('nsIWebProgressListener', nativeType='nsIWebProgressListener',
2177                  notflattened=True)
2178 addExternalIface('OutputStream', nativeType='nsIOutputStream',
2179                  notflattened=True)
2180 addExternalIface('Principal', nativeType='nsIPrincipal',
2181                  headerFile='nsIPrincipal.h', notflattened=True)
2182 addExternalIface('StackFrame', nativeType='nsIStackFrame',
2183                  headerFile='nsIException.h', notflattened=True)
2184 addExternalIface('RemoteTab', nativeType='nsIRemoteTab',
2185                  notflattened=True)
2186 addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
2187                  notflattened=True)
2188 addExternalIface('XULCommandDispatcher', notflattened=True)
2189 addExternalIface('nsISHistory', nativeType='nsISHistory', notflattened=True)
2190 addExternalIface('nsISHEntry', nativeType='nsISHEntry', notflattened=True)
2191 addExternalIface('ReferrerInfo', nativeType='nsIReferrerInfo')
2192 addExternalIface('nsIPermissionDelegateHandler',
2193                  nativeType='nsIPermissionDelegateHandler',
2194                  notflattened=True)
2195 addExternalIface('nsIOpenWindowInfo', nativeType='nsIOpenWindowInfo',
2196                  notflattened=True)
2197 addExternalIface('nsICookieJarSettings', nativeType='nsICookieJarSettings',
2198                  notflattened=True)
2199 addExternalIface('nsIGleanPing', headerFile='mozilla/glean/bindings/Ping.h',
2200                  nativeType='nsIGleanPing', notflattened=True)
2201 addExternalIface('nsISessionStoreRestoreData',
2202                  nativeType='nsISessionStoreRestoreData',
2203                  headerFile='nsISessionStoreRestoreData.h', notflattened=True)
2204 addExternalIface('nsIScreen', nativeType='nsIScreen',
2205                  headerFile='nsIScreen.h', notflattened=True)
2207 # The TemplatedAttributes dictionary has the interface name where the template
2208 # should be generated as the key. The values are lists of dictionaries, where
2209 # each dictionary corresponds to one template. The dictionary contains:
2211 #   template  the template's name
2212 #   getter    the name for the native getter to call
2213 #   setter    the name for the native setter to call
2214 #   argument  a tuple for the additional argument that should be passed to the
2215 #             native getter and setter, containing the type for the argument
2216 #             and a name for the argument. The value will be supplied by the
2217 #             [BindingTemplate] extended attribute.
2218 #   attrName  a string which in the generated C++ code would yield a
2219 #             |const char*| that contains the attribute's name
2221 TemplatedAttributes = {
2223 'CSS2Properties': [
2224     {
2225         'template': 'CSS2Property',
2226         'getter': 'GetPropertyValue',
2227         'setter': 'SetPropertyValue',
2228         'argument': ('nsCSSPropertyID', 'id'),
2229         'attrName': 'nsCSSProps::PropertyIDLName(id)',
2230     },