diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/script/dom/bindings/codegen/Bindings.conf | 591 |
1 files changed, 44 insertions, 547 deletions
diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 8485377ed8b..aabb3511bee 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -4,554 +4,99 @@ # 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. +# The WebIDL interfaces are defined in dom/webidls. For each such interface, +# there is a corresponding entry in the configuration table below. +# The configuration table maps each interface name to a |descriptor|. # # 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). -# * castable - Indicates whether the value in the wrapper can be cast to -# nativeType, or whether it needs to be QI-ed (defaults to True -# for everything but callback interfaces and external interfaces, -# for which it defaults to false and is not allowed to be set -# at all). -# * concrete - Indicates whether there exist objects with this interface as -# their primary interface (defaults to True). -# * prefable - Indicates whether this bindings should be disabled if the -# global pref for Web IDL bindings is set to false. This is a -# risk mitigation strategy and it will cause all of the Web IDL -# bindings marked as prefable to fall back to the xpconnect -# bindings in case something goes wrong. This defaults to False. -# Setting this on objects which only have Web IDL bindings does -# not make any sense. -# Cannot be set on external interfaces. -# * 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 true for worker descriptors. -# Defaults to true. -# -# 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 +# * needsAbstract: a list of members that require a JS<>-wrapped version of +# self to be passed to the native code. +# * createGlobal: True for global objects. DOMInterfaces = { -'Attr' : { -}, - -'AudioBuffer' : { -}, - -'AttrList': { -}, - -'mozAudioContext': { - 'nativeType': 'AudioContext', - 'implicitJSContext': [ 'createBuffer' ], -}, - -'AudioNode' : { - 'concrete': False, -}, - -'AudioSourceNode': { - 'concrete': False, -}, - -'AudioBufferSourceNode': { -}, - -'AudioDestinationNode': { -}, - -'Blob': [ -{ -}, -#{ -# 'workers': True, -#} -], - -'CanvasRenderingContext2D': [ -{ - 'nativeType': 'nsCanvasRenderingContext2DAzure', - # Making this non-prefable requires that we ensure that nothing takes this - # type as an argument or that the non-Azure variant is removed. - 'prefable': True, - 'implicitJSContext': [ - 'createImageData', 'getImageData', 'putImageData', 'strokeStyle', - 'fillStyle', 'mozDash' - ], - 'resultNotAddRefed': [ 'canvas' ], - 'binaryNames': { - 'mozImageSmoothingEnabled': 'imageSmoothingEnabled', - 'mozFillRule': 'fillRule' - } -}], - -'CharacterData': { -}, - -'ClientRect': [ -{ -}], - -'ClientRectList': [ -{ -}], - -'Console': { -}, - -'CSS2Properties': { - 'nativeType': 'nsDOMCSSDeclaration', - 'prefable': True, -}, - -'CSSStyleDeclaration': { - 'nativeType': 'nsICSSDeclaration', - 'prefable': True -}, - +'Attr': {}, +'AudioBuffer': {}, +'AttrList': {}, +'Blob': {}, +'CanvasRenderingContext2D': {}, +'CharacterData': {}, +'ClientRect': {}, +'ClientRectList': {}, +'Console': {}, 'Document': { - 'customTrace': 'trace', 'needsAbstract': [ + 'body', 'createComment', 'createDocumentFragment', 'createElement', 'createProcessingInstruction', 'createTextNode', 'title', - 'body', ], }, - -'DOMException': { -}, - -'DOMImplementation': { -}, - -'DOMParser': { -}, - -'DOMSettableTokenList': [ -{ - 'nativeType': 'nsDOMSettableTokenList', - 'prefable': True, - 'binaryNames': { - '__stringifier': 'Stringify' - } -}], - -'DOMTokenList': [ -{ - 'nativeType': 'nsDOMTokenList', - 'prefable': True, - 'binaryNames': { - '__stringifier': 'Stringify' - } -}], - +'DOMException': {}, +'DOMImplementation': {}, +'DOMParser': {}, 'Element': { - 'needsAbstract': ['getClientRects', 'getBoundingClientRect', 'setAttribute', 'setAttributeNS', 'removeAttribute', 'removeAttributeNS', 'id', 'attributes', 'innerHTML', 'outerHTML'] -}, - -'Event': { + 'needsAbstract': [ + 'attributes', + 'getBoundingClientRect', + 'getClientRects', + 'id', + 'innerHTML', + 'outerHTML', + 'removeAttribute', + 'removeAttributeNS', + 'setAttribute', + 'setAttributeNS', + ] }, - +'Event': {}, 'EventListener': { 'nativeType': 'EventListenerBinding::EventListener', }, - 'EventTarget': { 'needsAbstract': ['dispatchEvent'] }, - -'FileList': [ -{ - 'nativeType': 'nsDOMFileList', - 'headerFile': 'nsDOMFile.h', - 'prefable': True, - 'resultNotAddRefed': [ 'item' ] -}], - -'FileReaderSync': [ -{ - 'workers': True, - 'headerFile': 'mozilla/dom/workers/bindings/FileReaderSync.h' -}], - -'FormData': [ -{ -}, -#{ -# 'workers': True, -#} -], - -'HTMLCollection': [ -{ -}], - -'HTMLOptionsCollection': [ -{ - 'nativeType': 'nsHTMLOptionCollection', - 'headerFile': 'nsHTMLSelectElement.h', - 'prefable': True, - 'resultNotAddRefed': [ 'item' ], - 'binaryNames': { - '__indexedsettercreator': 'SetOption' - } -}], - -'HTMLPropertiesCollection': [ -{ - 'headerFile': 'HTMLPropertiesCollection.h', - 'prefable': True, - 'resultNotAddRefed': [ 'item', 'namedItem', 'names' ] -}], - -'IID': [ -{ - 'nativeType': 'nsIJSIID', - 'headerFile': 'xpcjsid.h', -}, -{ - 'workers': True, -}], - -'InputStream': [ -{ - 'nativeType': 'nsIInputStream', - 'notflattened': True -}, -{ - 'workers': True, -}], - -'Location': { -}, - -'MozChannel': [ -{ - 'nativeType': 'nsIChannel', - 'notflattened': True -}, -{ - 'workers': True, -}], - -'MouseEvent': { -}, - -'Navigator': { -}, - +'FormData': {}, +'HTMLCollection': {}, +'Location': {}, +'MouseEvent': {}, +'Navigator': {}, 'Node': { 'needsAbstract': [ 'appendChild', 'childNodes', - 'insertBefore', + 'contains', + 'insertBefore', + 'isEqualNode', 'nodeName', 'nodeValue', 'removeChild', 'replaceChild', 'textContent', - 'contains', - 'isEqualNode', ] }, -'NodeList': [ -{ - 'resultNotAddRefed': ['item'] -}], - -'PaintRequestList': [ -{ - 'nativeType': 'nsPaintRequestList', - 'headerFile': 'nsPaintRequest.h', - 'prefable': True, - 'resultNotAddRefed': [ 'item' ] -}], - -'Performance': { - 'nativeType': 'nsPerformance', - 'resultNotAddRefed': [ 'timing', 'navigation' ] -}, - -'PerformanceTiming': { - 'nativeType': 'nsPerformanceTiming', - 'headerFile': 'nsPerformance.h' -}, - -'PerformanceNavigation': { - 'nativeType': 'nsPerformanceNavigation', - 'headerFile': 'nsPerformance.h' -}, - -'PropertyNodeList': [ -{ - 'headerFile': 'HTMLPropertiesCollection.h', - 'prefable': True, - 'resultNotAddRefed': [ 'item' ] -}], - -'SVGLengthList': [ -{ - 'nativeType': 'mozilla::DOMSVGLengthList', - 'headerFile': 'DOMSVGLengthList.h', - 'prefable': True, - 'resultNotAddRefed': [ 'getItem' ] -}], - -'SVGNumberList': [ -{ - 'nativeType': 'mozilla::DOMSVGNumberList', - 'headerFile': 'DOMSVGNumberList.h', - 'prefable': True, - 'resultNotAddRefed': [ 'getItem' ] -}], - -'SVGPathSegList': [ -{ - 'nativeType': 'mozilla::DOMSVGPathSegList', - 'headerFile': 'DOMSVGPathSegList.h', - 'prefable': True, - 'resultNotAddRefed': [ 'getItem' ] -}], - -'SVGPointList': [ -{ - 'nativeType': 'mozilla::DOMSVGPointList', - 'headerFile': 'DOMSVGPointList.h', - 'prefable': True, - 'resultNotAddRefed': [ 'getItem' ] -}], - -'SVGTransformList': [ -{ - 'nativeType': 'mozilla::DOMSVGTransformList', - 'headerFile': 'DOMSVGTransformList.h', - 'prefable': True, - 'resultNotAddRefed': [ 'getItem' ] -}], - -'UIEvent': { -}, - -'ValidityState': { -}, - -'WebGLRenderingContext': { - 'nativeType': 'mozilla::WebGLContext', - 'headerFile': 'WebGLContext.h', - 'resultNotAddRefed': [ 'canvas', 'getContextAttributes', 'getExtension', - 'getAttachedShaders' ], - 'implicitJSContext': [ 'texImage2D', 'texSubImage2D' ], -}, - -'WebGLUniformLocation': { - 'nativeType': 'mozilla::WebGLUniformLocation', - 'headerFile': 'WebGLContext.h', - 'wrapperCache': False -}, - -'XMLHttpRequest': [ -{ - 'nativeType': 'nsXMLHttpRequest', - 'implicitJSContext': [ 'constructor', ], - 'resultNotAddRefed': [ 'upload', 'responseXML' ] -}, -{ - 'workers': True, - 'headerFile': 'mozilla/dom/workers/bindings/XMLHttpRequest.h', -}], - -'XMLHttpRequestEventTarget': [ -{ - 'nativeType': 'nsXHREventTarget', - 'headerFile': 'nsXMLHttpRequest.h', - 'concrete': False, - 'prefable': True, -}, -{ - 'workers': True, - 'concrete': False, - 'headerFile': 'mozilla/dom/workers/bindings/XMLHttpRequestEventTarget.h' -}], - -'XMLHttpRequestUpload': [ -{ - 'nativeType': 'nsXMLHttpRequestUpload', - 'headerFile': 'nsXMLHttpRequest.h', - 'prefable': True -}, -{ - 'workers': True, - 'headerFile': 'mozilla/dom/workers/bindings/XMLHttpRequestUpload.h' -}], - -'WebSocket': [ -{ - 'headerFile': 'WebSocket.h', - 'implicitJSContext': [ 'constructor' ] -}], +'NodeList': {}, +'UIEvent': {}, +'ValidityState': {}, 'Window': { 'createGlobal': True, - 'customTrace': 'trace' }, -'WindowProxy': { -}, - -#################################### -# Test Interfaces of various sorts # -#################################### - -'TestInterface' : { - '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' } - }, - -'TestNonCastableInterface' : { - 'headerFile': 'TestBindingHeader.h', - 'register': False, - 'castable': False - }, +'WindowProxy': {}, -'TestExternalInterface' : { - 'nativeType': 'mozilla::dom::TestExternalInterface', - 'headerFile': 'TestBindingHeader.h', - 'register': False - }, - -'TestNonWrapperCacheInterface' : { - 'headerFile': 'TestBindingHeader.h', - 'register': False, - 'wrapperCache': False - }, - -'TestCallbackInterface': { - 'nativeType': 'mozilla::dom::TestCallbackInterface', - 'headerFile': 'TestBindingHeader.h', - 'register': False - }, - -'IndirectlyImplementedInterface': { - 'headerFile': 'TestBindingHeader.h', - 'register': False, - 'castable': False, - 'concrete': False - }, - -'OnlyForUseInConstructor' : { - 'headerFile': 'TestBindingHeader.h', - 'register': False - }, - - -'TestIndexedGetterInterface' : { - 'headerFile': 'TestBindingHeader.h', - 'register': False - }, - -'TestNamedGetterInterface' : { - '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, - 'binaryNames': { '__stringifier': 'Stringify' } - }, } -# These are temporary, until they've been converted to use new DOM bindings -def addExternalIface(iface, nativeType=None, headerFile=None, pointerType=None): - domInterface = { - 'concrete': False - } - if not nativeType is None: - domInterface['nativeType'] = nativeType - if not headerFile is None: - domInterface['headerFile'] = headerFile - if not pointerType is None: - domInterface['pointerType'] = pointerType - DOMInterfaces[iface] = domInterface - # FIXME: This should be renamed: https://github.com/mozilla/servo/issues/1625 def addHTMLElement(element, concrete=None, needsAbstract=[]): DOMInterfaces[element] = { 'nativeType': 'JS<%s>' % element, 'pointerType': '', 'concreteType': concrete if concrete else element, - 'customTrace': 'trace', 'needsAbstract': needsAbstract } @@ -630,51 +175,3 @@ addHTMLElement('HTMLTrackElement') addHTMLElement('HTMLUListElement') addHTMLElement('HTMLVideoElement') addHTMLElement('HTMLUnknownElement') - -# If you add one of these, you need to make sure nsDOMQS.h has the relevant -# macros added for it -def addExternalHTMLElement(element): - nativeElement = element - addExternalIface(element, nativeType=nativeElement, - headerFile=nativeElement + '.h') - -addExternalIface('CanvasGradient', headerFile='nsIDOMCanvasRenderingContext2D.h') -addExternalIface('CanvasPattern', headerFile='nsIDOMCanvasRenderingContext2D.h') -addExternalIface('CSSRule') -addExternalIface('CSSValue') -addExternalIface('DOMStringList', nativeType='nsDOMStringList', - headerFile='nsDOMLists.h') -addExternalIface('File') -addExternalIface('HitRegionOptions', nativeType='nsISupports') -addExternalIface('ImageData', nativeType='mozilla::dom::ImageData') -addExternalIface('PaintRequest') -addExternalIface('SVGLength') -addExternalIface('SVGMatrix') -addExternalIface('SVGNumber') -addExternalIface('SVGPathSeg') -addExternalIface('SVGPoint') -addExternalIface('SVGTransform') -addExternalIface('TextMetrics', headerFile='nsIDOMCanvasRenderingContext2D.h') -addExternalIface('Touch', headerFile='nsIDOMTouchEvent.h') -addExternalIface('WebGLActiveInfo', nativeType='mozilla::WebGLActiveInfo', - headerFile='WebGLContext.h') -addExternalIface('WebGLBuffer', nativeType='mozilla::WebGLBuffer', - headerFile='WebGLContext.h') -addExternalIface('WebGLContextAttributes', nativeType='JSObject', - headerFile='jsapi.h') -addExternalIface('WebGLExtension', nativeType='nsIWebGLExtension', - headerFile='WebGLContext.h') -addExternalIface('WebGLFramebuffer', nativeType='mozilla::WebGLFramebuffer', - headerFile='WebGLContext.h') -addExternalIface('WebGLProgram', nativeType='mozilla::WebGLProgram', - headerFile='WebGLContext.h') -addExternalIface('WebGLRenderbuffer', nativeType='mozilla::WebGLRenderbuffer', - headerFile='WebGLContext.h') -addExternalIface('WebGLShader', nativeType='mozilla::WebGLShader', - headerFile='WebGLContext.h') -addExternalIface('WebGLShaderPrecisionFormat', - nativeType='mozilla::WebGLShaderPrecisionFormat', - headerFile='WebGLContext.h') -addExternalIface('WebGLTexture', nativeType='mozilla::WebGLTexture', - headerFile='WebGLContext.h') -addExternalIface('XULElement') |