Bug 1732409 let fake:true getUserMedia() parameter override loopback prefs r=jib
[gecko.git] / dom / bindings / Bindings.conf
blobf6d4ad7e9a600ed91c959c2b6a4ca28f737f891d
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' ]
48 'AnonymousContent': {
49     'wrapperCache': False
52 'ArchiveReader': {
53     'nativeType': 'mozilla::dom::archivereader::ArchiveReader',
56 'ArchiveRequest': {
57     'nativeType': 'mozilla::dom::archivereader::ArchiveRequest',
60 'AudioBuffer': {
61     'implicitJSContext': [ 'copyToChannel' ],
64 'AudioBufferSourceNode': {
65     'implicitJSContext': [ 'buffer' ],
68 'AudioWorklet': {
69     'nativeType': 'mozilla::dom::Worklet',
72 'AudioWorkletGlobalScope': {
73     'implicitJSContext': [ 'registerProcessor' ],
76 'BarProp': {
77     'headerFile': 'mozilla/dom/BarProps.h',
80 'BaseAudioContext': {
81     'nativeType': 'mozilla::dom::AudioContext',
84 'BatteryManager': {
85     'nativeType': 'mozilla::dom::battery::BatteryManager',
86     'headerFile': 'BatteryManager.h'
89 'BrowsingContext': {
90     'concrete': True,
93 'Cache': {
94     'implicitJSContext': [ 'add', 'addAll', 'match', 'matchAll', 'put',
95                            'delete', 'keys' ],
96     'nativeType': 'mozilla::dom::cache::Cache',
99 'CacheStorage': {
100     'implicitJSContext': [ 'match' ],
101     'nativeType': 'mozilla::dom::cache::CacheStorage',
104 'CanvasRenderingContext2D': {
105     'implicitJSContext': [
106         'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
107     ],
110 'CaretPosition' : {
111     'nativeType': 'nsDOMCaretPosition',
114 'ChannelWrapper': {
115     'nativeType': 'mozilla::extensions::ChannelWrapper',
118 'Client' : {
119     'concrete': True,
122 'ClonedErrorHolder': {
123     'wrapperCache': False
126 'console': {
127     'nativeType': 'mozilla::dom::Console',
130 'ConsoleInstance': {
131     'implicitJSContext': ['clear', 'count', 'countReset', 'groupEnd', 'time', 'timeEnd'],
134 'ConvolverNode': {
135     'implicitJSContext': [ 'buffer' ],
138 'Credential' : {
139     'concrete': True,
142 'Crypto' : {
143     'headerFile': 'Crypto.h'
146 'CSS2Properties': {
147     'nativeType': 'nsDOMCSSDeclaration'
150 'CSSConditionRule': {
151     'nativeType': 'mozilla::css::ConditionRule',
152     'headerFile': 'mozilla/css/GroupRule.h',
155 'CSSGroupingRule': {
156     'nativeType': 'mozilla::css::GroupRule',
159 'CSSLexer': {
160     'wrapperCache': False
163 'CSSRule': {
164     'nativeType': 'mozilla::css::Rule'
167 'CSSStyleDeclaration': {
168     'nativeType': 'nsICSSDeclaration',
169     # Concrete because of the font-face mess.
170     'concrete': True,
173 'CSSStyleRule': {
174     'nativeType': 'mozilla::BindingStyleRule',
177 'CSSStyleSheet': {
178     'nativeType': 'mozilla::StyleSheet',
181 'CustomElementRegistry': {
182     'implicitJSContext': ['define'],
185 'DebuggerNotification': {
186     'concrete': True,
188 'CallbackDebuggerNotification': {
189     'concrete': True,
192 'DedicatedWorkerGlobalScope': {
193     'headerFile': 'mozilla/dom/WorkerScope.h',
196 'DeviceAcceleration': {
197     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
200 'DeviceRotationRate': {
201     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
204 'DominatorTree': {
205     'nativeType': 'mozilla::devtools::DominatorTree'
208 'DOMException': {
209     'implicitJSContext': [ 'filename', 'lineNumber', 'stack' ],
212 'DOMMatrixReadOnly': {
213     'headerFile': 'mozilla/dom/DOMMatrix.h',
216 'DOMPointReadOnly': {
217     'headerFile': 'mozilla/dom/DOMPoint.h',
220 'DOMRectList': {
221     'headerFile': 'mozilla/dom/DOMRect.h',
224 'DOMRectReadOnly': {
225     'headerFile': 'mozilla/dom/DOMRect.h',
228 'DOMRequest': {
229     'concrete': True,
232 'DOMStringMap': {
233     'nativeType': 'nsDOMStringMap'
236 'DOMTokenList': {
237     'nativeType': 'nsDOMTokenList',
240 'Element': {
241     'concrete': True,
244 'Event': {
245     'implicitJSContext': [ 'preventDefault' ],
248 'EventTarget': {
249     'jsImplParent': 'mozilla::DOMEventTargetHelper',
252 'Exception': {
253     'headerFile': 'mozilla/dom/DOMException.h',
254     'implicitJSContext': [ '__stringifier', 'filename', 'lineNumber', 'stack' ],
257 'ExtendableEvent': {
258     'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
259     'implicitJSContext': [ 'waitUntil' ],
262 'ExtendableMessageEvent': {
263     'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
266 'FetchEvent': {
267     'headerFile': 'ServiceWorkerEvents.h',
268     'implicitJSContext': [ 'respondWith' ],
271 'FileReader': {
272     'implicitJSContext': [ 'readAsArrayBuffer' ],
275 'FileReaderSync': {
276     'wrapperCache': False,
279 'FileSystemEntry': {
280     'concrete': True,
283 'FluentBundle': {
284     'nativeType': 'mozilla::intl::FluentBundle',
287 'FluentBundleAsyncIterator': {
288     'headerFile': 'mozilla/intl/L10nRegistry.h',
289     'nativeType': 'mozilla::intl::FluentBundleAsyncIterator',
292 'FluentBundleIterator': {
293     'headerFile': 'mozilla/intl/L10nRegistry.h',
294     'nativeType': 'mozilla::intl::FluentBundleIterator',
297 'FluentPattern': {
298     'headerFile': 'mozilla/intl/FluentBundle.h',
299     'nativeType': 'mozilla::intl::FluentPattern',
302 'FluentResource': {
303     'headerFile': 'mozilla/intl/FluentResource.h',
304     'nativeType': 'mozilla::intl::FluentResource',
307 'FontFaceSet': {
308     'implicitJSContext': [ 'load' ],
311 'FontFaceSetIterator': {
312     'wrapperCache': False,
315 'FrameLoader': {
316     'nativeType': 'nsFrameLoader',
319 'FuzzingFunctions': {
320     # The codegen is dumb, and doesn't understand that this interface is only a
321     # collection of static methods, so we have this `concrete: False` hack.
322     'concrete': False,
323     'headerFile': 'mozilla/dom/FuzzingFunctions.h',
326 'HeapSnapshot': {
327     'nativeType': 'mozilla::devtools::HeapSnapshot'
330 'History': {
331     'headerFile': 'nsHistory.h',
332     'nativeType': 'nsHistory'
335 'HTMLBaseElement': {
336     'nativeType': 'mozilla::dom::HTMLSharedElement'
339 'HTMLCollection': {
340     'nativeType': 'nsIHTMLCollection',
341     # nsContentList.h pulls in nsIHTMLCollection.h
342     'headerFile': 'nsContentList.h',
343     'concrete': True,
346 'HTMLDirectoryElement': {
347     'nativeType': 'mozilla::dom::HTMLSharedElement'
350 'HTMLDListElement': {
351     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
354 'HTMLDocument': {
355     'nativeType': 'nsHTMLDocument',
356     'concrete': True,
359 'HTMLElement': {
360     'nativeType': 'nsGenericHTMLElement',
363 'HTMLHeadElement': {
364     'nativeType': 'mozilla::dom::HTMLSharedElement'
367 'HTMLHtmlElement': {
368     'nativeType': 'mozilla::dom::HTMLSharedElement'
371 'HTMLOListElement': {
372     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
375 'HTMLParamElement': {
376     'nativeType': 'mozilla::dom::HTMLSharedElement'
379 'HTMLQuoteElement': {
380     'nativeType': 'mozilla::dom::HTMLSharedElement'
383 'HTMLUListElement': {
384     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
387 'IDBCursor': {
388     'implicitJSContext': [ 'delete' ],
389     'concrete': True,
392 'IDBCursorWithValue': {
393     'nativeType': 'mozilla::dom::IDBCursor',
396 'IDBDatabase': {
397     'implicitJSContext': [ 'transaction', 'createMutableFile' ],
400 'IDBFactory': {
401     'implicitJSContext': [ 'open', 'deleteDatabase', 'openForPrincipal',
402                            'deleteForPrincipal' ],
405 'IDBKeyRange': {
406     'wrapperCache': False,
407     'concrete': True,
410 'IDBLocaleAwareKeyRange': {
411     'headerFile': 'IDBKeyRange.h',
412     'wrapperCache': False,
415 'IDBObjectStore': {
416     'implicitJSContext': [ 'clear' ],
419 'IDBOpenDBRequest': {
420     'headerFile': 'IDBRequest.h'
423 'IDBRequest': {
424     'concrete': True,
427 'IDBVersionChangeEvent': {
428     'headerFile': 'IDBEvents.h',
431 'ImageData': {
432     'wrapperCache': False,
435 'InputStream': {
436     'nativeType': 'nsIInputStream',
437     'notflattened': True
440 'InspectorFontFace': {
441     'wrapperCache': False,
444 'IntersectionObserver': {
445     'nativeType': 'mozilla::dom::DOMIntersectionObserver',
448 'IntersectionObserverEntry': {
449     'nativeType': 'mozilla::dom::DOMIntersectionObserverEntry',
450     'headerFile': 'DOMIntersectionObserver.h',
453 'KeyEvent' : {
454     'concrete': False,
457 'L10nFileSource': {
458     'headerFile': 'mozilla/intl/FileSource.h',
459     'nativeType': 'mozilla::intl::L10nFileSource',
462 'L10nRegistry': {
463     'nativeType': 'mozilla::intl::L10nRegistry',
466 'LegacyMozTCPSocket': {
467     'headerFile': 'TCPSocket.h',
468     'wrapperCache': False,
471 'Localization': {
472     'nativeType': 'mozilla::intl::Localization',
475 'MatchGlob': {
476     'nativeType': 'mozilla::extensions::MatchGlob',
479 'MatchPattern': {
480     'nativeType': 'mozilla::extensions::MatchPattern',
483 'MatchPatternSet': {
484     'headerFile': 'mozilla/extensions/MatchPattern.h',
485     'nativeType': 'mozilla::extensions::MatchPatternSet',
488 'MediaCapabilitiesInfo' : {
489     'wrapperCache': False,
492 'MediaStream': {
493     'headerFile': 'DOMMediaStream.h',
494     'nativeType': 'mozilla::DOMMediaStream'
497 'MediaStreamList': {
498     'headerFile': 'MediaStreamList.h',
501 'MediaRecorder': {
502     'headerFile': 'MediaRecorder.h',
505 'MimeType': {
506     'headerFile' : 'nsMimeTypeArray.h',
507     'nativeType': 'nsMimeType',
510 'MimeTypeArray': {
511     'nativeType': 'nsMimeTypeArray',
514 'MozCanvasPrintState': {
515     'headerFile': 'mozilla/dom/HTMLCanvasElement.h',
516     'nativeType': 'mozilla::dom::HTMLCanvasPrintState',
519 'MozChannel': {
520     'nativeType': 'nsIChannel',
521     'notflattened': True
524 'MozDocumentMatcher': {
525     'nativeType': 'mozilla::extensions::MozDocumentMatcher',
526     'headerFile': 'mozilla/extensions/WebExtensionContentScript.h',
529 'MozDocumentObserver': {
530     'nativeType': 'mozilla::extensions::DocumentObserver',
533 'MozSharedMap': {
534     'nativeType': 'mozilla::dom::ipc::SharedMap',
535     'concrete': True,
538 'MozWritableSharedMap': {
539     'headerFile': 'mozilla/dom/ipc/SharedMap.h',
540     'nativeType': 'mozilla::dom::ipc::WritableSharedMap',
543 'MozSharedMapChangeEvent': {
544     'nativeType': 'mozilla::dom::ipc::SharedMapChangeEvent',
547 'MozStorageAsyncStatementParams': {
548     'headerFile': 'mozilla/storage/mozStorageAsyncStatementParams.h',
549     'nativeType': 'mozilla::storage::AsyncStatementParams',
552 'MozStorageStatementParams': {
553     'headerFile': 'mozilla/storage/mozStorageStatementParams.h',
554     'nativeType': 'mozilla::storage::StatementParams',
557 'MozStorageStatementRow': {
558     'headerFile': 'mozilla/storage/mozStorageStatementRow.h',
559     'nativeType': 'mozilla::storage::StatementRow',
562 'MozQueryInterface': {
563     'wrapperCache': False,
566 'MutationObserver': {
567     'nativeType': 'nsDOMMutationObserver',
570 'MutationRecord': {
571     'nativeType': 'nsDOMMutationRecord',
572     'headerFile': 'nsDOMMutationObserver.h',
575 'NamedNodeMap': {
576     'nativeType': 'nsDOMAttributeMap',
579 'NetworkInformation': {
580     'nativeType': 'mozilla::dom::network::Connection',
583 'Node': {
584     'nativeType': 'nsINode',
587 'NodeIterator': {
588     'wrapperCache': False,
591 'NodeList': {
592     'nativeType': 'nsINodeList',
593     'concrete': True,
596 'OfflineAudioContext': {
597     'nativeType': 'mozilla::dom::AudioContext',
600 'OfflineResourceList': {
601     'nativeType': 'nsDOMOfflineResourceList',
604 'PaintRequestList': {
605     'headerFile': 'mozilla/dom/PaintRequest.h',
608 'Path2D': {
609     'nativeType': 'mozilla::dom::CanvasPath',
610     'headerFile': 'CanvasPath.h'
613 'PeerConnectionImpl': {
614     'nativeType': 'mozilla::PeerConnectionImpl',
615     'headerFile': 'PeerConnectionImpl.h',
616     'wrapperCache': False
619 'PerformanceResourceTiming' : {
620     'concrete': True,
623 'PlacesBookmark' : {
624     'concrete': True,
627 'PlacesEvent' : {
628     'concrete': True,
631 'TransceiverImpl': {
632     'nativeType': 'mozilla::TransceiverImpl',
633     'headerFile': 'TransceiverImpl.h'
636 'Plugin': {
637     'headerFile' : 'nsPluginArray.h',
638     'nativeType': 'nsPluginElement',
641 'PluginArray': {
642     'nativeType': 'nsPluginArray',
645 'PluginTag': {
646     'nativeType': 'nsIPluginTag',
649 'Policy': {
650     'nativeType': 'mozilla::dom::FeaturePolicy',
653 'PromiseNativeHandler': {
654     'wrapperCache': False,
657 'PushEvent': {
658     'headerFile': 'ServiceWorkerEvents.h',
661 'PushMessageData': {
662     'headerFile': 'ServiceWorkerEvents.h',
665 'Range': {
666     'nativeType': 'nsRange',
669 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
670 'ReadableStream': {
671     'implicitJSContext': ['getReader', 'tee'],
674 'ReadableStreamDefaultController': {
675     'implicitJSContext': ['close'],
678 'ReadableStreamDefaultReader': {
679     'implicitJSContext': ['read'],
682 'Request': {
683     'implicitJSContext': [ 'arrayBuffer', 'blob', 'formData', 'json', 'text' ],
686 'ResizeObserverEntry': {
687     'nativeType': 'mozilla::dom::ResizeObserverEntry',
688     'headerFile': 'mozilla/dom/ResizeObserver.h',
691 'ResizeObserverSize': {
692     'nativeType': 'mozilla::dom::ResizeObserverSize',
693     'headerFile': 'mozilla/dom/ResizeObserver.h',
696 'Response': {
697     'implicitJSContext': [ 'arrayBuffer', 'blob', 'formData', 'json', 'text',
698                            'clone', 'cloneUnfiltered' ],
701 'RTCDataChannel': {
702     'nativeType': 'nsDOMDataChannel',
705 'RTCDtlsTransport': {
706     'headerFile': 'RTCDtlsTransport.h'
709 'RTCDTMFSender': {
710     'headerFile': 'RTCDTMFSender.h'
713 'RTCRtpReceiver': {
714     'headerFile': 'RTCRtpReceiver.h'
717 'RTCStatsReport': {
718     'headerFile': 'RTCStatsReport.h'
721 'Screen': {
722     'nativeType': 'nsScreen',
725 'ServiceWorkerGlobalScope': {
726     'headerFile': 'mozilla/dom/WorkerScope.h',
729 'ServiceWorkerRegistration': {
730     'implicitJSContext': [ 'pushManager' ],
733 'SharedWorkerGlobalScope': {
734     'headerFile': 'mozilla/dom/WorkerScope.h',
737 'StreamFilter': {
738     'nativeType': 'mozilla::extensions::StreamFilter',
741 'StreamFilterDataEvent': {
742     'nativeType': 'mozilla::extensions::StreamFilterDataEvent',
743     'headerFile': 'mozilla/extensions/StreamFilterEvents.h',
746 'StructuredCloneHolder': {
747     'nativeType': 'mozilla::dom::StructuredCloneBlob',
748     'wrapperCache': False,
751 'StyleSheet': {
752     'nativeType': 'mozilla::StyleSheet',
753     'headerFile': 'mozilla/StyleSheetInlines.h',
756 'SVGAnimatedAngle': {
757     'nativeType': 'mozilla::dom::DOMSVGAnimatedAngle',
758     'headerFile': 'DOMSVGAnimatedAngle.h',
761 'SVGAnimatedBoolean': {
762     'nativeType': 'mozilla::dom::DOMSVGAnimatedBoolean',
763     'headerFile': 'DOMSVGAnimatedBoolean.h',
766 'SVGAnimatedEnumeration': {
767     'nativeType': 'mozilla::dom::DOMSVGAnimatedEnumeration',
768     'headerFile': 'DOMSVGAnimatedEnumeration.h',
771 'SVGAnimatedInteger': {
772     'nativeType': 'mozilla::dom::DOMSVGAnimatedInteger',
773     'headerFile': 'DOMSVGAnimatedInteger.h',
776 'SVGAnimatedPreserveAspectRatio': {
777     'nativeType': 'mozilla::dom::DOMSVGAnimatedPreserveAspectRatio',
778     'headerFile': 'SVGAnimatedPreserveAspectRatio.h'
781 'SVGAnimatedLength': {
782     'nativeType': 'mozilla::dom::DOMSVGAnimatedLength',
783     'headerFile': 'DOMSVGAnimatedLength.h',
786 'SVGAnimatedLengthList': {
787     'nativeType': 'mozilla::dom::DOMSVGAnimatedLengthList',
788     'headerFile': 'DOMSVGAnimatedLengthList.h',
791 'SVGAnimatedNumber': {
792     'nativeType': 'mozilla::dom::DOMSVGAnimatedNumber',
793     'headerFile': 'DOMSVGAnimatedNumber.h',
796 'SVGAnimatedNumberList': {
797     'nativeType': 'mozilla::dom::DOMSVGAnimatedNumberList',
798     'headerFile': 'DOMSVGAnimatedNumberList.h'
801 'SVGAnimatedString': {
802     'nativeType': 'mozilla::dom::DOMSVGAnimatedString',
803     'headerFile': 'DOMSVGAnimatedString.h',
806 'SVGAnimatedTransformList': {
807     'nativeType': 'mozilla::dom::DOMSVGAnimatedTransformList',
808     'headerFile': 'DOMSVGAnimatedTransformList.h'
811 'SVGAngle': {
812     'nativeType': 'mozilla::dom::DOMSVGAngle',
813     'headerFile': 'DOMSVGAngle.h'
816 'SVGElement': {
817     'concrete': True,
820 'SVGFEFuncAElement': {
821     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
824 'SVGFEFuncBElement': {
825     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
828 'SVGFEFuncGElement': {
829     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
832 'SVGFEFuncRElement': {
833     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
836 'SVGLength': {
837     'nativeType': 'mozilla::dom::DOMSVGLength',
838     'headerFile': 'DOMSVGLength.h'
841 'SVGLengthList': {
842     'nativeType': 'mozilla::dom::DOMSVGLengthList',
843     'headerFile': 'DOMSVGLengthList.h'
846 'SVGLinearGradientElement': {
847     'headerFile': 'mozilla/dom/SVGGradientElement.h',
850 'SVGNumber': {
851     'nativeType': 'mozilla::dom::DOMSVGNumber',
852     'headerFile': 'DOMSVGNumber.h',
855 'SVGNumberList': {
856     'nativeType': 'mozilla::dom::DOMSVGNumberList',
857     'headerFile': 'DOMSVGNumberList.h'
860 'SVGPathSeg': {
861     'nativeType': 'mozilla::dom::DOMSVGPathSeg',
862     'headerFile': 'DOMSVGPathSeg.h',
865 'SVGPathSegClosePath': {
866     'nativeType': 'mozilla::dom::DOMSVGPathSegClosePath',
867     'headerFile': 'DOMSVGPathSeg.h'
870 'SVGPathSegMovetoAbs': {
871     'nativeType': 'mozilla::dom::DOMSVGPathSegMovetoAbs',
872     'headerFile': 'DOMSVGPathSeg.h'
875 'SVGPathSegMovetoRel': {
876     'nativeType': 'mozilla::dom::DOMSVGPathSegMovetoRel',
877     'headerFile': 'DOMSVGPathSeg.h'
880 'SVGPathSegLinetoAbs': {
881     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoAbs',
882     'headerFile': 'DOMSVGPathSeg.h'
885 'SVGPathSegLinetoRel': {
886     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoRel',
887     'headerFile': 'DOMSVGPathSeg.h'
890 'SVGPathSegCurvetoCubicAbs': {
891     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicAbs',
892     'headerFile': 'DOMSVGPathSeg.h'
895 'SVGPathSegCurvetoCubicRel': {
896     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicRel',
897     'headerFile': 'DOMSVGPathSeg.h'
900 'SVGPathSegCurvetoQuadraticAbs': {
901     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticAbs',
902     'headerFile': 'DOMSVGPathSeg.h'
905 'SVGPathSegCurvetoQuadraticRel': {
906     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticRel',
907     'headerFile': 'DOMSVGPathSeg.h'
910 'SVGPathSegArcAbs': {
911     'nativeType': 'mozilla::dom::DOMSVGPathSegArcAbs',
912     'headerFile': 'DOMSVGPathSeg.h'
915 'SVGPathSegArcRel': {
916     'nativeType': 'mozilla::dom::DOMSVGPathSegArcRel',
917     'headerFile': 'DOMSVGPathSeg.h'
920 'SVGPathSegLinetoHorizontalAbs': {
921     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoHorizontalAbs',
922     'headerFile': 'DOMSVGPathSeg.h'
925 'SVGPathSegLinetoHorizontalRel': {
926     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoHorizontalRel',
927     'headerFile': 'DOMSVGPathSeg.h'
930 'SVGPathSegLinetoVerticalAbs': {
931     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoVerticalAbs',
932     'headerFile': 'DOMSVGPathSeg.h'
935 'SVGPathSegLinetoVerticalRel': {
936     'nativeType': 'mozilla::dom::DOMSVGPathSegLinetoVerticalRel',
937     'headerFile': 'DOMSVGPathSeg.h'
940 'SVGPathSegCurvetoCubicSmoothAbs': {
941     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicSmoothAbs',
942     'headerFile': 'DOMSVGPathSeg.h'
945 'SVGPathSegCurvetoCubicSmoothRel': {
946     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoCubicSmoothRel',
947     'headerFile': 'DOMSVGPathSeg.h'
950 'SVGPathSegCurvetoQuadraticSmoothAbs': {
951     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticSmoothAbs',
952     'headerFile': 'DOMSVGPathSeg.h'
955 'SVGPathSegCurvetoQuadraticSmoothRel': {
956     'nativeType': 'mozilla::dom::DOMSVGPathSegCurvetoQuadraticSmoothRel',
957     'headerFile': 'DOMSVGPathSeg.h'
960 'SVGPathSegList': {
961     'nativeType': 'mozilla::dom::DOMSVGPathSegList',
962     'headerFile': 'DOMSVGPathSegList.h'
965 'SVGPoint': {
966     'nativeType': 'mozilla::dom::DOMSVGPoint',
967     'headerFile': 'DOMSVGPoint.h'
970 'SVGPointList': {
971     'nativeType': 'mozilla::dom::DOMSVGPointList',
972     'headerFile': 'DOMSVGPointList.h'
975 'SVGPreserveAspectRatio': {
976     'nativeType': 'mozilla::dom::DOMSVGPreserveAspectRatio',
977     'headerFile': 'SVGPreserveAspectRatio.h'
980 'SVGRadialGradientElement': {
981     'headerFile': 'mozilla/dom/SVGGradientElement.h',
984 'SVGStringList': {
985     'nativeType': 'mozilla::dom::DOMSVGStringList',
986     'headerFile': 'DOMSVGStringList.h',
989 'SVGTransform': {
990     'nativeType': 'mozilla::dom::DOMSVGTransform',
991     'headerFile': 'DOMSVGTransform.h',
994 'SVGTransformList': {
995     'nativeType': 'mozilla::dom::DOMSVGTransformList',
996     'headerFile': 'DOMSVGTransformList.h'
999 'SVGUnitTypes' : {
1000     # Maybe should be a namespace.
1001     'concrete': False,
1004 'SVGZoomAndPan' : {
1005     # Part of a kinda complicated legacy setup for putting some constants on
1006     # both interfaces and this thing, which ideally should be a namespace.
1007     'concrete': False,
1010 'SyncReadFile': {
1011     'headerFile': 'mozilla/dom/IOUtils.h',
1014 'TelemetryStopwatch': {
1015     'nativeType': 'mozilla::telemetry::Stopwatch',
1018 'TestFunctions': {
1019     'wrapperCache': False
1022 'Text': {
1023     # Total hack to allow binding code to realize that nsTextNode can
1024     # in fact be cast to Text.
1025     'headerFile': 'nsTextNode.h',
1028 'TextDecoder': {
1029     'wrapperCache': False
1032 'TextEncoder': {
1033     'wrapperCache': False
1036 'TextMetrics': {
1037     'wrapperCache': False
1040 'TouchList': {
1041     'headerFile': 'mozilla/dom/TouchEvent.h',
1044 'TreeColumn': {
1045     'nativeType': 'nsTreeColumn',
1046     'headerFile': 'nsTreeColumns.h',
1049 'TreeColumns': {
1050     'nativeType': 'nsTreeColumns',
1053 'TreeContentView': {
1054     'nativeType': 'nsTreeContentView',
1057 'TreeWalker': {
1058     'wrapperCache': False,
1061 'UserInteraction': {
1062     'nativeType': 'mozilla::telemetry::UserInteractionStopwatch',
1063     'headerFile': 'mozilla/telemetry/Stopwatch.h',
1066 'VisualViewport': {
1067     'nativeType': 'mozilla::dom::VisualViewport',
1070 'VTTCue': {
1071     'nativeType': 'mozilla::dom::TextTrackCue'
1074 'VTTRegion': {
1075   'nativeType': 'mozilla::dom::TextTrackRegion',
1078 'WebExtensionContentScript': {
1079     'nativeType': 'mozilla::extensions::WebExtensionContentScript',
1082 'WebExtensionPolicy': {
1083     'nativeType': 'mozilla::extensions::WebExtensionPolicy',
1086 'WindowClient': {
1087     'nativeType': 'mozilla::dom::Client',
1090 'WindowGlobalChild': {
1091     'implicitJSContext': ['getActor'],
1094 'WindowGlobalParent': {
1095     'implicitJSContext': ['getActor'],
1098 'WebGLActiveInfo': {
1099     'nativeType': 'mozilla::WebGLActiveInfoJS',
1100     'headerFile': 'ClientWebGLContext.h',
1101     'wrapperCache': False
1104 'WebGLBuffer': {
1105     'nativeType': 'mozilla::WebGLBufferJS',
1106     'headerFile': 'ClientWebGLContext.h'
1109 'EXT_float_blend': {
1110     'nativeType': 'mozilla::ClientWebGLExtensionFloatBlend',
1111     'headerFile': 'ClientWebGLExtensions.h'
1114 'EXT_texture_compression_bptc': {
1115     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureBPTC',
1116     'headerFile': 'ClientWebGLExtensions.h'
1119 'EXT_texture_compression_rgtc': {
1120     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureRGTC',
1121     'headerFile': 'ClientWebGLExtensions.h'
1124 'EXT_texture_norm16': {
1125     'nativeType': 'mozilla::ClientWebGLExtensionTextureNorm16',
1126     'headerFile': 'ClientWebGLExtensions.h'
1129 'OES_fbo_render_mipmap': {
1130     'nativeType': 'mozilla::ClientWebGLExtensionFBORenderMipmap',
1131     'headerFile': 'ClientWebGLExtensions.h'
1134 'OVR_multiview2': {
1135     'nativeType': 'mozilla::ClientWebGLExtensionMultiview',
1136     'headerFile': 'ClientWebGLExtensions.h'
1139 'WEBGL_compressed_texture_astc': {
1140     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureASTC',
1141     'headerFile': 'ClientWebGLExtensions.h'
1144 'WEBGL_compressed_texture_etc': {
1145     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureES3',
1146     'headerFile': 'ClientWebGLExtensions.h'
1149 'WEBGL_compressed_texture_etc1': {
1150     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureETC1',
1151     'headerFile': 'ClientWebGLExtensions.h'
1154 'WEBGL_compressed_texture_pvrtc': {
1155     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTexturePVRTC',
1156     'headerFile': 'ClientWebGLExtensions.h'
1159 'WEBGL_compressed_texture_s3tc': {
1160     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureS3TC',
1161     'headerFile': 'ClientWebGLExtensions.h'
1164 'WEBGL_compressed_texture_s3tc_srgb': {
1165     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureS3TC_SRGB',
1166     'headerFile': 'ClientWebGLExtensions.h'
1169 'WEBGL_depth_texture': {
1170     'nativeType': 'mozilla::ClientWebGLExtensionDepthTexture',
1171     'headerFile': 'ClientWebGLExtensions.h'
1174 'WEBGL_debug_renderer_info': {
1175     'nativeType': 'mozilla::ClientWebGLExtensionDebugRendererInfo',
1176     'headerFile': 'ClientWebGLExtensions.h'
1179 'WEBGL_debug_shaders': {
1180     'nativeType': 'mozilla::ClientWebGLExtensionDebugShaders',
1181     'headerFile': 'ClientWebGLExtensions.h'
1184 'WEBGL_explicit_present': {
1185     'nativeType': 'mozilla::ClientWebGLExtensionExplicitPresent',
1186     'headerFile': 'ClientWebGLExtensions.h'
1189 'OES_draw_buffers_indexed': {
1190     'nativeType': 'mozilla::ClientWebGLExtensionDrawBuffersIndexed',
1191     'headerFile': 'ClientWebGLExtensions.h'
1194 'OES_element_index_uint': {
1195     'nativeType': 'mozilla::ClientWebGLExtensionElementIndexUint',
1196     'headerFile': 'ClientWebGLExtensions.h'
1199 'EXT_frag_depth': {
1200     'nativeType': 'mozilla::ClientWebGLExtensionFragDepth',
1201     'headerFile': 'ClientWebGLExtensions.h'
1204 'WEBGL_lose_context': {
1205     'nativeType': 'mozilla::ClientWebGLExtensionLoseContext',
1206     'headerFile': 'ClientWebGLExtensions.h'
1209 'EXT_sRGB': {
1210     'nativeType': 'mozilla::ClientWebGLExtensionSRGB',
1211     'headerFile': 'ClientWebGLExtensions.h'
1214 'OES_standard_derivatives': {
1215     'nativeType': 'mozilla::ClientWebGLExtensionStandardDerivatives',
1216     'headerFile': 'ClientWebGLExtensions.h'
1219 'EXT_shader_texture_lod': {
1220     'nativeType': 'mozilla::ClientWebGLExtensionShaderTextureLod',
1221     'headerFile': 'ClientWebGLExtensions.h'
1224 'EXT_texture_filter_anisotropic': {
1225     'nativeType': 'mozilla::ClientWebGLExtensionTextureFilterAnisotropic',
1226     'headerFile': 'ClientWebGLExtensions.h'
1229 'OES_texture_float': {
1230     'nativeType': 'mozilla::ClientWebGLExtensionTextureFloat',
1231     'headerFile': 'ClientWebGLExtensions.h'
1234 'OES_texture_float_linear': {
1235     'nativeType': 'mozilla::ClientWebGLExtensionTextureFloatLinear',
1236     'headerFile': 'ClientWebGLExtensions.h'
1239 'OES_texture_half_float': {
1240    'nativeType': 'mozilla::ClientWebGLExtensionTextureHalfFloat',
1241    'headerFile': 'ClientWebGLExtensions.h'
1244 'OES_texture_half_float_linear': {
1245    'nativeType': 'mozilla::ClientWebGLExtensionTextureHalfFloatLinear',
1246    'headerFile': 'ClientWebGLExtensions.h'
1249 'WEBGL_color_buffer_float': {
1250    'nativeType': 'mozilla::ClientWebGLExtensionColorBufferFloat',
1251    'headerFile': 'ClientWebGLExtensions.h'
1254 'EXT_color_buffer_half_float': {
1255    'nativeType': 'mozilla::ClientWebGLExtensionColorBufferHalfFloat',
1256    'headerFile': 'ClientWebGLExtensions.h'
1259 'EXT_color_buffer_float': {
1260    'nativeType': 'mozilla::ClientWebGLExtensionEXTColorBufferFloat',
1261    'headerFile': 'ClientWebGLExtensions.h'
1264 'WEBGL_draw_buffers': {
1265     'nativeType': 'mozilla::ClientWebGLExtensionDrawBuffers',
1266     'headerFile': 'ClientWebGLExtensions.h'
1269 'OES_vertex_array_object': {
1270     'nativeType': 'mozilla::ClientWebGLExtensionVertexArray',
1271     'headerFile': 'ClientWebGLExtensions.h'
1274 'ANGLE_instanced_arrays': {
1275     'nativeType': 'mozilla::ClientWebGLExtensionInstancedArrays',
1276     'headerFile': 'ClientWebGLExtensions.h'
1279 'EXT_blend_minmax': {
1280     'nativeType': 'mozilla::ClientWebGLExtensionBlendMinMax',
1281     'headerFile': 'ClientWebGLExtensions.h'
1284 'EXT_disjoint_timer_query': {
1285     'nativeType': 'mozilla::ClientWebGLExtensionDisjointTimerQuery',
1286     'headerFile': 'ClientWebGLExtensions.h'
1289 'MOZ_debug': {
1290     'nativeType': 'mozilla::ClientWebGLExtensionMOZDebug',
1291     'headerFile': 'ClientWebGLExtensions.h'
1294 'WebGLFramebuffer': {
1295     'nativeType': 'mozilla::WebGLFramebufferJS',
1296     'headerFile': 'ClientWebGLContext.h'
1299 'WebGLProgram': {
1300     'nativeType': 'mozilla::WebGLProgramJS',
1301     'headerFile': 'ClientWebGLContext.h'
1304 'WebGLQuery': {
1305     'nativeType': 'mozilla::WebGLQueryJS',
1306     'headerFile': 'ClientWebGLContext.h'
1309 'WebGLRenderbuffer': {
1310     'nativeType': 'mozilla::WebGLRenderbufferJS',
1311     'headerFile': 'ClientWebGLContext.h'
1314 'WebGLRenderingContext': {
1315     'nativeType': 'mozilla::ClientWebGLContext',
1316     'headerFile': 'ClientWebGLContext.h',
1319 'WebGL2RenderingContext': {
1320     'nativeType': 'mozilla::ClientWebGLContext',
1321     'headerFile': 'ClientWebGLContext.h',
1324 'WebGLSampler': {
1325     'nativeType': 'mozilla::WebGLSamplerJS',
1326     'headerFile': 'ClientWebGLContext.h'
1329 'WebGLShader': {
1330     'nativeType': 'mozilla::WebGLShaderJS',
1331     'headerFile': 'ClientWebGLContext.h'
1334 'WebGLShaderPrecisionFormat': {
1335     'nativeType': 'mozilla::WebGLShaderPrecisionFormatJS',
1336     'headerFile': 'ClientWebGLContext.h',
1337     'wrapperCache': False
1340 'WebGLSync': {
1341     'nativeType': 'mozilla::WebGLSyncJS',
1342     'headerFile': 'ClientWebGLContext.h'
1345 'WebGLTexture': {
1346     'nativeType': 'mozilla::WebGLTextureJS',
1347     'headerFile': 'ClientWebGLContext.h'
1350 'WebGLTransformFeedback': {
1351     'nativeType': 'mozilla::WebGLTransformFeedbackJS',
1352     'headerFile': 'ClientWebGLContext.h'
1355 'WebGLUniformLocation': {
1356     'nativeType': 'mozilla::WebGLUniformLocationJS',
1357     'headerFile': 'ClientWebGLContext.h'
1360 'WebGLVertexArrayObject': {
1361     'nativeType': 'mozilla::WebGLVertexArrayJS',
1362     'headerFile': 'ClientWebGLContext.h'
1365 # WebGPU
1367 'GPU': {
1368     'nativeType': 'mozilla::webgpu::Instance',
1370 'GPUAdapter': {
1371     'nativeType': 'mozilla::webgpu::Adapter',
1373 'GPUBindGroup': {
1374     'nativeType': 'mozilla::webgpu::BindGroup',
1376 'GPUBindGroupLayout': {
1377     'nativeType': 'mozilla::webgpu::BindGroupLayout',
1379 'GPUBuffer': {
1380     'nativeType': 'mozilla::webgpu::Buffer',
1381     'implicitJSContext': [ 'unmap' ],
1383 'GPUCanvasContext': {
1384     'nativeType': 'mozilla::webgpu::CanvasContext',
1386 'GPUCommandBuffer': {
1387     'nativeType': 'mozilla::webgpu::CommandBuffer',
1389 'GPUCommandEncoder': {
1390     'nativeType': 'mozilla::webgpu::CommandEncoder',
1392 'GPUCompilationInfo': {
1393     'nativeType': 'mozilla::webgpu::CompilationInfo',
1395 'GPUCompilationMessage': {
1396     'nativeType': 'mozilla::webgpu::CompilationMessage',
1398 'GPUComputePassEncoder': {
1399     'nativeType': 'mozilla::webgpu::ComputePassEncoder',
1401 'GPUComputePipeline': {
1402     'nativeType': 'mozilla::webgpu::ComputePipeline',
1404 'GPUDevice': {
1405     'nativeType': 'mozilla::webgpu::Device',
1407 'GPUDeviceLostInfo': {
1408     'nativeType': 'mozilla::webgpu::DeviceLostInfo',
1410 'GPUOutOfMemoryError': {
1411     'nativeType': 'mozilla::webgpu::OutOfMemoryError',
1413 'GPUPipelineLayout': {
1414     'nativeType': 'mozilla::webgpu::PipelineLayout',
1416 'GPUQuerySet': {
1417     'nativeType': 'mozilla::webgpu::QuerySet',
1419 'GPUQueue': {
1420     'nativeType': 'mozilla::webgpu::Queue',
1422 'GPURenderBundle': {
1423     'nativeType': 'mozilla::webgpu::RenderBundle',
1425 'GPURenderBundleEncoder': {
1426     'nativeType': 'mozilla::webgpu::RenderBundleEncoder',
1428 'GPURenderPassEncoder': {
1429     'nativeType': 'mozilla::webgpu::RenderPassEncoder',
1431 'GPURenderPipeline': {
1432     'nativeType': 'mozilla::webgpu::RenderPipeline',
1434 'GPUSampler': {
1435     'nativeType': 'mozilla::webgpu::Sampler',
1437 'GPUShaderModule': {
1438     'nativeType': 'mozilla::webgpu::ShaderModule',
1440 'GPUSupportedFeatures': {
1441     'nativeType': 'mozilla::webgpu::SupportedFeatures',
1443 'GPUSupportedLimits': {
1444     'nativeType': 'mozilla::webgpu::SupportedLimits',
1446 'GPUTexture': {
1447     'nativeType': 'mozilla::webgpu::Texture',
1449 'GPUTextureView': {
1450     'nativeType': 'mozilla::webgpu::TextureView',
1452 'GPUValidationError': {
1453     'nativeType': 'mozilla::webgpu::ValidationError',
1456 'GPUBindingType': {
1457     'concrete': False,
1459 'GPUBlendFactor': {
1460     'concrete': False,
1462 'GPUBlendOperation': {
1463     'concrete': False,
1465 'GPUBufferUsage': {
1466     'concrete': False,
1468 'GPUColorWrite': {
1469     'concrete': False,
1471 'GPUCompareFunction': {
1472     'concrete': False,
1474 'GPUFilterMode': {
1475     'concrete': False,
1477 'GPUIndexFormat': {
1478     'concrete': False,
1480 'GPUInputStepMode': {
1481     'concrete': False,
1483 'GPULoadOp': {
1484     'concrete': False,
1486 'GPUMapMode': {
1487     'concrete': False,
1489 'GPUPrimitiveTopology': {
1490     'concrete': False,
1492 'GPUShaderStage': {
1493     'concrete': False,
1495 'GPUStencilOperation': {
1496     'concrete': False,
1498 'GPUStoreOp': {
1499     'concrete': False,
1501 'GPUTextureDimension': {
1502     'concrete': False,
1504 'GPUTextureFormat': {
1505     'concrete': False,
1507 'GPUTextureUsage': {
1508     'concrete': False,
1510 'GPUVertexFormat': {
1511     'concrete': False,
1514 # Glean
1516 'GleanImpl': {
1517     'nativeType': 'mozilla::glean::Glean',
1518     'headerFile': 'mozilla/glean/bindings/Glean.h',
1520 'GleanCategory': {
1521     'nativeType': 'mozilla::glean::Category',
1522     'headerFile': 'mozilla/glean/bindings/Category.h',
1524 'GleanPingsImpl': {
1525     'nativeType': 'mozilla::glean::GleanPings',
1526     'headerFile': 'mozilla/glean/bindings/GleanPings.h',
1528 'GleanLabeled': {
1529     'nativeType': 'mozilla::glean::GleanLabeled',
1530     'headerFile': 'mozilla/glean/bindings/Labeled.h',
1533 # WebRTC
1535 'WebrtcGlobalInformation': {
1536     'nativeType': 'mozilla::dom::WebrtcGlobalInformation',
1537     'headerFile': 'WebrtcGlobalInformation.h',
1540 'Window': {
1541     'nativeType': 'nsGlobalWindowInner',
1542     'headerFile': 'nsGlobalWindow.h',
1543     'implicitJSContext': [
1544         'requestIdleCallback'
1545     ],
1548 'WindowContext': {
1549     'concrete': True
1552 'WindowProxy': {
1553     'nativeType': 'mozilla::dom::WindowProxyHolder',
1554     'headerFile': 'mozilla/dom/WindowProxyHolder.h',
1555     'concrete': False
1558 'WindowRoot': {
1559     'nativeType': 'nsWindowRoot'
1562 'WorkerDebuggerGlobalScope': {
1563     'headerFile': 'mozilla/dom/WorkerScope.h',
1564     'implicitJSContext': [
1565         'dump', 'reportError', 'setConsoleEventHandler',
1566     ],
1569 'WorkerGlobalScope': {
1570     'headerFile': 'mozilla/dom/WorkerScope.h',
1571     'implicitJSContext': [ 'importScripts' ],
1574 'Worklet': {
1575     # Paint worklets just use the Worklet interface.
1576     'concrete': True,
1577     'implicitJSContext': [ 'addModule' ],
1580 'XMLSerializer': {
1581     'nativeType': 'nsDOMSerializer',
1582     'wrapperCache': False
1585 'XPathEvaluator': {
1586     'wrapperCache': False,
1587     'concrete': True,
1590 'XPathExpression': {
1591     'wrapperCache': False,
1594 'XRPose': {
1595    'concrete': True,
1598 'XRReferenceSpace': {
1599     'concrete': True,
1602 'XRSpace': {
1603     'concrete': True,
1606 'XSLTProcessor': {
1607     'nativeType': 'txMozillaXSLTProcessor',
1610 'XULElement': {
1611     'nativeType': 'nsXULElement',
1614 # WebExtension API
1616 'ExtensionBrowser': {
1617     'headerFile': 'mozilla/extensions/ExtensionBrowser.h',
1618     'nativeType': 'mozilla::extensions::ExtensionBrowser',
1621 'ExtensionMockAPI': {
1622     'headerFile': 'mozilla/extensions/ExtensionMockAPI.h',
1623     'nativeType': 'mozilla::extensions::ExtensionMockAPI',
1626 'ExtensionEventManager': {
1627     'headerFile': 'mozilla/extensions/ExtensionEventManager.h',
1628     'nativeType': 'mozilla::extensions::ExtensionEventManager',
1631 'ExtensionPort': {
1632     'headerFile': 'mozilla/extensions/ExtensionPort.h',
1633     'nativeType': 'mozilla::extensions::ExtensionPort',
1636 'ExtensionRuntime': {
1637     'headerFile': 'mozilla/extensions/ExtensionRuntime.h',
1638     'nativeType': 'mozilla::extensions::ExtensionRuntime',
1641 'ExtensionTest': {
1642     'headerFile': 'mozilla/extensions/ExtensionTest.h',
1643     'nativeType': 'mozilla::extensions::ExtensionTest',
1646 'ExtensionAlarms': {
1647     'headerFile': 'mozilla/extensions/ExtensionAlarms.h',
1648     'nativeType': 'mozilla::extensions::ExtensionAlarms',
1651 ####################################
1652 # Test Interfaces of various sorts #
1653 ####################################
1655 'TestInterface' : {
1656         # Keep this in sync with TestExampleInterface
1657         'headerFile': 'TestBindingHeader.h',
1658         'register': False,
1659         },
1661 'TestParentInterface' : {
1662         'headerFile': 'TestBindingHeader.h',
1663         'register': False,
1664         },
1666 'TestChildInterface' : {
1667         'headerFile': 'TestBindingHeader.h',
1668         'register': False,
1669         },
1671 'TestCImplementedInterface' : {
1672         'headerFile': 'TestCImplementedInterface.h',
1673         'register': False,
1674         },
1676 'TestCImplementedInterface2' : {
1677         'headerFile': 'TestCImplementedInterface.h',
1678         'register': False,
1679         },
1681 'TestJSImplInterface' : {
1682         # Keep this in sync with TestExampleInterface
1683         'headerFile': 'TestJSImplGenBinding.h',
1684         'register': False,
1685         },
1687 'TestJSImplInterface2' : {
1688         'headerFile': 'TestJSImplGenBinding.h',
1689         'register': False
1690         },
1692 'TestJSImplInterface3' : {
1693         'headerFile': 'TestJSImplGenBinding.h',
1694         'register': False
1695         },
1697 'TestJSImplInterface4' : {
1698         'headerFile': 'TestJSImplGenBinding.h',
1699         'register': False
1700         },
1702 'TestJSImplInterface5' : {
1703         'headerFile': 'TestJSImplGenBinding.h',
1704         'register': False
1705         },
1707 'TestJSImplInterface6' : {
1708         'headerFile': 'TestJSImplGenBinding.h',
1709         'register': False
1710         },
1712 'TestNavigator' : {
1713         'headerFile': 'TestJSImplGenBinding.h',
1714         'register' : False
1715         },
1717 'TestNavigatorWithConstructor' : {
1718         'headerFile': 'TestJSImplGenBinding.h',
1719         'register' : False
1720         },
1722 'TestExternalInterface' : {
1723         'nativeType': 'mozilla::dom::TestExternalInterface',
1724         'headerFile': 'TestBindingHeader.h',
1725         'register': False
1726         },
1728 'TestNonWrapperCacheInterface' : {
1729         'headerFile': 'TestBindingHeader.h',
1730         'register': False,
1731         'wrapperCache': False
1732         },
1734 'IndirectlyImplementedInterface': {
1735         'headerFile': 'TestBindingHeader.h',
1736         'register': False,
1737         'castable': False,
1738         },
1740 'OnlyForUseInConstructor' : {
1741         'headerFile': 'TestBindingHeader.h',
1742         'register': False
1743         },
1745 'ImplementedInterface' : {
1746         'headerFile': 'TestBindingHeader.h',
1747         'register': False,
1748         },
1750 'ImplementedInterfaceParent' : {
1751         'headerFile': 'TestBindingHeader.h',
1752         'register': False
1753         },
1755 'DiamondImplements' : {
1756         'headerFile': 'TestBindingHeader.h',
1757         'register': False
1758         },
1760 'DiamondBranch1A' : {
1761         'headerFile': 'TestBindingHeader.h',
1762         'register': False
1763         },
1765 'DiamondBranch1B' : {
1766         'headerFile': 'TestBindingHeader.h',
1767         'register': False
1768         },
1770 'DiamondBranch2A' : {
1771         'headerFile': 'TestBindingHeader.h',
1772         'register': False
1773         },
1775 'DiamondBranch2B' : {
1776         'headerFile': 'TestBindingHeader.h',
1777         'register': False
1778         },
1780 'TestIndexedGetterInterface' : {
1781         'headerFile': 'TestBindingHeader.h',
1782         'register': False
1783         },
1785 'TestNamedGetterInterface' : {
1786         'headerFile': 'TestBindingHeader.h',
1787         'register': False
1788         },
1790 'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
1791         'headerFile': 'TestBindingHeader.h',
1792         'register': False
1793         },
1795 'TestIndexedAndNamedGetterInterface' : {
1796         'headerFile': 'TestBindingHeader.h',
1797         'register': False
1798         },
1800 'TestIndexedSetterInterface' : {
1801         'headerFile': 'TestBindingHeader.h',
1802         'register': False
1803         },
1805 'TestNamedSetterInterface' : {
1806         'headerFile': 'TestBindingHeader.h',
1807         'register': False
1808         },
1810 'TestIndexedAndNamedSetterInterface' : {
1811         'headerFile': 'TestBindingHeader.h',
1812         'register': False
1813         },
1815 'TestIndexedAndNamedGetterAndSetterInterface' : {
1816         'headerFile': 'TestBindingHeader.h',
1817         'register': False,
1818         },
1820 'TestRenamedInterface' : {
1821         'headerFile': 'TestBindingHeader.h',
1822         'register': False,
1823         'nativeType': 'nsRenamedInterface'
1824         },
1826 'TestNamedDeleterInterface' : {
1827         'headerFile': 'TestBindingHeader.h',
1828         'register': False
1829         },
1831 'TestNamedDeleterWithRetvalInterface' : {
1832         'headerFile': 'TestBindingHeader.h',
1833         'register': False
1834         },
1836 'TestCppKeywordNamedMethodsInterface' : {
1837         'headerFile': 'TestBindingHeader.h',
1838         'register': False
1839         },
1841 'TestExampleInterface' : {
1842         # Keep this in sync with TestInterface
1843         'headerFile': 'TestExampleInterface-example.h',
1844         'register': False,
1845         },
1847 'TestExampleWorkerInterface' : {
1848         'headerFile': 'TestExampleWorkerInterface-example.h',
1849         'register': False,
1850         },
1852 'TestExampleProxyInterface' : {
1853         'headerFile': 'TestExampleProxyInterface-example.h',
1854         'register': False
1855         },
1857 'TestExampleThrowingConstructorInterface' : {
1858         'headerFile': 'TestExampleThrowingConstructorInterface-example.h',
1859         'register': False,
1860         },
1862 'TestDeprecatedInterface' : {
1863         # Keep this in sync with TestExampleInterface
1864         'headerFile': 'TestBindingHeader.h',
1865         'register': False
1866         },
1868 'TestInterfaceWithPromiseConstructorArg' : {
1869         'headerFile': 'TestBindingHeader.h',
1870         'register': False,
1871         },
1873 'TestSecureContextInterface' : {
1874         # Keep this in sync with TestExampleInterface
1875         'headerFile': 'TestBindingHeader.h',
1876         'register': False
1877         },
1879 'TestNamespace' : {
1880         'headerFile': 'TestBindingHeader.h',
1881         'register': False,
1882         },
1884 'TestRenamedNamespace' : {
1885         'headerFile': 'TestBindingHeader.h',
1886         'register': False,
1887         },
1889 'TestProtoObjectHackedNamespace' : {
1890         'headerFile': 'TestBindingHeader.h',
1891         'register': False,
1892         },
1894 'TestWorkerExposedInterface' : {
1895         'headerFile': 'TestBindingHeader.h',
1896         'register': False,
1897         },
1899 'TestHTMLConstructorInterface' : {
1900         'headerFile': 'TestBindingHeader.h',
1901         'register': False,
1902         },
1904 'TestThrowingConstructorInterface' : {
1905         'headerFile': 'TestBindingHeader.h',
1906         'register': False,
1907         },
1909 'TestCEReactionsInterface' : {
1910         'headerFile': 'TestBindingHeader.h',
1911         'register': False,
1912         },
1914 'TestAttributesOnTypes' : {
1915         'headerFile': 'TestBindingHeader.h',
1916         'register': False,
1917         },
1919 'TestPrefConstructorForInterface' : {
1920         'headerFile': 'TestBindingHeader.h',
1921         'register': False,
1922         },
1924 'TestConstructorForPrefInterface' : {
1925         'headerFile': 'TestBindingHeader.h',
1926         'register': False,
1927         },
1929 'TestPrefConstructorForDifferentPrefInterface' : {
1930         'headerFile': 'TestBindingHeader.h',
1931         'register': False,
1932         },
1934 'TestConstructorForSCInterface' : {
1935         'headerFile': 'TestBindingHeader.h',
1936         'register': False,
1937         },
1939 'TestSCConstructorForInterface' : {
1940         'headerFile': 'TestBindingHeader.h',
1941         'register': False,
1942         },
1944 'TestConstructorForFuncInterface' : {
1945         'headerFile': 'TestBindingHeader.h',
1946         'register': False,
1947         },
1949 'TestFuncConstructorForInterface' : {
1950         'headerFile': 'TestBindingHeader.h',
1951         'register': False,
1952         },
1954 'TestFuncConstructorForDifferentFuncInterface' : {
1955         'headerFile': 'TestBindingHeader.h',
1956         'register': False,
1957         },
1959 'TestPrefChromeOnlySCFuncConstructorForInterface' : {
1960         'headerFile': 'TestBindingHeader.h',
1961         'register': False,
1962         },
1965 # These are temporary, until they've been converted to use new DOM bindings
1966 def addExternalIface(iface, nativeType=None, headerFile=None,
1967                      notflattened=False):
1968     if iface in DOMInterfaces:
1969         raise Exception('Interface declared both as WebIDL and External interface')
1970     domInterface = {
1971         'concrete': False
1972     }
1973     if not nativeType is None:
1974         domInterface['nativeType'] = nativeType
1975     if not headerFile is None:
1976         domInterface['headerFile'] = headerFile
1977     domInterface['notflattened'] = notflattened
1978     DOMInterfaces[iface] = domInterface
1980 addExternalIface('Cookie', nativeType='nsICookie',
1981                  headerFile='nsICookie.h', notflattened=True)
1982 addExternalIface('ContentSecurityPolicy', nativeType='nsIContentSecurityPolicy',
1983                  notflattened=True)
1984 addExternalIface('HitRegionOptions', nativeType='nsISupports')
1985 addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
1986 addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True)
1987 addExternalIface('LoadContext', nativeType='nsILoadContext', notflattened=True)
1988 addExternalIface('LoadInfo', nativeType='nsILoadInfo',
1989                  headerFile='nsILoadInfo.h', notflattened=True)
1990 addExternalIface('MenuBuilder', nativeType='nsIMenuBuilder', notflattened=True)
1991 addExternalIface('XULControllers', nativeType='nsIControllers', notflattened=True)
1992 addExternalIface('MozObserver', nativeType='nsIObserver', notflattened=True)
1993 addExternalIface('MozTreeView', nativeType='nsITreeView',
1994                   headerFile='nsITreeView.h', notflattened=True)
1995 addExternalIface('MozWakeLockListener', headerFile='nsIDOMWakeLockListener.h')
1996 addExternalIface('nsIBrowserDOMWindow', nativeType='nsIBrowserDOMWindow',
1997                  notflattened=True)
1998 addExternalIface('nsIDOMWindowUtils', nativeType='nsIDOMWindowUtils', notflattened=True)
1999 addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=True)
2000 addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True)
2001 addExternalIface('nsILoadGroup', nativeType='nsILoadGroup',
2002                  headerFile='nsILoadGroup.h', notflattened=True)
2003 addExternalIface('nsIMediaDevice', nativeType='nsIMediaDevice',
2004                  notflattened=True)
2005 addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings',
2006                  notflattened=True)
2007 addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
2008 addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
2009 addExternalIface('nsISocketTransport', nativeType='nsISocketTransport',
2010                  notflattened=True)
2011 addExternalIface('nsITransportProvider', nativeType='nsITransportProvider')
2012 addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
2013                  notflattened=True)
2014 addExternalIface('nsISupports', nativeType='nsISupports')
2015 addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
2016 addExternalIface('nsIDOMProcessChild', nativeType='nsIDOMProcessChild', notflattened=True)
2017 addExternalIface('nsIDOMProcessParent', nativeType='nsIDOMProcessParent', notflattened=True)
2018 addExternalIface('nsIReferrerInfo', nativeType='nsIReferrerInfo', notflattened=True)
2019 addExternalIface('nsISecureBrowserUI', nativeType='nsISecureBrowserUI', notflattened=True)
2020 addExternalIface('nsIWebProgress', nativeType='nsIWebProgress', notflattened=True)
2021 addExternalIface('nsIWebNavigation', nativeType='nsIWebNavigation', notflattened=True)
2022 addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True)
2023 addExternalIface('nsIVariant', nativeType='nsIVariant', notflattened=True)
2024 addExternalIface('nsIWebBrowserPersistDocumentReceiver',
2025                  nativeType='nsIWebBrowserPersistDocumentReceiver',
2026                  headerFile='nsIWebBrowserPersistDocument.h',
2027                  notflattened=True)
2028 addExternalIface('nsIWebProgressListener', nativeType='nsIWebProgressListener',
2029                  notflattened=True)
2030 addExternalIface('OutputStream', nativeType='nsIOutputStream',
2031                  notflattened=True)
2032 addExternalIface('Principal', nativeType='nsIPrincipal',
2033                  headerFile='nsIPrincipal.h', notflattened=True)
2034 addExternalIface('StackFrame', nativeType='nsIStackFrame',
2035                  headerFile='nsIException.h', notflattened=True)
2036 addExternalIface('RemoteTab', nativeType='nsIRemoteTab',
2037                  notflattened=True)
2038 addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
2039                  notflattened=True)
2040 addExternalIface('XULCommandDispatcher', notflattened=True)
2041 addExternalIface('nsISHistory', nativeType='nsISHistory', notflattened=True)
2042 addExternalIface('ReferrerInfo', nativeType='nsIReferrerInfo')
2043 addExternalIface('nsIPermissionDelegateHandler',
2044                  nativeType='nsIPermissionDelegateHandler',
2045                  notflattened=True)
2046 addExternalIface('nsIOpenWindowInfo', nativeType='nsIOpenWindowInfo',
2047                  notflattened=True)
2048 addExternalIface('nsICookieJarSettings', nativeType='nsICookieJarSettings',
2049                  notflattened=True)
2050 addExternalIface('nsIGleanPing', headerFile='mozilla/glean/bindings/Ping.h',
2051                  nativeType='nsIGleanPing', notflattened=True)
2052 addExternalIface('nsISessionStoreRestoreData',
2053                  nativeType='nsISessionStoreRestoreData',
2054                  headerFile='nsISessionStoreRestoreData.h', notflattened=True)