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
39 # The value for an interface is a dictionary which specifies the
40 # descriptor to use when generating that interface's binding.
45 'implicitJSContext': [ 'throwIfAborted' ],
54 'nativeType': 'mozilla::dom::archivereader::ArchiveReader',
58 'nativeType': 'mozilla::dom::archivereader::ArchiveRequest',
62 'implicitJSContext': [ 'copyToChannel' ],
65 'AudioBufferSourceNode': {
66 'implicitJSContext': [ 'buffer' ],
70 'nativeType': 'mozilla::dom::Worklet',
73 'AudioWorkletGlobalScope': {
74 'implicitJSContext': [ 'registerProcessor' ],
78 'headerFile': 'mozilla/dom/BarProps.h',
82 'nativeType': 'mozilla::dom::AudioContext',
86 'nativeType': 'mozilla::dom::battery::BatteryManager',
87 'headerFile': 'BatteryManager.h'
91 'implicitJSContext': [ 'stream' ],
99 'implicitJSContext': [ 'add', 'addAll', 'match', 'matchAll', 'put',
101 'nativeType': 'mozilla::dom::cache::Cache',
105 'implicitJSContext': [ 'match' ],
106 'nativeType': 'mozilla::dom::cache::CacheStorage',
109 'CanvasRenderingContext2D': {
110 'implicitJSContext': [
111 'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
116 'nativeType': 'nsDOMCaretPosition',
120 'nativeType': 'mozilla::extensions::ChannelWrapper',
127 'ClonedErrorHolder': {
128 'wrapperCache': False
132 'nativeType': 'mozilla::dom::Console',
136 'implicitJSContext': ['clear', 'count', 'countReset', 'groupEnd', 'time', 'timeEnd'],
140 'implicitJSContext': [ 'buffer' ],
148 'headerFile': 'Crypto.h'
152 'nativeType': 'nsDOMCSSDeclaration'
155 'CSSConditionRule': {
156 'nativeType': 'mozilla::css::ConditionRule',
157 'headerFile': 'mozilla/css/GroupRule.h',
161 'nativeType': 'mozilla::css::GroupRule',
165 'wrapperCache': False
169 'nativeType': 'mozilla::css::Rule'
172 'CSSStyleDeclaration': {
173 'nativeType': 'nsICSSDeclaration',
174 # Concrete because of the font-face mess.
179 'nativeType': 'mozilla::StyleSheet',
182 'CustomElementRegistry': {
183 'implicitJSContext': ['define', 'getName'],
186 'DebuggerNotification': {
189 'CallbackDebuggerNotification': {
193 'DedicatedWorkerGlobalScope': {
194 'headerFile': 'mozilla/dom/WorkerScope.h',
197 'DeviceAcceleration': {
198 'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
201 'DeviceRotationRate': {
202 'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
206 'nativeType': 'mozilla::devtools::DominatorTree'
210 'implicitJSContext': [ 'filename', 'lineNumber', 'stack' ],
213 'DOMMatrixReadOnly': {
214 'headerFile': 'mozilla/dom/DOMMatrix.h',
217 'DOMPointReadOnly': {
218 'headerFile': 'mozilla/dom/DOMPoint.h',
222 'headerFile': 'mozilla/dom/DOMRect.h',
226 'headerFile': 'mozilla/dom/DOMRect.h',
234 'nativeType': 'nsDOMStringMap'
238 'nativeType': 'nsDOMTokenList',
246 'implicitJSContext': [ 'preventDefault' ],
250 'jsImplParent': 'mozilla::DOMEventTargetHelper',
254 'headerFile': 'mozilla/dom/DOMException.h',
255 'implicitJSContext': [ '__stringifier', 'filename', 'lineNumber', 'stack' ],
259 'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
260 'implicitJSContext': [ 'waitUntil' ],
263 'ExtendableMessageEvent': {
264 'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
268 'headerFile': 'ServiceWorkerEvents.h',
269 'implicitJSContext': [ 'respondWith' ],
273 'implicitJSContext': [ 'readAsArrayBuffer' ],
277 'wrapperCache': False,
284 'FileSystemHandle': {
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',
303 'headerFile': 'mozilla/intl/FluentBundle.h',
304 'nativeType': 'mozilla::intl::FluentPattern',
308 'headerFile': 'mozilla/intl/FluentResource.h',
309 'nativeType': 'mozilla::intl::FluentResource',
313 'implicitJSContext': [ 'load' ],
316 'FontFaceSetIterator': {
317 'wrapperCache': False,
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.
328 'headerFile': 'mozilla/dom/FuzzingFunctions.h',
332 'nativeType': 'mozilla::devtools::HeapSnapshot'
336 'headerFile': 'nsHistory.h',
337 'nativeType': 'nsHistory'
341 'nativeType': 'mozilla::dom::HTMLSharedElement'
345 'nativeType': 'nsIHTMLCollection',
346 # nsContentList.h pulls in nsIHTMLCollection.h
347 'headerFile': 'nsContentList.h',
351 'HTMLDirectoryElement': {
352 'nativeType': 'mozilla::dom::HTMLSharedElement'
355 'HTMLDListElement': {
356 'nativeType' : 'mozilla::dom::HTMLSharedListElement'
360 'nativeType': 'nsHTMLDocument',
365 'nativeType': 'nsGenericHTMLElement',
369 'nativeType': 'mozilla::dom::HTMLSharedElement'
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'
393 'implicitJSContext': [ 'delete' ],
397 'IDBCursorWithValue': {
398 'nativeType': 'mozilla::dom::IDBCursor',
402 'implicitJSContext': [ 'transaction' ],
406 'implicitJSContext': [ 'open', 'deleteDatabase', 'openForPrincipal',
407 'deleteForPrincipal' ],
411 'wrapperCache': False,
415 'IDBLocaleAwareKeyRange': {
416 'headerFile': 'IDBKeyRange.h',
417 'wrapperCache': False,
421 'implicitJSContext': [ 'clear' ],
424 'IDBOpenDBRequest': {
425 'headerFile': 'IDBRequest.h'
432 'IDBVersionChangeEvent': {
433 'headerFile': 'IDBEvents.h',
437 'wrapperCache': False,
441 'nativeType': 'nsIInputStream',
445 'InspectorFontFace': {
446 'wrapperCache': False,
449 'IntersectionObserver': {
450 'nativeType': 'mozilla::dom::DOMIntersectionObserver',
453 'IntersectionObserverEntry': {
454 'nativeType': 'mozilla::dom::DOMIntersectionObserverEntry',
455 'headerFile': 'DOMIntersectionObserver.h',
463 'headerFile': 'mozilla/intl/FileSource.h',
464 'nativeType': 'mozilla::intl::L10nFileSource',
468 'nativeType': 'mozilla::intl::L10nRegistry',
471 'LegacyMozTCPSocket': {
472 'headerFile': 'TCPSocket.h',
473 'wrapperCache': False,
477 'nativeType': 'mozilla::intl::Localization',
481 'nativeType': 'mozilla::extensions::MatchGlob',
485 'nativeType': 'mozilla::extensions::MatchPattern',
489 'headerFile': 'mozilla/extensions/MatchPattern.h',
490 'nativeType': 'mozilla::extensions::MatchPatternSet',
493 'MediaCapabilitiesInfo' : {
494 'wrapperCache': False,
498 'headerFile': 'DOMMediaStream.h',
499 'nativeType': 'mozilla::DOMMediaStream'
503 'headerFile': 'MediaStreamList.h',
507 'headerFile': 'MediaRecorder.h',
511 'headerFile' : 'nsMimeTypeArray.h',
512 'nativeType': 'nsMimeType',
516 'nativeType': 'nsMimeTypeArray',
519 'MozCanvasPrintState': {
520 'headerFile': 'mozilla/dom/HTMLCanvasElement.h',
521 'nativeType': 'mozilla::dom::HTMLCanvasPrintState',
525 'nativeType': 'nsIChannel',
529 'MozDocumentMatcher': {
530 'nativeType': 'mozilla::extensions::MozDocumentMatcher',
531 'headerFile': 'mozilla/extensions/WebExtensionContentScript.h',
534 'MozDocumentObserver': {
535 'nativeType': 'mozilla::extensions::DocumentObserver',
539 'nativeType': 'mozilla::dom::ipc::SharedMap',
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',
576 'nativeType': 'nsDOMMutationRecord',
577 'headerFile': 'nsDOMMutationObserver.h',
581 'nativeType': 'nsDOMAttributeMap',
584 'NetworkInformation': {
585 'nativeType': 'mozilla::dom::network::Connection',
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
594 'headerFile': 'nsIContent.h',
598 'wrapperCache': False,
602 'nativeType': 'nsINodeList',
606 'OfflineAudioContext': {
607 'nativeType': 'mozilla::dom::AudioContext',
610 'OffscreenCanvasRenderingContext2D': {
611 'implicitJSContext': [
612 'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
616 'PaintRequestList': {
617 'headerFile': 'mozilla/dom/PaintRequest.h',
621 'nativeType': 'mozilla::dom::CanvasPath',
622 'headerFile': 'CanvasPath.h'
625 'PeerConnectionImpl': {
626 'nativeType': 'mozilla::PeerConnectionImpl',
627 'headerFile': 'PeerConnectionImpl.h',
631 'implicitJSContext': [
636 'PerformanceResourceTiming' : {
649 'nativeType' : 'mozilla::dom::WebTaskController',
650 'headerFile' : 'mozilla/dom/WebTaskController.h'
654 'nativeType': 'mozilla::TransceiverImpl',
655 'headerFile': 'TransceiverImpl.h'
658 'TransformStreamDefaultController': {
659 'implicitJSContext': ['terminate'],
663 'headerFile' : 'nsPluginArray.h',
664 'nativeType': 'nsPluginElement',
668 'nativeType': 'nsPluginArray',
672 'nativeType': 'nsIPluginTag',
676 'nativeType': 'mozilla::dom::FeaturePolicy',
679 'PromiseNativeHandler': {
680 'wrapperCache': False,
684 'headerFile': 'ServiceWorkerEvents.h',
688 'headerFile': 'ServiceWorkerEvents.h',
692 'nativeType': 'nsRange',
695 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
696 'ReadableByteStreamController': {
697 'implicitJSContext': ['byobRequest', 'close', 'enqueue'],
701 'implicitJSContext': ['tee'],
704 'ReadableStreamBYOBRequest': {
705 'implicitJSContext': ['respond', 'respondWithNewView'],
708 'ReadableStreamDefaultController': {
709 'implicitJSContext': ['close'],
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',
727 'implicitJSContext': [ 'arrayBuffer', 'blob', 'body', 'formData', 'json', 'text',
728 'clone', 'cloneUnfiltered' ],
732 'nativeType': 'nsDOMDataChannel',
736 'nativeType': 'mozilla::dom::WebTaskScheduler',
737 'headerFile': 'mozilla/dom/WebTaskScheduler.h',
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',
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,
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'
835 'nativeType': 'mozilla::dom::DOMSVGAngle',
836 'headerFile': 'DOMSVGAngle.h'
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',
860 'nativeType': 'mozilla::dom::DOMSVGLength',
861 'headerFile': 'DOMSVGLength.h'
865 'nativeType': 'mozilla::dom::DOMSVGLengthList',
866 'headerFile': 'DOMSVGLengthList.h'
869 'SVGLinearGradientElement': {
870 'headerFile': 'mozilla/dom/SVGGradientElement.h',
874 'nativeType': 'mozilla::dom::DOMSVGNumber',
875 'headerFile': 'DOMSVGNumber.h',
879 'nativeType': 'mozilla::dom::DOMSVGNumberList',
880 'headerFile': 'DOMSVGNumberList.h'
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'
984 'nativeType': 'mozilla::dom::DOMSVGPathSegList',
985 'headerFile': 'DOMSVGPathSegList.h'
989 'nativeType': 'mozilla::dom::DOMSVGPoint',
990 'headerFile': 'DOMSVGPoint.h'
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',
1008 'nativeType': 'mozilla::dom::DOMSVGStringList',
1009 'headerFile': 'DOMSVGStringList.h',
1013 'nativeType': 'mozilla::dom::DOMSVGTransform',
1014 'headerFile': 'DOMSVGTransform.h',
1017 'SVGTransformList': {
1018 'nativeType': 'mozilla::dom::DOMSVGTransformList',
1019 'headerFile': 'DOMSVGTransformList.h'
1023 # Maybe should be a namespace.
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.
1034 'headerFile': 'mozilla/dom/IOUtils.h',
1037 'TelemetryStopwatch': {
1038 'nativeType': 'mozilla::telemetry::Stopwatch',
1042 'wrapperCache': False
1046 # Total hack to allow binding code to realize that nsTextNode can
1047 # in fact be cast to Text.
1048 'headerFile': 'nsTextNode.h',
1052 'wrapperCache': False
1056 'wrapperCache': False
1060 'wrapperCache': False
1064 'headerFile': 'mozilla/dom/TouchEvent.h',
1068 'nativeType': 'nsTreeColumn',
1069 'headerFile': 'nsTreeColumns.h',
1073 'nativeType': 'nsTreeColumns',
1076 'TreeContentView': {
1077 'nativeType': 'nsTreeContentView',
1081 'wrapperCache': False,
1084 'UserInteraction': {
1085 'nativeType': 'mozilla::telemetry::UserInteractionStopwatch',
1086 'headerFile': 'mozilla/telemetry/Stopwatch.h',
1090 'nativeType': 'mozilla::dom::VisualViewport',
1094 'nativeType': 'mozilla::dom::TextTrackCue'
1098 'nativeType': 'mozilla::dom::TextTrackRegion',
1101 'WebExtensionContentScript': {
1102 'nativeType': 'mozilla::extensions::WebExtensionContentScript',
1105 'WebExtensionPolicy': {
1106 'nativeType': 'mozilla::extensions::WebExtensionPolicy',
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
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'
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'
1228 'nativeType': 'mozilla::ClientWebGLExtensionFragDepth',
1229 'headerFile': 'ClientWebGLExtensions.h'
1232 'WEBGL_lose_context': {
1233 'nativeType': 'mozilla::ClientWebGLExtensionLoseContext',
1234 'headerFile': 'ClientWebGLExtensions.h'
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'
1318 'nativeType': 'mozilla::ClientWebGLExtensionMOZDebug',
1319 'headerFile': 'ClientWebGLExtensions.h'
1322 'WebGLFramebuffer': {
1323 'nativeType': 'mozilla::WebGLFramebufferJS',
1324 'headerFile': 'ClientWebGLContext.h'
1328 'nativeType': 'mozilla::WebGLProgramJS',
1329 'headerFile': 'ClientWebGLContext.h'
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',
1353 'nativeType': 'mozilla::WebGLSamplerJS',
1354 'headerFile': 'ClientWebGLContext.h'
1358 'nativeType': 'mozilla::WebGLShaderJS',
1359 'headerFile': 'ClientWebGLContext.h'
1362 'WebGLShaderPrecisionFormat': {
1363 'nativeType': 'mozilla::WebGLShaderPrecisionFormatJS',
1364 'headerFile': 'ClientWebGLContext.h',
1365 'wrapperCache': False
1369 'nativeType': 'mozilla::WebGLSyncJS',
1370 'headerFile': 'ClientWebGLContext.h'
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'
1396 'nativeType': 'mozilla::webgpu::Instance',
1399 'nativeType': 'mozilla::webgpu::Adapter',
1402 'nativeType': 'mozilla::webgpu::AdapterInfo',
1403 'headerFile': 'mozilla/webgpu/Adapter.h',
1404 'wrapperCache': False
1407 'nativeType': 'mozilla::webgpu::BindGroup',
1409 'GPUBindGroupLayout': {
1410 'nativeType': 'mozilla::webgpu::BindGroupLayout',
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',
1438 'nativeType': 'mozilla::webgpu::Device',
1440 'GPUDeviceLostInfo': {
1441 'nativeType': 'mozilla::webgpu::DeviceLostInfo',
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',
1456 'nativeType': 'mozilla::webgpu::QuerySet',
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',
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',
1486 'nativeType': 'mozilla::webgpu::Texture',
1489 'nativeType': 'mozilla::webgpu::TextureView',
1491 'GPUValidationError': {
1492 'nativeType': 'mozilla::webgpu::ValidationError',
1501 'GPUBlendOperation': {
1510 'GPUCompareFunction': {
1519 'GPUInputStepMode': {
1528 'GPUPrimitiveTopology': {
1534 'GPUStencilOperation': {
1540 'GPUTextureDimension': {
1543 'GPUTextureFormat': {
1546 'GPUTextureUsage': {
1549 'GPUVertexFormat': {
1556 'nativeType': 'mozilla::glean::Glean',
1557 'headerFile': 'mozilla/glean/bindings/Glean.h',
1560 'nativeType': 'mozilla::glean::Category',
1561 'headerFile': 'mozilla/glean/bindings/Category.h',
1564 'nativeType': 'mozilla::glean::GleanPings',
1565 'headerFile': 'mozilla/glean/bindings/GleanPings.h',
1568 'nativeType': 'mozilla::glean::GleanLabeled',
1569 'headerFile': 'mozilla/glean/bindings/Labeled.h',
1572 'nativeType': 'mozilla::glean::GleanMetric',
1573 'headerFile': 'mozilla/glean/bindings/GleanMetric.h',
1576 'nativeType': 'mozilla::glean::GleanBoolean',
1577 'headerFile': 'mozilla/glean/bindings/Boolean.h',
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',
1588 'nativeType': 'mozilla::glean::GleanDatetime',
1589 'headerFile': 'mozilla/glean/bindings/Datetime.h',
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',
1600 'nativeType': 'mozilla::glean::GleanTimespan',
1601 'headerFile': 'mozilla/glean/bindings/Timespan.h',
1604 'nativeType': 'mozilla::glean::GleanUuid',
1605 'headerFile': 'mozilla/glean/bindings/Uuid.h',
1608 'nativeType': 'mozilla::glean::GleanEvent',
1609 'headerFile': 'mozilla/glean/bindings/Event.h',
1612 'nativeType': 'mozilla::glean::GleanQuantity',
1613 'headerFile': 'mozilla/glean/bindings/Quantity.h',
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',
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',
1636 'nativeType': 'mozilla::glean::GleanRate',
1637 'headerFile': 'mozilla/glean/bindings/Rate.h',
1640 'nativeType': 'mozilla::glean::GleanText',
1641 'headerFile': 'mozilla/glean/bindings/Text.h',
1646 'WebrtcGlobalInformation': {
1647 'nativeType': 'mozilla::dom::WebrtcGlobalInformation',
1648 'headerFile': 'WebrtcGlobalInformation.h',
1652 'nativeType': 'nsGlobalWindowInner',
1653 'headerFile': 'nsGlobalWindowInner.h',
1654 'implicitJSContext': [
1655 'requestIdleCallback', 'indexedDB'
1664 'nativeType': 'mozilla::dom::WindowProxyHolder',
1665 'headerFile': 'mozilla/dom/WindowProxyHolder.h',
1670 'nativeType': 'nsWindowRoot'
1673 'WorkerDebuggerGlobalScope': {
1674 'headerFile': 'mozilla/dom/WorkerScope.h',
1675 'implicitJSContext': [
1676 'dump', 'clearConsoleEvents', 'reportError', 'setConsoleEventHandler',
1680 'WorkerGlobalScope': {
1681 'headerFile': 'mozilla/dom/WorkerScope.h',
1682 'implicitJSContext': [ 'importScripts', 'indexedDB' ],
1686 # Paint worklets just use the Worklet interface.
1688 'implicitJSContext': [ 'addModule' ],
1691 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
1693 'implicitJSContext': ['close'],
1696 'WritableStreamDefaultWriter': {
1697 'implicitJSContext': ['close', 'releaseLock'],
1701 'nativeType': 'nsDOMSerializer',
1702 'wrapperCache': False
1706 'wrapperCache': False,
1710 'XPathExpression': {
1711 'wrapperCache': False,
1718 'XRReferenceSpace': {
1727 'nativeType': 'txMozillaXSLTProcessor',
1731 'nativeType': 'nsXULElement',
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',
1757 'headerFile': 'mozilla/extensions/ExtensionDns.h',
1758 'nativeType': 'mozilla::extensions::ExtensionDns',
1761 'ExtensionEventManager': {
1762 'headerFile': 'mozilla/extensions/ExtensionEventManager.h',
1763 'nativeType': 'mozilla::extensions::ExtensionEventManager',
1767 'headerFile': 'mozilla/extensions/ExtensionPort.h',
1768 'nativeType': 'mozilla::extensions::ExtensionPort',
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',
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 ####################################
1806 # Keep this in sync with TestExampleInterface
1807 'headerFile': 'TestBindingHeader.h',
1811 'TestParentInterface' : {
1812 'headerFile': 'TestBindingHeader.h',
1816 'TestChildInterface' : {
1817 'headerFile': 'TestBindingHeader.h',
1821 'TestCImplementedInterface' : {
1822 'headerFile': 'TestCImplementedInterface.h',
1826 'TestCImplementedInterface2' : {
1827 'headerFile': 'TestCImplementedInterface.h',
1831 'TestJSImplInterface' : {
1832 # Keep this in sync with TestExampleInterface
1833 'headerFile': 'TestJSImplGenBinding.h',
1837 'TestJSImplInterface2' : {
1838 'headerFile': 'TestJSImplGenBinding.h',
1842 'TestJSImplInterface3' : {
1843 'headerFile': 'TestJSImplGenBinding.h',
1847 'TestJSImplInterface4' : {
1848 'headerFile': 'TestJSImplGenBinding.h',
1852 'TestJSImplInterface5' : {
1853 'headerFile': 'TestJSImplGenBinding.h',
1857 'TestJSImplInterface6' : {
1858 'headerFile': 'TestJSImplGenBinding.h',
1863 'headerFile': 'TestJSImplGenBinding.h',
1867 'TestNavigatorWithConstructor' : {
1868 'headerFile': 'TestJSImplGenBinding.h',
1872 'TestExternalInterface' : {
1873 'nativeType': 'mozilla::dom::TestExternalInterface',
1874 'headerFile': 'TestBindingHeader.h',
1878 'TestNonWrapperCacheInterface' : {
1879 'headerFile': 'TestBindingHeader.h',
1881 'wrapperCache': False
1884 'IndirectlyImplementedInterface': {
1885 'headerFile': 'TestBindingHeader.h',
1890 'OnlyForUseInConstructor' : {
1891 'headerFile': 'TestBindingHeader.h',
1895 'ImplementedInterface' : {
1896 'headerFile': 'TestBindingHeader.h',
1900 'ImplementedInterfaceParent' : {
1901 'headerFile': 'TestBindingHeader.h',
1905 'DiamondImplements' : {
1906 'headerFile': 'TestBindingHeader.h',
1910 'DiamondBranch1A' : {
1911 'headerFile': 'TestBindingHeader.h',
1915 'DiamondBranch1B' : {
1916 'headerFile': 'TestBindingHeader.h',
1920 'DiamondBranch2A' : {
1921 'headerFile': 'TestBindingHeader.h',
1925 'DiamondBranch2B' : {
1926 'headerFile': 'TestBindingHeader.h',
1930 'TestIndexedGetterInterface' : {
1931 'headerFile': 'TestBindingHeader.h',
1935 'TestNamedGetterInterface' : {
1936 'headerFile': 'TestBindingHeader.h',
1940 'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
1941 'headerFile': 'TestBindingHeader.h',
1945 'TestIndexedAndNamedGetterInterface' : {
1946 'headerFile': 'TestBindingHeader.h',
1950 'TestIndexedSetterInterface' : {
1951 'headerFile': 'TestBindingHeader.h',
1955 'TestNamedSetterInterface' : {
1956 'headerFile': 'TestBindingHeader.h',
1960 'TestIndexedAndNamedSetterInterface' : {
1961 'headerFile': 'TestBindingHeader.h',
1965 'TestIndexedAndNamedGetterAndSetterInterface' : {
1966 'headerFile': 'TestBindingHeader.h',
1970 'TestRenamedInterface' : {
1971 'headerFile': 'TestBindingHeader.h',
1973 'nativeType': 'nsRenamedInterface'
1976 'TestNamedDeleterInterface' : {
1977 'headerFile': 'TestBindingHeader.h',
1981 'TestNamedDeleterWithRetvalInterface' : {
1982 'headerFile': 'TestBindingHeader.h',
1986 'TestCppKeywordNamedMethodsInterface' : {
1987 'headerFile': 'TestBindingHeader.h',
1991 'TestExampleInterface' : {
1992 # Keep this in sync with TestInterface
1993 'headerFile': 'TestExampleInterface-example.h',
1997 'TestExampleWorkerInterface' : {
1998 'headerFile': 'TestExampleWorkerInterface-example.h',
2002 'TestExampleProxyInterface' : {
2003 'headerFile': 'TestExampleProxyInterface-example.h',
2007 'TestExampleThrowingConstructorInterface' : {
2008 'headerFile': 'TestExampleThrowingConstructorInterface-example.h',
2012 'TestDeprecatedInterface' : {
2013 # Keep this in sync with TestExampleInterface
2014 'headerFile': 'TestBindingHeader.h',
2018 'TestInterfaceWithPromiseConstructorArg' : {
2019 'headerFile': 'TestBindingHeader.h',
2023 'TestSecureContextInterface' : {
2024 # Keep this in sync with TestExampleInterface
2025 'headerFile': 'TestBindingHeader.h',
2030 'headerFile': 'TestBindingHeader.h',
2034 'TestRenamedNamespace' : {
2035 'headerFile': 'TestBindingHeader.h',
2039 'TestProtoObjectHackedNamespace' : {
2040 'headerFile': 'TestBindingHeader.h',
2044 'TestWorkerExposedInterface' : {
2045 'headerFile': 'TestBindingHeader.h',
2049 'TestHTMLConstructorInterface' : {
2050 'headerFile': 'TestBindingHeader.h',
2054 'TestThrowingConstructorInterface' : {
2055 'headerFile': 'TestBindingHeader.h',
2059 'TestCEReactionsInterface' : {
2060 'headerFile': 'TestBindingHeader.h',
2064 'TestAttributesOnTypes' : {
2065 'headerFile': 'TestBindingHeader.h',
2069 'TestPrefConstructorForInterface' : {
2070 'headerFile': 'TestBindingHeader.h',
2074 'TestConstructorForPrefInterface' : {
2075 'headerFile': 'TestBindingHeader.h',
2079 'TestPrefConstructorForDifferentPrefInterface' : {
2080 'headerFile': 'TestBindingHeader.h',
2084 'TestConstructorForSCInterface' : {
2085 'headerFile': 'TestBindingHeader.h',
2089 'TestSCConstructorForInterface' : {
2090 'headerFile': 'TestBindingHeader.h',
2094 'TestConstructorForFuncInterface' : {
2095 'headerFile': 'TestBindingHeader.h',
2099 'TestFuncConstructorForInterface' : {
2100 'headerFile': 'TestBindingHeader.h',
2104 'TestFuncConstructorForDifferentFuncInterface' : {
2105 'headerFile': 'TestBindingHeader.h',
2109 'TestPrefChromeOnlySCFuncConstructorForInterface' : {
2110 'headerFile': 'TestBindingHeader.h',
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')
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',
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',
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',
2154 addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings',
2156 addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
2157 addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
2158 addExternalIface('nsISocketTransport', nativeType='nsISocketTransport',
2160 addExternalIface('nsITransportProvider', nativeType='nsITransportProvider')
2161 addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
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',
2176 addExternalIface('nsIWebProgressListener', nativeType='nsIWebProgressListener',
2178 addExternalIface('OutputStream', nativeType='nsIOutputStream',
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',
2186 addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
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',
2195 addExternalIface('nsIOpenWindowInfo', nativeType='nsIOpenWindowInfo',
2197 addExternalIface('nsICookieJarSettings', nativeType='nsICookieJarSettings',
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 = {
2225 'template': 'CSS2Property',
2226 'getter': 'GetPropertyValue',
2227 'setter': 'SetPropertyValue',
2228 'argument': ('nsCSSPropertyID', 'id'),
2229 'attrName': 'nsCSSProps::PropertyIDLName(id)',