# 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 (required). # * 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). # * concrete - Indicates whether there exist objects with this interface as # their primary interface (defaults to True). # * prefable - Indicates whether this binding is subject to the about:config # pref, or whether it's always enabled (defaults to False). # * 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. # # 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 # # * infallible - attributes and methods specified in the .webidl file that # cannot fail and therefore do not require the final nsresult& # argument # * 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 DOMInterfaces = { 'XMLHttpRequest': [ { 'nativeType': 'nsXMLHttpRequest', 'prefable': True, 'infallible': { 'all': [ 'readyState', 'withCredentials', 'abort', 'statusText', 'getAllResponseHeaders', 'overrideMimeType', 'mozBackgroundRequest', 'multipart', 'channel', 'upload', 'status' ], 'getterOnly': [ 'responseType', 'timeout', 'onreadystatechange' ] }, 'implicitJSContext': { 'all': [ 'response', 'getInterface', 'send', 'sendAsBinary' ], 'setterOnly': [ 'onreadystatechange' ] }, 'resultNotAddRefed': [ 'upload', 'responseXML' ] }, { 'workers': True, 'nativeType': 'mozilla::dom::workers::XMLHttpRequest', 'headerFile': 'mozilla/dom/workers/bindings/XMLHttpRequest.h', 'infallible': [ 'readyState', 'statusText' ] }], 'XMLHttpRequestUpload': [ { 'nativeType': 'nsXMLHttpRequestUpload', 'headerFile': 'nsXMLHttpRequest.h', 'prefable': True }, { 'workers': True, 'nativeType': 'mozilla::dom::workers::XMLHttpRequestUpload', 'headerFile': 'mozilla/dom/workers/bindings/XMLHttpRequestUpload.h' }], 'MozChannel': [ { 'nativeType': 'nsIChannel', 'prefable': True, 'castable': False, 'notflattened': True }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], 'InputStream': [ { 'nativeType': 'nsIInputStream', 'prefable': True, 'castable': False, 'notflattened': True }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], 'Document': [ { 'nativeType': 'nsIDocument', 'prefable': True, 'castable': False }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], 'Blob': [ { 'nativeType': 'nsIDOMBlob', 'headerFile': 'nsIDOMFile.h', 'prefable': True, 'castable': False }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], 'FormData': [ { 'nativeType': 'nsIDOMFormData', 'prefable': True, 'castable': False }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], 'EventTarget': [ { 'nativeType': 'nsDOMEventTargetHelper', 'hasInstanceInterface': 'nsIDOMEventTarget', 'concrete': False, 'prefable': True, }, { 'workers': True, 'nativeType': 'mozilla::dom::workers::EventTarget', 'headerFile': 'mozilla/dom/workers/bindings/EventTarget.h', 'concrete': False }], 'Event': [ { 'nativeType': 'nsIDOMEvent', 'prefable': True, 'castable': False }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], 'EventListener': [ { 'nativeType': 'nsIDOMEventListener', 'prefable': True }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h' }], 'XMLHttpRequestEventTarget': [ { 'nativeType': 'nsXHREventTarget', 'headerFile': 'nsXMLHttpRequest.h', 'concrete': False, 'prefable': True, 'infallible': { 'getterOnly': [ 'onabort', 'onerror', 'onload', 'onloadstart', 'onprogress', 'ontimeout', 'onloadend' ] }, 'implicitJSContext': { 'setterOnly': [ 'onabort', 'onerror', 'onload', 'onloadstart', 'onprogress', 'ontimeout', 'onloadend' ] } }, { 'workers': True, 'concrete': False, 'nativeType': 'mozilla::dom::workers::XMLHttpRequestEventTarget', 'headerFile': 'mozilla/dom/workers/bindings/XMLHttpRequestEventTarget.h' }], 'IID': [ { 'nativeType': 'nsIJSIID', 'headerFile': 'xpcjsid.h', 'prefable': True, 'castable': False }, { 'workers': True, 'nativeType': 'JSObject', 'headerFile': 'jsapi.h', 'castable': False }], }