# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # DOM Bindings Configuration. # # The WebIDL interfaces are defined in dom/webidl. For each such interface, there # is a corresponding entry in the configuration table below. The configuration # table maps each interface name to a |descriptor| or list of |descriptor|s. # # Valid fields for all descriptors: # * nativeType - The native type (concrete class or XPCOM interface) that # instances of this interface will unwrap to. If not # specified, defaults to 'mozilla::dom::InterfaceName' for # non-worker non-external-or-callback interfaces, to # 'mozilla::dom::workers::InterfaceName' for worker # non-external interfaces, to 'nsIDOM' followed by the # interface name for non-worker external-or-callback # interfaces, and to 'JSObject' for worker external-or-callback # interfaces. # * headerFile - The file in which the nativeType is declared (defaults # to an educated guess). # * concrete - Indicates whether there exist objects with this interface as # their primary interface. Always False for callback interfaces. # defaults to True otherwise. # * workers - Indicates whether the descriptor is intended to be used for # worker threads (defaults to false). # * customTrace - The native class will use a custom trace hook (defaults to # true for workers, false otherwise). # * customFinalize - The native class will use a custom finalize hook # (defaults to true for workers, false otherwise). # * notflattened - The native type does not have nsIClassInfo, so when # wrapping it the right IID needs to be passed in. # * register - True if this binding should be registered. Defaults to true. # * binaryNames - Dict for mapping method and attribute names to different # names when calling the native methods (defaults to an empty # dict). The keys are the property names as they appear in the # .webidl file and the values are the names as they should be # in the WebIDL. # * wrapperCache: True if this object is a wrapper cache. Objects that are # not can only be returned from a limited set of methods, # cannot be prefable, and must ensure that they disallow # XPConnect wrapping. Always false for callback interfaces. # Always true for worker descriptors for non-callback # interfaces. Defaults to true for non-worker non-callback # descriptors. # * nativeOwnership: Describes how the native object is held. 4 possible # types: worker object ('worker'), non-refcounted object # ('owned'), refcounted non-nsISupports object # ('refcounted') or nsISupports ('nsisupports'). # Non-refcounted objects need to inherit from # mozilla::dom::NonRefcountedDOMObject and preferably use # MOZ_COUNT_CTOR/MOZ_COUNT_DTOR in their # constructor/destructor so they participate in leak # logging. # This mostly determines how the finalizer releases the # binding's hold on the native object. For a worker object # it'll call Release, for a non-refcounted object it'll # call delete through XPConnect's deferred finalization # mechanism, for a refcounted object it'll call Release # through XPConnect's deferred finalization mechanism. # Always 'worker' for worker descriptors. Defaults to # 'nsisupports'. # # The following fields are either a string, an array (defaults to an empty # array) or a dictionary with three possible keys (all, getterOnly and # setterOnly) each having such an array as the value # # * implicitJSContext - attributes and methods specified in the .webidl file # that require a JSContext as the first argument # * resultNotAddRefed - attributes and methods specified in the .webidl file # that do not AddRef the return value # # A descriptor can also have 'skipGen': True specified if it should be skipped # when deciding what header includes to generate and should never have an # implementation generated for it. This is only needed in special cases like # worker descriptors for objects that will never actually appear in workers. DOMInterfaces = { 'AnimationEvent': { 'nativeType': 'nsDOMAnimationEvent', }, 'ArchiveReader': { 'nativeType': 'mozilla::dom::file::ArchiveReader', }, 'AudioChannelManager': { 'nativeType': 'mozilla::dom::system::AudioChannelManager', 'headerFile': 'AudioChannelManager.h' }, 'AudioContext': { 'implicitJSContext': [ 'createBuffer' ], 'nativeOwnership': 'refcounted', 'resultNotAddRefed': [ 'destination', 'listener' ], }, 'AudioBufferSourceNode': { 'implicitJSContext': [ 'start' ], 'wrapperCache': False }, 'AudioListener' : { 'nativeOwnership': 'refcounted' }, 'AudioNode' : { 'concrete': False, }, 'AudioParam' : { 'nativeOwnership': 'refcounted' }, 'AudioSourceNode': { 'concrete': False, }, 'BiquadFilterNode': { 'resultNotAddRefed': [ 'frequency', 'q', 'gain' ], 'wrapperCache': False }, 'Blob': [ { 'headerFile': 'nsIDOMFile.h', }, { 'workers': True, }], 'BatteryManager': { 'nativeType': 'mozilla::dom::battery::BatteryManager', 'headerFile': 'BatteryManager.h' }, 'CanvasRenderingContext2D': { 'implicitJSContext': [ 'createImageData', 'getImageData', 'strokeStyle', 'fillStyle', 'mozDash' ], 'resultNotAddRefed': [ 'canvas' ], 'binaryNames': { 'mozImageSmoothingEnabled': 'imageSmoothingEnabled', 'mozFillRule': 'fillRule' } }, 'CaretPosition' : { 'nativeType': 'nsDOMCaretPosition', }, 'CharacterData': { 'nativeType': 'nsGenericDOMDataNode', 'concrete': False }, 'ClientRect': { 'nativeType': 'nsClientRect', }, 'ClientRectList': { 'nativeType': 'nsClientRectList', 'headerFile': 'nsClientRect.h', 'resultNotAddRefed': [ 'item' ] }, 'CommandEvent': { 'nativeType': 'nsDOMCommandEvent', }, 'CSS': { 'concrete': False, }, 'CSS2Properties': { 'nativeType': 'nsDOMCSSDeclaration' }, 'CSSPrimitiveValue': { 'nativeType': 'nsROCSSPrimitiveValue', 'resultNotAddRefed': ['getRGBColorValue', 'getRectValue'] }, 'CSSStyleDeclaration': { 'nativeType': 'nsICSSDeclaration' }, 'CSSValue': { 'concrete': False }, 'CSSValueList': { 'nativeType': 'nsDOMCSSValueList' }, 'DelayNode': [ { 'resultNotAddRefed': [ 'delayTime' ], 'wrapperCache': False }], 'Document': [ { 'nativeType': 'nsIDocument', 'hasXPConnectImpls': True, 'resultNotAddRefed': [ 'implementation', 'doctype', 'documentElement', 'getElementById', 'adoptNode', 'defaultView', 'activeElement', 'currentScript', 'mozFullScreenElement', 'mozPointerLockElement', 'styleSheets', 'styleSheetSets', 'elementFromPoint', 'querySelector', 'getAnonymousNodes', 'getAnonymousElementByAtribute', 'getBindingParent' ] }, { 'nativeType': 'JSObject', 'workers': True, 'skipGen': True }], 'DOMParser': { 'nativeType': 'nsDOMParser', }, 'DocumentFragment': { 'resultNotAddRefed': [ 'querySelector' ] }, 'DOMSettableTokenList': { 'nativeType': 'nsDOMSettableTokenList', }, 'DOMStringMap': { 'nativeType': 'nsDOMStringMap' }, 'DOMTokenList': { 'nativeType': 'nsDOMTokenList', }, 'DummyInterface': { 'skipGen': True, 'register': False, }, 'DummyInterfaceWorkers': { 'skipGen': True, 'register': False, 'workers': True }, 'DynamicsCompressorNode': { 'resultNotAddRefed': [ 'threshold', 'knee', 'ratio', 'reduction', 'attack', 'release' ], 'binaryNames': { 'release': 'getRelease' }, 'wrapperCache': False }, 'Element': { 'hasXPConnectImpls': True, 'resultNotAddRefed': [ 'classList', 'attributes', 'children', 'firstElementChild', 'lastElementChild', 'previousElementSibling', 'nextElementSibling', 'getAttributeNode', 'getAttributeNodeNS', 'querySelector' ] }, 'Event': [ { 'nativeType': 'nsDOMEvent', 'hasXPConnectImpls': True }, { 'nativeType': 'JSObject', 'workers': True, 'skipGen': True }], 'EventListener': [ { 'nativeType': 'nsIDOMEventListener' }, { 'workers': True, }], 'EventTarget': [ { 'hasXPConnectImpls': True, 'concrete': False, }, { 'workers': True, 'concrete': False }], 'FileHandle': { 'nativeType': 'mozilla::dom::file::FileHandle' }, 'FileList': { 'nativeType': 'nsDOMFileList', 'headerFile': 'nsDOMFile.h', 'resultNotAddRefed': [ 'item' ] }, 'FileReaderSync': { 'workers': True, }, 'UndoManager': [ { 'implicitJSContext' : [ 'undo', 'redo', 'transact' ] }], 'FormData': [ { 'nativeType': 'nsFormData' }, { 'workers': True, 'skipGen': True, 'nativeType': 'JSObject' }], 'GainNode': { 'resultNotAddRefed': [ 'gain' ], 'wrapperCache': False }, 'HTMLBaseElement': { 'nativeType': 'mozilla::dom::HTMLSharedElement' }, 'HTMLCollection': { 'nativeType': 'nsIHTMLCollection', 'resultNotAddRefed': [ 'item' ] }, 'HTMLDataListElement': { 'resultNotAddRefed': [ 'options' ] }, 'HTMLDirectoryElement': { 'nativeType': 'mozilla::dom::HTMLSharedElement' }, 'HTMLDListElement': { 'nativeType' : 'mozilla::dom::HTMLSharedListElement' }, 'HTMLDocument': { 'nativeType': 'nsHTMLDocument', 'register': False, 'hasXPConnectImpls': True, 'resultNotAddRefed': [ 'body', 'head', 'images', 'embeds', 'plugins', 'links', 'forms', 'scripts', 'anchors', 'applets' ], 'implicitJSContext': [ 'open', 'write', 'writeln' ] }, 'HTMLElement': { 'nativeType': 'nsGenericHTMLElement', 'hasXPConnectImpls': True, 'resultNotAddRefed': [ 'itemType', 'itemRef', 'itemProp', 'properties', 'contextMenu', 'style', 'offsetParent' ] }, 'HTMLHeadElement': { 'nativeType': 'mozilla::dom::HTMLSharedElement' }, 'HTMLHtmlElement': { 'nativeType': 'mozilla::dom::HTMLSharedElement' }, 'HTMLLabelElement': { 'resultNotAddRefed': [ 'form', 'control' ], }, 'HTMLOListElement': { 'nativeType' : 'mozilla::dom::HTMLSharedListElement' }, 'HTMLOptionsCollection': { 'nativeType': 'nsHTMLOptionCollection', 'headerFile': 'nsHTMLSelectElement.h', 'resultNotAddRefed': [ 'item' ], 'binaryNames': { '__indexedsettercreator': 'SetOption' } }, 'HTMLParamElement': { 'nativeType': 'mozilla::dom::HTMLSharedElement' }, 'HTMLPropertiesCollection': { 'headerFile': 'HTMLPropertiesCollection.h', 'resultNotAddRefed': [ 'item', 'namedItem', 'names' ] }, 'HTMLQuoteElement': { 'nativeType': 'mozilla::dom::HTMLSharedElement' }, 'HTMLTableElement': { 'resultNotAddRefed': [ 'caption', 'tHead', 'tFoot', 'tBodies', 'rows' ] }, 'HTMLTableRowElement': { 'resultNotAddRefed': [ 'cells' ] }, 'HTMLTableSectionElement': { 'resultNotAddRefed': [ 'rows' ] }, 'HTMLTextAreaElement': { 'resultNotAddRefed': [ 'form', 'controllers', 'editor' ], 'binaryNames': { 'textLength': 'getTextLength' } }, 'HTMLStyleElement': { 'resultNotAddRefed': [ 'sheet' ] }, 'HTMLUListElement': { 'nativeType' : 'mozilla::dom::HTMLSharedListElement' }, 'IDBVersionChangeEvent': { 'nativeType': 'mozilla::dom::indexedDB::IDBVersionChangeEvent', 'headerFile': 'IDBEvents.h', }, 'IID': [ { 'nativeType': 'nsIJSID', 'headerFile': 'xpcjsid.h', }, { 'workers': True, }], 'ImageData': { 'wrapperCache': False }, 'InputStream': [ { 'nativeType': 'nsIInputStream', 'notflattened': True }, { 'workers': True, }], 'Location': { # NOTE: Before you turn on codegen for Location, make sure all the # Unforgeable stuff is dealt with. 'nativeType': 'nsIDOMLocation', 'skipGen': True, 'register': False }, 'MediaStream': [{ 'headerFile': 'DOMMediaStream.h', 'nativeType': 'mozilla::DOMMediaStream' }, { 'nativeType': 'JSObject', 'workers': True, 'skipGen': True }], 'LocalMediaStream': { 'headerFile': 'DOMMediaStream.h', 'nativeType': 'mozilla::DOMLocalMediaStream' }, 'MediaStreamList': { 'headerFile': 'MediaStreamList.h', 'wrapperCache': False, 'nativeOwnership': 'owned', 'resultNotAddRefed': [ '__indexedGetter' ], 'binaryNames': { '__indexedGetter': 'IndexedGetter' } }, 'MessageEvent': { 'nativeType': 'nsDOMMessageEvent', }, 'MozChannel': [ { 'nativeType': 'nsIChannel', 'notflattened': True }, { 'workers': True, }], 'MutationEvent': { 'nativeType': 'nsDOMMutationEvent', }, 'MutationObserver': { 'nativeType': 'nsDOMMutationObserver', }, 'MutationRecord': { 'nativeType': 'nsDOMMutationRecord', 'headerFile': 'nsDOMMutationObserver.h', 'resultNotAddRefed': [ 'target', 'addedNodes', 'removedNodes', 'previousSibling', 'nextSibling' ] }, 'Node': { 'nativeType': 'nsINode', 'concrete': False, 'hasXPConnectImpls': True, 'resultNotAddRefed': [ 'ownerDocument', 'parentNode', 'parentElement', 'childNodes', 'firstChild', 'lastChild', 'previousSibling', 'nextSibling', 'insertBefore', 'appendChild', 'replaceChild', 'removeChild', 'attributes' ] }, 'NodeIterator': { 'wrapperCache': False, 'resultNotAddRefed': [ 'root', 'referenceNode' ], }, 'NodeList': { 'nativeType': 'nsINodeList', 'resultNotAddRefed': [ 'item' ] }, 'PaintRequest': { 'nativeType': 'nsPaintRequest', }, 'PaintRequestList': { 'nativeType': 'nsPaintRequestList', 'headerFile': 'nsPaintRequest.h', 'resultNotAddRefed': [ 'item' ] }, 'PannerNode': [ { 'resultNotAddRefed': [ 'coneGain', 'distanceGain' ], 'wrapperCache': False }], 'Performance': { 'nativeType': 'nsPerformance', 'resultNotAddRefed': [ 'timing', 'navigation' ] }, 'PerformanceTiming': { 'nativeType': 'nsPerformanceTiming', 'headerFile': 'nsPerformance.h', 'nativeOwnership': 'refcounted' }, 'PerformanceNavigation': { 'nativeType': 'nsPerformanceNavigation', 'headerFile': 'nsPerformance.h', 'nativeOwnership': 'refcounted' }, 'PropertyNodeList': { 'headerFile': 'HTMLPropertiesCollection.h', 'resultNotAddRefed': [ 'item' ] }, 'Range': { 'nativeType': 'nsRange', 'resultNotAddRefed': [ 'startContainer', 'endContainer', 'commonAncestorContainer' ], 'binaryNames': { '__stringifier': 'ToString' } }, 'Rect': { 'nativeType': 'nsDOMCSSRect', 'resultNotAddRefed': [ 'top', 'right', 'bottom', 'left' ] }, 'RGBColor': { 'nativeOwnership': 'refcounted', 'nativeType': 'nsDOMCSSRGBColor', 'resultNotAddRefed': [ 'alpha', 'blue', 'green', 'red' ] }, 'Screen': { 'nativeType': 'nsScreen', }, 'SVGAnimatedLengthList': { 'nativeType': 'mozilla::DOMSVGAnimatedLengthList', 'headerFile': 'DOMSVGAnimatedLengthList.h' }, 'SVGAnimatedNumberList': { 'nativeType': 'mozilla::DOMSVGAnimatedNumberList', 'headerFile': 'DOMSVGAnimatedNumberList.h' }, 'SVGAnimatedPreserveAspectRatio': { 'nativeType': 'mozilla::dom::DOMSVGAnimatedPreserveAspectRatio', 'headerFile': 'SVGAnimatedPreserveAspectRatio.h' }, 'SVGAnimatedTransformList': { 'nativeType': 'mozilla::DOMSVGAnimatedTransformList', 'headerFile': 'DOMSVGAnimatedTransformList.h' }, 'SVGAnimationElement': { 'resultNotAddRefed': ['targetElement'], 'concrete': False }, 'SVGComponentTransferFunctionElement': { 'concrete': False, }, 'SVGElement': { 'nativeType': 'nsSVGElement', 'hasXPConnectImpls': True, 'resultNotAddRefed': ['ownerSVGElement', 'viewportElement', 'style'] }, 'SVGFEFuncAElement': { 'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h', }, 'SVGFEFuncBElement': { 'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h', }, 'SVGFEFuncGElement': { 'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h', }, 'SVGFEFuncRElement': { 'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h', }, 'SVGGraphicsElement': { 'concrete': False, 'resultNotAddRefed': ['nearestViewportElement', 'farthestViewportElement'] }, 'SVGGradientElement': { 'concrete': False, }, 'SVGLengthList': { 'nativeType': 'mozilla::DOMSVGLengthList', 'headerFile': 'DOMSVGLengthList.h', 'resultNotAddRefed': [ 'getItem' ] }, 'SVGLinearGradientElement': { 'headerFile': 'mozilla/dom/SVGGradientElement.h', }, 'SVGMatrix' : { 'nativeOwnership': 'refcounted' }, 'SVGNumberList': { 'nativeType': 'mozilla::DOMSVGNumberList', 'headerFile': 'DOMSVGNumberList.h', 'resultNotAddRefed': [ 'getItem' ] }, 'SVGPathSeg': { 'nativeType': 'mozilla::DOMSVGPathSeg', 'headerFile': 'DOMSVGPathSeg.h', 'concrete': False, }, 'SVGPathSegClosePath': { 'nativeType': 'mozilla::DOMSVGPathSegClosePath', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegMovetoAbs': { 'nativeType': 'mozilla::DOMSVGPathSegMovetoAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegMovetoRel': { 'nativeType': 'mozilla::DOMSVGPathSegMovetoRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegLinetoAbs': { 'nativeType': 'mozilla::DOMSVGPathSegLinetoAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegLinetoRel': { 'nativeType': 'mozilla::DOMSVGPathSegLinetoRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoCubicAbs': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoCubicRel': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoQuadraticAbs': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoQuadraticRel': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegArcAbs': { 'nativeType': 'mozilla::DOMSVGPathSegArcAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegArcRel': { 'nativeType': 'mozilla::DOMSVGPathSegArcRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegLinetoHorizontalAbs': { 'nativeType': 'mozilla::DOMSVGPathSegLinetoHorizontalAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegLinetoHorizontalRel': { 'nativeType': 'mozilla::DOMSVGPathSegLinetoHorizontalRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegLinetoVerticalAbs': { 'nativeType': 'mozilla::DOMSVGPathSegLinetoVerticalAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegLinetoVerticalRel': { 'nativeType': 'mozilla::DOMSVGPathSegLinetoVerticalRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoCubicSmoothAbs': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicSmoothAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoCubicSmoothRel': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicSmoothRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoQuadraticSmoothAbs': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticSmoothAbs', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegCurvetoQuadraticSmoothRel': { 'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticSmoothRel', 'headerFile': 'DOMSVGPathSeg.h' }, 'SVGPathSegList': { 'nativeType': 'mozilla::DOMSVGPathSegList', 'headerFile': 'DOMSVGPathSegList.h', 'resultNotAddRefed': [ 'getItem' ] }, 'SVGPoint': { 'nativeType': 'mozilla::nsISVGPoint', 'headerFile': 'nsISVGPoint.h' }, 'SVGPointList': { 'nativeType': 'mozilla::DOMSVGPointList', 'headerFile': 'DOMSVGPointList.h', 'resultNotAddRefed': [ 'getItem' ] }, 'SVGPreserveAspectRatio': { 'nativeType': 'mozilla::dom::DOMSVGPreserveAspectRatio', 'headerFile': 'SVGPreserveAspectRatio.h' }, 'SVGRadialGradientElement': { 'headerFile': 'mozilla/dom/SVGGradientElement.h', }, 'SVGTextContentElement': { 'concrete': False }, 'SVGTextPositioningElement': { 'concrete': False }, 'SVGTransform': { 'nativeType': 'mozilla::DOMSVGTransform', 'headerFile': 'DOMSVGTransform.h', 'resultNotAddRefed': [ 'matrix' ] }, 'SVGTransformList': { 'nativeType': 'mozilla::DOMSVGTransformList', 'headerFile': 'DOMSVGTransformList.h', 'resultNotAddRefed': [ 'getItem' ] }, 'SVGSVGElement': { 'resultNotAddRefed': [ 'getElementById' ] }, 'SVGUnitTypes' : { 'concrete': False, }, 'Text': { # Total hack to allow binding code to realize that nsTextNode can # in fact be cast to Text. 'headerFile': 'nsTextNode.h', }, 'TextDecoder': [ { 'nativeOwnership': 'refcounted', }, { 'workers': True, }], 'TextEncoder': [ { 'nativeOwnership': 'refcounted', 'implicitJSContext': [ 'encode' ], }, { 'workers': True, 'implicitJSContext': [ 'encode' ], }], 'TimeRanges': { 'wrapperCache': False }, 'TransitionEvent': { 'nativeType': 'nsDOMTransitionEvent', }, 'TreeWalker': { 'wrapperCache': False, 'resultNotAddRefed': [ 'root', 'currentNode' ], }, 'UIEvent': { 'nativeType': 'nsDOMUIEvent', }, 'URL' : [{ 'concrete': False, }, { 'implicitJSContext': [ 'createObjectURL', 'revokeObjectURL' ], 'workers': True, }], 'WebGLActiveInfo': { 'nativeType': 'mozilla::WebGLActiveInfo', 'headerFile': 'WebGLContext.h', 'wrapperCache': False }, 'WebGLBuffer': { 'nativeType': 'mozilla::WebGLBuffer', 'headerFile': 'WebGLBuffer.h' }, 'WebGLExtensionCompressedTextureATC': { 'nativeType': 'mozilla::WebGLExtensionCompressedTextureATC', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionCompressedTexturePVRTC': { 'nativeType': 'mozilla::WebGLExtensionCompressedTexturePVRTC', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionCompressedTextureS3TC': { 'nativeType': 'mozilla::WebGLExtensionCompressedTextureS3TC', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionDepthTexture': { 'nativeType': 'mozilla::WebGLExtensionDepthTexture', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionDebugRendererInfo': { 'nativeType': 'mozilla::WebGLExtensionDebugRendererInfo', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionLoseContext': { 'nativeType': 'mozilla::WebGLExtensionLoseContext', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionStandardDerivatives': { 'nativeType': 'mozilla::WebGLExtensionStandardDerivatives', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionTextureFilterAnisotropic': { 'nativeType': 'mozilla::WebGLExtensionTextureFilterAnisotropic', 'headerFile': 'WebGLExtensions.h' }, 'WebGLExtensionTextureFloat': { 'nativeType': 'mozilla::WebGLExtensionTextureFloat', 'headerFile': 'WebGLExtensions.h' }, 'WebGLFramebuffer': { 'nativeType': 'mozilla::WebGLFramebuffer', 'headerFile': 'WebGLFramebuffer.h' }, 'WebGLProgram': { 'nativeType': 'mozilla::WebGLProgram', 'headerFile': 'WebGLProgram.h' }, 'WebGLRenderbuffer': { 'nativeType': 'mozilla::WebGLRenderbuffer', 'headerFile': 'WebGLRenderbuffer.h' }, 'WebGLRenderingContext': { 'nativeType': 'mozilla::WebGLContext', 'headerFile': 'WebGLContext.h', 'resultNotAddRefed': [ 'canvas', 'getContextAttributes', 'getExtension', 'getAttachedShaders' ], 'implicitJSContext': [ 'getSupportedExtensions' ], }, 'WebGLShader': { 'nativeType': 'mozilla::WebGLShader', 'headerFile': 'WebGLShader.h' }, 'WebGLShaderPrecisionFormat': { 'nativeType': 'mozilla::WebGLShaderPrecisionFormat', 'headerFile': 'WebGLShaderPrecisionFormat.h', 'wrapperCache': False }, 'WebGLTexture': { 'nativeType': 'mozilla::WebGLTexture', 'headerFile': 'WebGLTexture.h' }, 'WebGLUniformLocation': { 'nativeType': 'mozilla::WebGLUniformLocation', 'headerFile': 'WebGLUniformLocation.h', 'wrapperCache': False }, 'WebSocket': { 'headerFile': 'WebSocket.h', 'implicitJSContext': [ 'constructor' ] }, 'XMLHttpRequest': [ { 'nativeType': 'nsXMLHttpRequest', 'implicitJSContext': [ 'constructor', ], 'resultNotAddRefed': [ 'upload', 'responseXML' ] }, { 'workers': True, }], 'XMLHttpRequestEventTarget': [ { 'nativeType': 'nsXHREventTarget', 'headerFile': 'nsXMLHttpRequest.h', 'concrete': False }, { 'workers': True, 'concrete': False, }], 'XMLHttpRequestUpload': [ { 'nativeType': 'nsXMLHttpRequestUpload', 'headerFile': 'nsXMLHttpRequest.h' }, { 'workers': True, }], 'XMLSerializer': { 'nativeType': 'nsDOMSerializer', }, 'XMLStylesheetProcessingInstruction': { 'resultNotAddRefed': [ 'sheet' ] }, 'XPathEvaluator': { 'nativeType': 'nsXPathEvaluator', 'headerFile': 'nsXPathEvaluator.h', 'wrapperCache': False }, 'XULElement': { 'nativeType': 'nsXULElement', 'resultNotAddRefed': [ 'controllers', 'style' ] }, #################################### # Test Interfaces of various sorts # #################################### 'TestInterface' : { # Keep this in sync with TestExampleInterface 'headerFile': 'TestBindingHeader.h', 'register': False, 'resultNotAddRefed': [ 'receiveWeakSelf', 'receiveWeakNullableSelf', 'receiveWeakOther', 'receiveWeakNullableOther', 'receiveWeakExternal', 'receiveWeakNullableExternal', 'ReceiveWeakCallbackInterface', 'ReceiveWeakNullableCallbackInterface', 'receiveWeakCastableObjectSequence', 'receiveWeakNullableCastableObjectSequence', 'receiveWeakCastableObjectNullableSequence', 'receiveWeakNullableCastableObjectNullableSequence' ], 'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo', 'attributeGetterRenamedFrom': 'attributeGetterRenamedTo', 'attributeRenamedFrom': 'attributeRenamedTo' } }, 'TestParentInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False, }, 'TestChildInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False, }, 'TestExternalInterface' : { 'nativeType': 'mozilla::dom::TestExternalInterface', 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestNonWrapperCacheInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False, 'wrapperCache': False }, 'IndirectlyImplementedInterface': { 'headerFile': 'TestBindingHeader.h', 'register': False, 'castable': False, 'concrete': False }, 'OnlyForUseInConstructor' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'ImplementedInterface' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False, }, 'ImplementedInterfaceParent' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False }, 'DiamondImplements' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False }, 'DiamondBranch1A' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False }, 'DiamondBranch1B' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False }, 'DiamondBranch2A' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False }, 'DiamondBranch2B' : { 'headerFile': 'TestBindingHeader.h', 'concrete': False, 'register': False }, 'TestIndexedGetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestNamedGetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedGetterAndSetterAndNamedGetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedAndNamedGetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedSetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestNamedSetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedAndNamedSetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedAndNamedGetterAndSetterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False, }, 'TestRenamedInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False, 'nativeType': 'nsRenamedInterface' }, 'TestIndexedDeleterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedDeleterWithRetvalInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestNamedDeleterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestNamedDeleterWithRetvalInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestIndexedAndNamedDeleterInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestCppKeywordNamedMethodsInterface' : { 'headerFile': 'TestBindingHeader.h', 'register': False }, 'TestExampleInterface' : { # Keep this in sync with TestInterface 'headerFile': 'TestExampleInterface-example.h', 'register': False, 'resultNotAddRefed': [ 'receiveWeakSelf', 'receiveWeakNullableSelf', 'receiveWeakOther', 'receiveWeakNullableOther', 'receiveWeakExternal', 'receiveWeakNullableExternal', 'ReceiveWeakCallbackInterface', 'ReceiveWeakNullableCallbackInterface', 'receiveWeakCastableObjectSequence', 'receiveWeakNullableCastableObjectSequence', 'receiveWeakCastableObjectNullableSequence', 'receiveWeakNullableCastableObjectNullableSequence' ], 'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo', 'attributeGetterRenamedFrom': 'attributeGetterRenamedTo', 'attributeRenamedFrom': 'attributeRenamedTo' } }, 'TestExampleProxyInterface' : { 'headerFile': 'TestExampleProxyInterface-example.h', 'register': False } } # These are temporary, until they've been converted to use new DOM bindings def addExternalIface(iface, nativeType=None, headerFile=None, notflattened=False): if iface in DOMInterfaces: raise Exception('Interface declared both as WebIDL and External interface') domInterface = { 'concrete': False } if not nativeType is None: domInterface['nativeType'] = nativeType if not headerFile is None: domInterface['headerFile'] = headerFile domInterface['notflattened'] = notflattened DOMInterfaces[iface] = domInterface # If you add one of these, you need to make sure nsDOMQS.h has the relevant # macros added for it def addExternalHTMLElement(element): nativeElement = 'ns' + element addExternalIface(element, nativeType=nativeElement, headerFile=nativeElement + '.h') addExternalHTMLElement('HTMLFormElement') addExternalHTMLElement('HTMLVideoElement') addExternalIface('ArchiveRequest') addExternalIface('Attr') addExternalIface('CanvasGradient', headerFile='nsIDOMCanvasRenderingContext2D.h') addExternalIface('CanvasPattern', headerFile='nsIDOMCanvasRenderingContext2D.h') addExternalIface('Counter') addExternalIface('CSSRule') addExternalIface('DOMRequest') addExternalIface('DOMStringList') addExternalIface('File') addExternalIface('HitRegionOptions', nativeType='nsISupports') addExternalIface('HTMLCanvasElement', nativeType='mozilla::dom::HTMLCanvasElement') addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver') addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True) addExternalIface('LockedFile') addExternalIface('MenuBuilder', nativeType='nsIMenuBuilder', notflattened=True) addExternalIface('MozBoxObject', nativeType='nsIBoxObject') addExternalIface('MozControllers', nativeType='nsIControllers') addExternalIface('MozFrameLoader', nativeType='nsIFrameLoader', notflattened=True) addExternalIface('MozRDFCompositeDataSource', nativeType='nsIRDFCompositeDataSource', notflattened=True) addExternalIface('MozRDFResource', nativeType='nsIRDFResource', notflattened=True) addExternalIface('MozXULTemplateBuilder', nativeType='nsIXULTemplateBuilder') addExternalIface('MozNamedAttrMap') addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True) addExternalIface('nsISupports', nativeType='nsISupports') addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True) addExternalIface('OutputStream', nativeType='nsIOutputStream', notflattened=True) addExternalIface('Principal', nativeType='nsIPrincipal', headerFile='nsIPrincipal.h', notflattened=True) addExternalIface('Selection', nativeType='nsISelection') addExternalIface('StyleSheet', nativeType='nsIStyleSheet') addExternalIface('StyleSheetList') addExternalIface('SVGAnimatedEnumeration', headerFile='nsIDOMSVGAnimatedEnum.h') addExternalIface('SVGAnimatedNumber') addExternalIface('SVGAnimatedString') addExternalIface('SVGLength') addExternalIface('SVGNumber') addExternalIface('TextMetrics', headerFile='nsIDOMCanvasRenderingContext2D.h') addExternalIface('Touch', headerFile='nsIDOMTouchEvent.h') addExternalIface('TouchList', headerFile='nsIDOMTouchEvent.h') addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h', notflattened=True) addExternalIface('UserDataHandler') addExternalIface('Window') addExternalIface('WindowProxy', nativeType='nsIDOMWindow') addExternalIface('XPathResult', nativeType='nsISupports') addExternalIface('XPathExpression') addExternalIface('XPathNSResolver')