aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/bindings/codegen/Bindings.conf591
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')