dom/bindings/Bindings.conf

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 # This Source Code Form is subject to the terms of the Mozilla Public
     2 # License, v. 2.0. If a copy of the MPL was not distributed with this
     3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
     5 # DOM Bindings Configuration.
     6 #
     7 # The WebIDL interfaces are defined in dom/webidl. For each such interface, there
     8 # is a corresponding entry in the configuration table below. The configuration
     9 # table maps each interface name to a |descriptor| or list of |descriptor|s.
    10 #
    11 # Valid fields for all descriptors:
    12 #   * nativeType - The native type (concrete class or XPCOM interface) that
    13 #                  instances of this interface will unwrap to.  If not
    14 #                  specified, defaults to 'mozilla::dom::InterfaceName' for
    15 #                  non-worker non-external-or-callback interfaces, to
    16 #                  'mozilla::dom::workers::InterfaceName' for worker
    17 #                  non-external interfaces, to 'nsIDOM' followed by the
    18 #                  interface name for non-worker external-or-callback
    19 #                  interfaces, and to 'JSObject' for worker external-or-callback
    20 #                  interfaces.
    21 #   * headerFile - The file in which the nativeType is declared (defaults
    22 #                  to an educated guess).
    23 #   * concrete - Indicates whether there exist JS objects with this interface as
    24 #                their primary interface (and hence whose prototype is this
    25 #                interface's prototype object).  Always False for callback
    26 #                interfaces.  Defaults to True otherwise.
    27 #   * workers - Indicates whether the descriptor is intended to be used solely
    28 #               for worker threads (defaults to false). If true the interface
    29 #               will not be made available on the main thread.
    30 #   * notflattened - The native type does not have nsIClassInfo, so when
    31 #                    wrapping it the right IID needs to be passed in.
    32 #   * register - True if this binding should be registered.  Defaults to true.
    33 #   * binaryNames - Dict for mapping method and attribute names to different
    34 #                   names when calling the native methods (defaults to an empty
    35 #                   dict). The keys are the property names as they appear in the
    36 #                   .webidl file and the values are the names as they should be
    37 #                   in the WebIDL.
    38 #   * wrapperCache: True if this object is a wrapper cache.  Objects that are
    39 #                   not can only be returned from a limited set of methods,
    40 #                   cannot be prefable, and must ensure that they disallow
    41 #                   XPConnect wrapping.  Always false for callback interfaces.
    42 #                   Always true for worker descriptors for non-callback
    43 #                   interfaces.  Defaults to true for non-worker non-callback
    44 #                   descriptors.
    45 #   * nativeOwnership: Describes how the native object is held. 3 possible
    46 #                      types: worker object ('worker'), non-refcounted object
    47 #                      ('owned'), refcounted object ('refcounted').
    48 #                      Non-refcounted objects need to inherit from
    49 #                      mozilla::dom::NonRefcountedDOMObject and preferably use
    50 #                      MOZ_COUNT_CTOR/MOZ_COUNT_DTOR in their
    51 #                      constructor/destructor so they participate in leak
    52 #                      logging.
    53 #                      This mostly determines how the finalizer releases the
    54 #                      binding's hold on the native object. For a worker object
    55 #                      it'll call Release, for a non-refcounted object it'll
    56 #                      call delete through XPConnect's deferred finalization
    57 #                      mechanism, for a refcounted object it'll call Release
    58 #                      through XPConnect's deferred finalization mechanism.
    59 #                      'worker' opts into old style worker models. Defaults to
    60 #                      'refcounted'.
    61 #
    62 #   The following fields are either a string, an array (defaults to an empty
    63 #   array) or a dictionary with three possible keys (all, getterOnly and
    64 #   setterOnly) each having such an array as the value
    65 #
    66 #   * implicitJSContext - attributes and methods specified in the .webidl file
    67 #                         that require a JSContext as the first argument
    68 #   * resultNotAddRefed - attributes and methods specified in the .webidl file
    69 #                         that do not AddRef the return value
    70 #
    71 # A descriptor can also have 'skipGen': True specified if it should be skipped
    72 # when deciding what header includes to generate and should never have an
    73 # implementation generated for it.  This is only needed in special cases like
    74 # worker descriptors for objects that will never actually appear in workers.
    75 #
    76 # The value for an interface can be a list or a dictionary, which affects which
    77 # bindings are generated for that interface.
    78 # - If the value for the interface is just a record, then a single binding for
    79 #   will be generated using those settings.
    80 # - If it is a list with a single record which has 'workers':True, then that
    81 #   record will be used to generate bindings for workers, plus the default
    82 #   settings will be used to generate bindings for the main thread.
    83 # - If it is a list with two records, then one should have 'workers':True,
    84 #   and the other should have 'workers':False (or left unset). These will
    85 #   be used to generate bindings for workers and for mainthread, as you would
    86 #   expect.
    87 # Nothing else is allowed.  If you have a list with a single 'workers':False
    88 # entry, just make it not a list.
    90 DOMInterfaces = {
    92 'MozActivity': {
    93     'nativeType': 'mozilla::dom::Activity',
    94 },
    96 'AbstractWorker': {
    97     'concrete': False
    98 },
   100 'ArchiveReader': {
   101     'nativeType': 'mozilla::dom::file::ArchiveReader',
   102 },
   104 'ArchiveRequest': {
   105     'nativeType': 'mozilla::dom::file::ArchiveRequest',
   106 },
   108 'AudioChannelManager': {
   109     'nativeType': 'mozilla::dom::system::AudioChannelManager',
   110     'headerFile': 'AudioChannelManager.h'
   111 },
   113 'AudioContext': {
   114     'implicitJSContext': [ 'createBuffer' ],
   115     'resultNotAddRefed': [ 'destination', 'listener' ],
   116 },
   118 'AudioBuffer': {
   119     'implicitJSContext': [ 'copyToChannel' ],
   120 },
   122 'AudioBufferSourceNode': {
   123     'implicitJSContext': [ 'buffer' ],
   124     'resultNotAddRefed': [ 'playbackRate' ],
   125 },
   127 'AudioNode' : {
   128     'concrete': False,
   129     'binaryNames': {
   130         'channelCountMode': 'channelCountModeValue',
   131         'channelInterpretation': 'channelInterpretationValue',
   132     },
   133 },
   135 'AudioProcessingEvent' : {
   136     'resultNotAddRefed': [ 'inputBuffer', 'outputBuffer' ],
   137 },
   139 'BarProp': {
   140     'headerFile': 'mozilla/dom/BarProps.h',
   141 },
   143 'BiquadFilterNode': {
   144     'resultNotAddRefed': [ 'frequency', 'detune', 'q', 'gain' ],
   145 },
   147 'Blob': [
   148 {
   149     'headerFile': 'nsIDOMFile.h',
   150 },
   151 {
   152     'workers': True,
   153 }],
   155 'BatteryManager': {
   156     'nativeType': 'mozilla::dom::battery::BatteryManager',
   157     'headerFile': 'BatteryManager.h'
   158 },
   160 'BluetoothAdapter': {
   161     'nativeType': 'mozilla::dom::bluetooth::BluetoothAdapter',
   162     'headerFile': 'BluetoothAdapter.h'
   163 },
   165 'BluetoothDevice': {
   166     'nativeType': 'mozilla::dom::bluetooth::BluetoothDevice',
   167     'headerFile': 'BluetoothDevice.h'
   168 },
   170 'BluetoothManager': {
   171     'nativeType': 'mozilla::dom::bluetooth::BluetoothManager',
   172     'headerFile': 'BluetoothManager.h'
   173 },
   175 'CameraCapabilities': {
   176     'nativeType': 'mozilla::dom::CameraCapabilities',
   177     'headerFile': 'DOMCameraCapabilities.h'
   178 },
   180 'CameraControl': {
   181     'nativeType': 'mozilla::nsDOMCameraControl',
   182     'headerFile': 'DOMCameraControl.h',
   183     'binaryNames': {
   184         "release": "ReleaseHardware"
   185     }
   186 },
   188 'CameraDetectedFace': {
   189     'nativeType': 'mozilla::dom::DOMCameraDetectedFace',
   190     'headerFile': 'DOMCameraDetectedFace.h'
   191 },
   193 'CameraManager': {
   194     'nativeType': 'nsDOMCameraManager',
   195     'headerFile': 'DOMCameraManager.h'
   196 },
   198 'CameraPoint': {
   199     'nativeType': 'mozilla::dom::DOMCameraPoint',
   200     'headerFile': 'DOMCameraDetectedFace.h'
   201 },
   203 'CanvasRenderingContext2D': {
   204     'implicitJSContext': [
   205         'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
   206     ],
   207     'resultNotAddRefed': [ 'canvas', 'measureText' ],
   208     'binaryNames': {
   209         'mozImageSmoothingEnabled': 'imageSmoothingEnabled',
   210         'mozFillRule': 'fillRule'
   211     }
   212 },
   214 'CaretPosition' : {
   215     'nativeType': 'nsDOMCaretPosition',
   216 },
   218 'CharacterData': {
   219     'nativeType': 'nsGenericDOMDataNode',
   220     'concrete': False
   221 },
   223 'ChromeWindow': {
   224     'concrete': False,
   225     'register': False,
   226 },
   228 'ChromeWorker': {
   229     'headerFile': 'mozilla/dom/WorkerPrivate.h',
   230     'nativeType': 'mozilla::dom::workers::ChromeWorkerPrivate',
   231 },
   233 'Console': {
   234     'implicitJSContext': [ 'trace', 'time', 'timeEnd' ],
   235 },
   237 'ConvolverNode': {
   238     'implicitJSContext': [ 'buffer' ],
   239     'resultNotAddRefed': [ 'buffer' ],
   240 },
   242 'Coordinates': {
   243     'headerFile': 'nsGeoPosition.h'
   244 },
   246 'CRMFObject': {
   247     'headerFile': 'nsCrypto.h',
   248     'nativeOwnership': 'owned',
   249     'wrapperCache': False,
   250 },
   252 'Crypto' : {
   253     'implicitJSContext': [ 'generateCRMFRequest', 'signText' ],
   254     'headerFile': 'Crypto.h'
   255 },
   257 'CSS': {
   258     'concrete': False,
   259 },
   261 'CSS2Properties': {
   262     'nativeType': 'nsDOMCSSDeclaration'
   263 },
   265 'CSSPrimitiveValue': {
   266     'nativeType': 'nsROCSSPrimitiveValue',
   267     'resultNotAddRefed': ['getRGBColorValue', 'getRectValue']
   268 },
   270 'CSSStyleDeclaration': {
   271     'nativeType': 'nsICSSDeclaration'
   272 },
   274 'CSSStyleSheet': {
   275     'nativeType': 'nsCSSStyleSheet',
   276     'binaryNames': { 'ownerRule': 'DOMOwnerRule' },
   277 },
   279 'CSSValue': {
   280     'concrete': False
   281 },
   283 'CSSValueList': {
   284     'nativeType': 'nsDOMCSSValueList'
   285 },
   287 'DataChannel': {
   288     'nativeType': 'nsDOMDataChannel',
   289 },
   291 'DataStoreCursor': {
   292     'wrapperCache': False,
   293 },
   295 'DedicatedWorkerGlobalScope': {
   296     'headerFile': 'mozilla/dom/WorkerScope.h',
   297     'workers': True,
   298 },
   300 'DelayNode': {
   301     'resultNotAddRefed': [ 'delayTime' ],
   302 },
   304 'DeviceAcceleration': {
   305     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
   306 },
   308 'DeviceRotationRate': {
   309     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
   310 },
   312 'DeviceStorage': {
   313     'nativeType': 'nsDOMDeviceStorage',
   314     'headerFile': 'DeviceStorage.h',
   315 },
   317 'Document': [
   318 {
   319     'nativeType': 'nsIDocument',
   320     'resultNotAddRefed': [ 'implementation', 'doctype', 'documentElement',
   321                            'getElementById', 'adoptNode', 'defaultView',
   322                            'activeElement', 'currentScript',
   323                            'mozFullScreenElement', 'mozPointerLockElement',
   324                            'styleSheets', 'styleSheetSets', 'elementFromPoint',
   325                            'querySelector', 'getAnonymousNodes',
   326                            'getAnonymousElementByAtribute', 'getBindingParent'
   327                            ],
   328     'binaryNames': {
   329         'documentURI': 'documentURIFromJS',
   330         'URL': 'documentURIFromJS'
   331     }
   332 },
   333 {
   334     'nativeType': 'JSObject',
   335     'workers': True,
   336     'skipGen': True
   337 }],
   339 'DocumentFragment': {
   340     'resultNotAddRefed': [ 'querySelector' ]
   341 },
   343 'DOMException': {
   344     'binaryNames': {
   345         'message': 'messageMoz',
   346     },
   347 },
   349 'DOMPointReadOnly': {
   350     'headerFile': 'mozilla/dom/DOMPoint.h',
   351     'concrete': False,
   352 },
   354 'DOMRectList': {
   355     'headerFile': 'mozilla/dom/DOMRect.h',
   356     'resultNotAddRefed': [ 'item' ]
   357 },
   359 'DOMRectReadOnly': {
   360     'headerFile': 'mozilla/dom/DOMRect.h',
   361 },
   363 'DOMQuad': {
   364     'resultNotAddRefed': [ 'bounds', 'p0', 'p1', 'p2', 'p3' ]
   365 },
   367 'DOMSettableTokenList': {
   368     'nativeType': 'nsDOMSettableTokenList',
   369 },
   371 'DOMStringMap': {
   372     'nativeType': 'nsDOMStringMap'
   373 },
   375 'DOMTokenList': {
   376     'nativeType': 'nsDOMTokenList',
   377 },
   379 'DummyInterface': {
   380     'skipGen': True,
   381     'register': False,
   382 },
   384 'DummyInterfaceWorkers': {
   385     'skipGen': True,
   386     'register': False,
   387     'workers': True
   388 },
   390 'DynamicsCompressorNode': {
   391     'resultNotAddRefed': [ 'threshold', 'knee', 'ratio',
   392                            'reduction', 'attack', 'release' ],
   393     'binaryNames': {
   394         'release': 'getRelease'
   395     },
   396 },
   398 'Element': {
   399     'resultNotAddRefed': [
   400         'classList', 'attributes', 'children', 'firstElementChild',
   401         'lastElementChild', 'previousElementSibling', 'nextElementSibling',
   402         'getAttributeNode', 'getAttributeNodeNS', 'querySelector'
   403     ]
   404 },
   406 'Event': {
   407     'implicitJSContext': [ 'defaultPrevented', 'preventDefault' ],
   408 },
   410 'EventTarget': {
   411     # When we get rid of hasXPConnectImpls, we can get rid of the
   412     # couldBeDOMBinding stuff in WrapNewBindingObject.
   413     'hasXPConnectImpls': True,
   414     'concrete': False,
   415     'jsImplParent': 'mozilla::DOMEventTargetHelper'
   416 },
   418 'Exception': {
   419     'headerFile': 'mozilla/dom/DOMException.h',
   420     'binaryNames': {
   421         'message': 'messageMoz',
   422     },
   423 },
   425 'FileHandle': {
   426     'nativeType': 'mozilla::dom::file::FileHandle'
   427 },
   429 'FileList': {
   430     'nativeType': 'nsDOMFileList',
   431     'headerFile': 'nsDOMFile.h',
   432     'resultNotAddRefed': [ 'item' ]
   433 },
   435 'FileReader': {
   436     'nativeType': 'nsDOMFileReader',
   437     'implicitJSContext': [ 'readAsArrayBuffer' ],
   438 },
   440 'FileReaderSync': {
   441     'workers': True,
   442     'wrapperCache': False,
   443 },
   445 'FileRequest': {
   446     'nativeType': 'mozilla::dom::file::FileRequest',
   447 },
   449 'FormData': [
   450 {
   451     'nativeType': 'nsFormData'
   452 },
   453 {
   454     'workers': True,
   455     'skipGen': True,
   456     'nativeType': 'JSObject'
   457 }],
   459 'GainNode': {
   460     'resultNotAddRefed': [ 'gain' ],
   461 },
   463 'Geolocation': {
   464     'headerFile': 'nsGeolocation.h'
   465 },
   467 'History': {
   468     'headerFile': 'nsHistory.h',
   469     'nativeType': 'nsHistory'
   470 },
   472 'HTMLAppletElement': {
   473     'nativeType': 'mozilla::dom::HTMLSharedObjectElement'
   474 },
   476 'HTMLBaseElement': {
   477     'nativeType': 'mozilla::dom::HTMLSharedElement'
   478 },
   480 'HTMLCollection': {
   481     'nativeType': 'nsIHTMLCollection',
   482     # nsContentList.h pulls in nsIHTMLCollection.h
   483     'headerFile': 'nsContentList.h',
   484     'resultNotAddRefed': [ 'item' ]
   485 },
   487 'HTMLDataListElement': {
   488     'resultNotAddRefed': [
   489         'options'
   490     ]
   491 },
   493 'HTMLDirectoryElement': {
   494     'nativeType': 'mozilla::dom::HTMLSharedElement'
   495 },
   497 'HTMLDListElement': {
   498     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
   499 },
   501 'HTMLDocument': {
   502     'nativeType': 'nsHTMLDocument',
   503     'resultNotAddRefed': [ 'body', 'head', 'images', 'embeds', 'plugins',
   504                            'links', 'forms', 'scripts', 'anchors', 'applets' ],
   505     'implicitJSContext': [ 'open', 'write', 'writeln' ]
   506 },
   508 'HTMLElement': {
   509     'nativeType': 'nsGenericHTMLElement',
   510     'resultNotAddRefed': [
   511         'itemType', 'itemRef', 'itemProp', 'properties', 'contextMenu', 'style',
   512         'offsetParent'
   513     ]
   514 },
   516 'HTMLEmbedElement': {
   517     'nativeType': 'mozilla::dom::HTMLSharedObjectElement'
   518 },
   520 'HTMLHeadElement': {
   521     'nativeType': 'mozilla::dom::HTMLSharedElement'
   522 },
   524 'HTMLHtmlElement': {
   525     'nativeType': 'mozilla::dom::HTMLSharedElement'
   526 },
   528 'HTMLLabelElement': {
   529     'resultNotAddRefed': [
   530         'form', 'control'
   531     ],
   532 },
   534 'HTMLMediaElement': {
   535     'concrete': False
   536 },
   538 'HTMLOListElement': {
   539     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
   540 },
   542 'HTMLOptionsCollection': {
   543     'resultNotAddRefed': [ 'item' ],
   544 },
   546 'HTMLParamElement': {
   547     'nativeType': 'mozilla::dom::HTMLSharedElement'
   548 },
   550 'HTMLPropertiesCollection': {
   551     'headerFile': 'HTMLPropertiesCollection.h',
   552     'resultNotAddRefed': [ 'item', 'namedItem', 'names' ]
   553 },
   555 'HTMLQuoteElement': {
   556     'nativeType': 'mozilla::dom::HTMLSharedElement'
   557 },
   559 'HTMLTableElement': {
   560     'resultNotAddRefed': [
   561         'caption', 'tHead', 'tFoot', 'tBodies', 'rows'
   562     ]
   563 },
   565 'HTMLTableRowElement': {
   566     'resultNotAddRefed': [
   567         'cells'
   568     ]
   569 },
   571 'HTMLTableSectionElement': {
   572     'resultNotAddRefed': [
   573         'rows'
   574     ]
   575 },
   577 'HTMLTemplateElement': {
   578     'resultNotAddRefed': [
   579         'content'
   580     ]
   581 },
   583 'HTMLTextAreaElement': {
   584     'resultNotAddRefed': [
   585         'form', 'controllers', 'editor'
   586     ],
   587     'binaryNames': {
   588         'textLength': 'getTextLength'
   589     }
   590 },
   592 'HTMLSelectElement': {
   593     'resultNotAddRefed': [
   594         'form',
   595         'item',
   596         'options',
   597         'IndexedGetter',
   598     ]
   599 },
   601 'HTMLStyleElement': {
   602     'resultNotAddRefed': [
   603         'sheet'
   604     ]
   605 },
   607 'HTMLUListElement': {
   608     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
   609 },
   611 'IDBCursor': {
   612     'nativeType': 'mozilla::dom::indexedDB::IDBCursor',
   613     'implicitJSContext': [ 'delete' ],
   614     'binaryNames': {
   615         'direction': 'getDirection'
   616     }
   617 },
   619 'IDBCursorWithValue': {
   620     'nativeType': 'mozilla::dom::indexedDB::IDBCursor',
   621 },
   623 'IDBDatabase': {
   624     'nativeType': 'mozilla::dom::indexedDB::IDBDatabase',
   625 },
   627 'IDBFactory': {
   628     'nativeType': 'mozilla::dom::indexedDB::IDBFactory',
   629 },
   631 'IDBFileHandle': {
   632     'nativeType': 'mozilla::dom::indexedDB::IDBFileHandle',
   633 },
   635 'IDBIndex': {
   636     'nativeType': 'mozilla::dom::indexedDB::IDBIndex',
   637     'binaryNames': {
   638         'mozGetAll': 'getAll',
   639         'mozGetAllKeys': 'getAllKeys',
   640     }
   641 },
   643 'IDBKeyRange': {
   644     'nativeType': 'mozilla::dom::indexedDB::IDBKeyRange',
   645     'wrapperCache': False,
   646 },
   648 'IDBObjectStore': {
   649     'nativeType': 'mozilla::dom::indexedDB::IDBObjectStore',
   650     'implicitJSContext': [ 'createIndex' ],
   651     'binaryNames': {
   652         'mozGetAll': 'getAll'
   653     }
   654 },
   656 'IDBOpenDBRequest': {
   657     'nativeType': 'mozilla::dom::indexedDB::IDBOpenDBRequest',
   658     'headerFile': 'IDBRequest.h'
   659 },
   661 'IDBRequest': {
   662     'nativeType': 'mozilla::dom::indexedDB::IDBRequest',
   663 },
   665 'IDBTransaction': {
   666     'nativeType': 'mozilla::dom::indexedDB::IDBTransaction',
   667 },
   669 'IDBVersionChangeEvent': {
   670     'nativeType': 'mozilla::dom::indexedDB::IDBVersionChangeEvent',
   671     'headerFile': 'IDBEvents.h',
   672 },
   674 'IID': [
   675 {
   676     'nativeType': 'nsIJSID',
   677     'headerFile': 'xpcjsid.h',
   678 },
   679 {
   680     'workers': True,
   681 }],
   683 'ImageData': {
   684     'wrapperCache': False,
   685 },
   687 'InputStream': [
   688 {
   689     'nativeType': 'nsIInputStream',
   690     'notflattened': True
   691 },
   692 {
   693     'workers': True,
   694 }],
   696 'KeyEvent': {
   697     'concrete': False
   698 },
   700 'LocalMediaStream': {
   701     'headerFile': 'DOMMediaStream.h',
   702     'nativeType': 'mozilla::DOMLocalMediaStream'
   703 },
   705 'Location': {
   706     # NOTE: Before you turn on codegen for Location, make sure all the
   707     # Unforgeable stuff is dealt with.
   708     'nativeType': 'nsIDOMLocation',
   709     'skipGen': True,
   710     'register': False
   711 },
   713 'LockedFile': {
   714     'nativeType': 'mozilla::dom::file::LockedFile',
   715 },
   717 'MediaList': {
   718     'nativeType': 'nsMediaList',
   719     'headerFile': 'nsIMediaList.h',
   720 },
   722 'MediaSource': [{
   723     'resultNotAddRefed': [ 'sourceBuffers', 'activeSourceBuffers' ],
   724 },
   725 {
   726     'nativeType': 'JSObject',
   727     'workers': True,
   728     'skipGen': True
   729 }],
   731 'MediaStream': [{
   732     'headerFile': 'DOMMediaStream.h',
   733     'nativeType': 'mozilla::DOMMediaStream'
   734 },
   735 {
   736     'nativeType': 'JSObject',
   737     'workers': True,
   738     'skipGen': True
   739 }],
   741 'MediaStreamAudioDestinationNode': {
   742     'resultNotAddRefed': [ 'stream' ],
   743     'binaryNames': { 'stream': 'DOMStream' }
   744 },
   746 'MediaStreamList': {
   747     'headerFile': 'MediaStreamList.h',
   748     'resultNotAddRefed': [ '__indexedGetter' ],
   749     'binaryNames': { '__indexedGetter': 'IndexedGetter' }
   750 },
   752 'MediaStreamTrack': {
   753     'concrete': False
   754 },
   756 'MediaRecorder': {
   757     'headerFile': 'MediaRecorder.h',
   758     'resultNotAddRefed': [ 'stream' ]
   759 },
   761 'MessagePort': {
   762     'nativeType': 'mozilla::dom::MessagePortBase',
   763     'headerFile': 'mozilla/dom/MessagePort.h',
   764     'binaryNames': {
   765         'postMessage': 'postMessageMoz',
   766     },
   767 },
   769 'MimeType': {
   770     'headerFile' : 'nsMimeTypeArray.h',
   771     'nativeType': 'nsMimeType',
   772     'resultNotAddRefed': [ 'enabledPlugin' ]
   773 },
   775 'MimeTypeArray': {
   776     'nativeType': 'nsMimeTypeArray',
   777     'resultNotAddRefed': [ 'item', 'namedItem' ]
   778 },
   780 'MozCanvasPrintState': {
   781     'headerFile': 'mozilla/dom/HTMLCanvasElement.h',
   782     'nativeType': 'mozilla::dom::HTMLCanvasPrintState',
   783 },
   785 'MozChannel': [
   786 {
   787     'nativeType': 'nsIChannel',
   788     'notflattened': True
   789 },
   790 {
   791     'workers': True,
   792 }],
   794 'MozCellBroadcast': {
   795     'nativeType': 'mozilla::dom::CellBroadcast',
   796 },
   798 'MozIcc': {
   799     'nativeType': 'mozilla::dom::Icc',
   800 },
   802 'MozIccManager': {
   803     'nativeType': 'mozilla::dom::IccManager',
   804 },
   806 'MozMobileConnectionArray': {
   807     'nativeType': 'mozilla::dom::MobileConnectionArray',
   808     'resultNotAddRefed': [ 'item' ]
   809 },
   811 'MozNamedAttrMap': {
   812     'nativeType': 'nsDOMAttributeMap',
   813 },
   815 'MozSpeakerManager': {
   816     'nativeType': 'mozilla::dom::SpeakerManager',
   817     'headerFile': 'SpeakerManager.h'
   818 },
   820 'MozPowerManager': {
   821     'nativeType': 'mozilla::dom::PowerManager',
   822 },
   824 'MozWakeLock': {
   825     'nativeType': 'mozilla::dom::WakeLock',
   826 },
   828 'MozTimeManager': {
   829     'nativeType': 'mozilla::dom::time::TimeManager',
   830 },
   832 'MozVoicemail': {
   833     'nativeType': 'mozilla::dom::Voicemail',
   834 },
   836 'MutationObserver': {
   837     'nativeType': 'nsDOMMutationObserver',
   838 },
   840 'MutationRecord': {
   841     'nativeType': 'nsDOMMutationRecord',
   842     'headerFile': 'nsDOMMutationObserver.h',
   843     'resultNotAddRefed': [ 'target', 'addedNodes', 'removedNodes',
   844                            'previousSibling', 'nextSibling' ]
   845 },
   847 'NetworkInformation': {
   848     'nativeType': 'mozilla::dom::network::Connection',
   849 },
   851 'Node': {
   852     'nativeType': 'nsINode',
   853     'concrete': False,
   854     'resultNotAddRefed': [ 'ownerDocument', 'parentNode', 'parentElement',
   855                            'childNodes', 'firstChild', 'lastChild',
   856                            'previousSibling', 'nextSibling', 'insertBefore',
   857                            'appendChild', 'replaceChild', 'removeChild',
   858                            'attributes' ],
   859     'binaryNames': {
   860         'baseURI': 'baseURIFromJS'
   861     }
   862 },
   864 'NodeIterator': {
   865     'wrapperCache': False,
   866     'resultNotAddRefed': [ 'root', 'referenceNode' ],
   867 },
   869 'NodeList': {
   870     'nativeType': 'nsINodeList',
   871     'resultNotAddRefed': [ 'item' ]
   872 },
   874 'OfflineAudioCompletionEvent': {
   875     'resultNotAddRefed': [ 'renderedBuffer' ],
   876 },
   878 'OfflineAudioContext': {
   879     'nativeType': 'mozilla::dom::AudioContext',
   880     'resultNotAddRefed': [ 'destination', 'listener' ],
   881 },
   883 'OfflineResourceList': {
   884     'nativeType': 'nsDOMOfflineResourceList',
   885 },
   887 'OscillatorNode': {
   888     'resultNotAddRefed': [ 'frequency', 'detune' ],
   889 },
   891 'PaintRequestList': {
   892     'headerFile': 'mozilla/dom/PaintRequest.h',
   893     'resultNotAddRefed': [ 'item' ]
   894 },
   896 'PannerNode': {
   897     'resultNotAddRefed': [ 'coneGain', 'distanceGain' ],
   898 },
   900 'Path2D': {
   901     'nativeType': 'mozilla::dom::CanvasPath',
   902     'headerFile': 'CanvasRenderingContext2D.h'
   903 },
   905 'PeerConnectionImpl': {
   906     'nativeType': 'sipcc::PeerConnectionImpl',
   907     'headerFile': 'PeerConnectionImpl.h',
   908     'wrapperCache': False
   909 },
   911 'Performance': {
   912     'nativeType': 'nsPerformance',
   913     'resultNotAddRefed': [ 'timing', 'navigation' ]
   914 },
   916 'PerformanceTiming': {
   917     'nativeType': 'nsPerformanceTiming',
   918     'headerFile': 'nsPerformance.h'
   919 },
   921 'PerformanceNavigation': {
   922     'nativeType': 'nsPerformanceNavigation',
   923     'headerFile': 'nsPerformance.h'
   924 },
   926 'Plugin': {
   927     'headerFile' : 'nsPluginArray.h',
   928     'nativeType': 'nsPluginElement',
   929     'resultNotAddRefed': [ 'item', 'namedItem' ]
   930 },
   932 'PluginArray': {
   933     'nativeType': 'nsPluginArray',
   934     'resultNotAddRefed': [ 'item', 'namedItem' ]
   935 },
   937 'Position': {
   938     'headerFile': 'nsGeoPosition.h'
   939 },
   941 'PositionError': {
   942     'headerFile': 'nsGeolocation.h'
   943 },
   945 'Promise': {
   946     'implicitJSContext': [ 'then', 'catch' ],
   947 },
   949 'PropertyNodeList': {
   950     'headerFile': 'HTMLPropertiesCollection.h',
   951     'resultNotAddRefed': [ 'item' ]
   952 },
   954 'Range': {
   955     'nativeType': 'nsRange',
   956     'resultNotAddRefed': [ 'startContainer', 'endContainer', 'commonAncestorContainer' ],
   957     'binaryNames': {
   958         '__stringifier': 'ToString'
   959     }
   960 },
   962 'Rect': {
   963     'nativeType': 'nsDOMCSSRect',
   964     'resultNotAddRefed': [ 'top', 'right', 'bottom', 'left' ]
   965 },
   967 'RGBColor': {
   968     'nativeType': 'nsDOMCSSRGBColor',
   969     'resultNotAddRefed': [ 'alpha', 'blue', 'green', 'red' ]
   970 },
   972 'Screen': {
   973     'nativeType': 'nsScreen',
   974 },
   976 'Selection': {
   977     'resultNotAddRefed': [ 'anchorNode', 'focusNode', 'getRangeAt' ],
   978 },
   980 'ShadowRoot': {
   981     'resultNotAddRefed': [
   982         'styleSheets'
   983     ]
   984 },
   986 'HTMLShadowElement': {
   987     'resultNotAddRefed': [
   988         'getOldShadowRoot'
   989     ]
   990 },
   992 'SharedWorker': {
   993     'nativeType': 'mozilla::dom::workers::SharedWorker',
   994     'headerFile': 'mozilla/dom/workers/bindings/SharedWorker.h',
   995     'implicitJSContext': [ 'constructor' ],
   996 },
   998 'SharedWorkerGlobalScope': {
   999     'headerFile': 'mozilla/dom/WorkerScope.h',
  1000     'workers': True,
  1001 },
  1003 'SourceBufferList': {
  1004     'resultNotAddRefed': [ '__indexedGetter' ],
  1005 },
  1007 'StyleSheet': {
  1008     'nativeType': 'nsCSSStyleSheet',
  1009 },
  1011 'SVGAnimatedLengthList': {
  1012     'nativeType': 'mozilla::DOMSVGAnimatedLengthList',
  1013     'headerFile': 'DOMSVGAnimatedLengthList.h',
  1014 },
  1016 'SVGAnimatedNumberList': {
  1017     'nativeType': 'mozilla::DOMSVGAnimatedNumberList',
  1018     'headerFile': 'DOMSVGAnimatedNumberList.h'
  1019 },
  1021 'SVGAnimatedPreserveAspectRatio': {
  1022     'nativeType': 'mozilla::dom::DOMSVGAnimatedPreserveAspectRatio',
  1023     'headerFile': 'SVGAnimatedPreserveAspectRatio.h'
  1024 },
  1026 'SVGAnimationElement': {
  1027     'resultNotAddRefed': ['targetElement'],
  1028     'concrete': False
  1029 },
  1031 'SVGComponentTransferFunctionElement': {
  1032     'concrete': False,
  1033 },
  1035 'SVGElement': {
  1036     'nativeType': 'nsSVGElement',
  1037     'resultNotAddRefed': ['ownerSVGElement', 'viewportElement', 'style']
  1038 },
  1040 'SVGFEFuncAElement': {
  1041     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
  1042 },
  1044 'SVGFEFuncBElement': {
  1045     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
  1046 },
  1048 'SVGFEFuncGElement': {
  1049     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
  1050 },
  1052 'SVGFEFuncRElement': {
  1053     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
  1054 },
  1056 'SVGGraphicsElement': {
  1057     'concrete': False,
  1058     'resultNotAddRefed': ['nearestViewportElement', 'farthestViewportElement']
  1059 },
  1061 'SVGGradientElement': {
  1062     'concrete': False,
  1063 },
  1065 'SVGLength': {
  1066     'nativeType': 'mozilla::DOMSVGLength',
  1067     'headerFile': 'DOMSVGLength.h'
  1068 },
  1070 'SVGLengthList': {
  1071     'nativeType': 'mozilla::DOMSVGLengthList',
  1072     'headerFile': 'DOMSVGLengthList.h'
  1073 },
  1075 'SVGLinearGradientElement': {
  1076     'headerFile': 'mozilla/dom/SVGGradientElement.h',
  1077 },
  1079 'SVGNumberList': {
  1080     'nativeType': 'mozilla::DOMSVGNumberList',
  1081     'headerFile': 'DOMSVGNumberList.h'
  1082 },
  1084 'SVGPathSeg': {
  1085     'nativeType': 'mozilla::DOMSVGPathSeg',
  1086     'headerFile': 'DOMSVGPathSeg.h',
  1087     'concrete': False,
  1088 },
  1090 'SVGPathSegClosePath': {
  1091     'nativeType': 'mozilla::DOMSVGPathSegClosePath',
  1092     'headerFile': 'DOMSVGPathSeg.h'
  1093 },
  1095 'SVGPathSegMovetoAbs': {
  1096     'nativeType': 'mozilla::DOMSVGPathSegMovetoAbs',
  1097     'headerFile': 'DOMSVGPathSeg.h'
  1098 },
  1100 'SVGPathSegMovetoRel': {
  1101     'nativeType': 'mozilla::DOMSVGPathSegMovetoRel',
  1102     'headerFile': 'DOMSVGPathSeg.h'
  1103 },
  1105 'SVGPathSegLinetoAbs': {
  1106     'nativeType': 'mozilla::DOMSVGPathSegLinetoAbs',
  1107     'headerFile': 'DOMSVGPathSeg.h'
  1108 },
  1110 'SVGPathSegLinetoRel': {
  1111     'nativeType': 'mozilla::DOMSVGPathSegLinetoRel',
  1112     'headerFile': 'DOMSVGPathSeg.h'
  1113 },
  1115 'SVGPathSegCurvetoCubicAbs': {
  1116     'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicAbs',
  1117     'headerFile': 'DOMSVGPathSeg.h'
  1118 },
  1120 'SVGPathSegCurvetoCubicRel': {
  1121     'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicRel',
  1122     'headerFile': 'DOMSVGPathSeg.h'
  1123 },
  1125 'SVGPathSegCurvetoQuadraticAbs': {
  1126     'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticAbs',
  1127     'headerFile': 'DOMSVGPathSeg.h'
  1128 },
  1130 'SVGPathSegCurvetoQuadraticRel': {
  1131     'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticRel',
  1132     'headerFile': 'DOMSVGPathSeg.h'
  1133 },
  1135 'SVGPathSegArcAbs': {
  1136     'nativeType': 'mozilla::DOMSVGPathSegArcAbs',
  1137     'headerFile': 'DOMSVGPathSeg.h'
  1138 },
  1140 'SVGPathSegArcRel': {
  1141     'nativeType': 'mozilla::DOMSVGPathSegArcRel',
  1142     'headerFile': 'DOMSVGPathSeg.h'
  1143 },
  1145 'SVGPathSegLinetoHorizontalAbs': {
  1146     'nativeType': 'mozilla::DOMSVGPathSegLinetoHorizontalAbs',
  1147     'headerFile': 'DOMSVGPathSeg.h'
  1148 },
  1150 'SVGPathSegLinetoHorizontalRel': {
  1151     'nativeType': 'mozilla::DOMSVGPathSegLinetoHorizontalRel',
  1152     'headerFile': 'DOMSVGPathSeg.h'
  1153 },
  1155 'SVGPathSegLinetoVerticalAbs': {
  1156     'nativeType': 'mozilla::DOMSVGPathSegLinetoVerticalAbs',
  1157     'headerFile': 'DOMSVGPathSeg.h'
  1158 },
  1160 'SVGPathSegLinetoVerticalRel': {
  1161     'nativeType': 'mozilla::DOMSVGPathSegLinetoVerticalRel',
  1162     'headerFile': 'DOMSVGPathSeg.h'
  1163 },
  1165 'SVGPathSegCurvetoCubicSmoothAbs': {
  1166     'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicSmoothAbs',
  1167     'headerFile': 'DOMSVGPathSeg.h'
  1168 },
  1170 'SVGPathSegCurvetoCubicSmoothRel': {
  1171     'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicSmoothRel',
  1172     'headerFile': 'DOMSVGPathSeg.h'
  1173 },
  1175 'SVGPathSegCurvetoQuadraticSmoothAbs': {
  1176     'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticSmoothAbs',
  1177     'headerFile': 'DOMSVGPathSeg.h'
  1178 },
  1180 'SVGPathSegCurvetoQuadraticSmoothRel': {
  1181     'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticSmoothRel',
  1182     'headerFile': 'DOMSVGPathSeg.h'
  1183 },
  1185 'SVGPathSegList': {
  1186     'nativeType': 'mozilla::DOMSVGPathSegList',
  1187     'headerFile': 'DOMSVGPathSegList.h'
  1188 },
  1190 'SVGPoint': {
  1191     'nativeType': 'mozilla::nsISVGPoint',
  1192     'headerFile': 'nsISVGPoint.h'
  1193 },
  1195 'SVGPointList': {
  1196     'nativeType': 'mozilla::DOMSVGPointList',
  1197     'headerFile': 'DOMSVGPointList.h'
  1198 },
  1200 'SVGPreserveAspectRatio': {
  1201     'nativeType': 'mozilla::dom::DOMSVGPreserveAspectRatio',
  1202     'headerFile': 'SVGPreserveAspectRatio.h'
  1203 },
  1205 'SVGRadialGradientElement': {
  1206     'headerFile': 'mozilla/dom/SVGGradientElement.h',
  1207 },
  1209 'SVGRect': {
  1210     'nativeType': 'mozilla::dom::SVGIRect'
  1211 },
  1213 'SVGTextContentElement': {
  1214     'concrete': False
  1215 },
  1217 'SVGTextPositioningElement': {
  1218     'concrete': False
  1219 },
  1221 'SVGTransform': {
  1222     'resultNotAddRefed': [ 'matrix' ],
  1223     'binaryNames': {
  1224         "matrix": "GetMatrix"
  1226 },
  1228 'SVGTransformList': {
  1229     'nativeType': 'mozilla::DOMSVGTransformList',
  1230     'headerFile': 'DOMSVGTransformList.h'
  1231 },
  1233 'SVGStringList': {
  1234     'nativeType': 'mozilla::DOMSVGStringList',
  1235     'headerFile': 'DOMSVGStringList.h',
  1236 },
  1238 'SVGSVGElement': {
  1239     'resultNotAddRefed': [ 'getElementById' ]
  1240 },
  1242 'SVGUnitTypes' : {
  1243     'concrete': False,
  1244 },
  1246 'SVGZoomAndPan' : {
  1247     'concrete': False,
  1248 },
  1250 'Text': {
  1251     # Total hack to allow binding code to realize that nsTextNode can
  1252     # in fact be cast to Text.
  1253     'headerFile': 'nsTextNode.h',
  1254 },
  1256 'TextDecoder': {
  1257     'nativeOwnership': 'owned',
  1258 },
  1260 'TextEncoder': {
  1261     'nativeOwnership': 'owned',
  1262 },
  1264 'TextMetrics': {
  1265     'nativeOwnership': 'owned',
  1266 },
  1268 'TimeRanges': {
  1269     'wrapperCache': False
  1270 },
  1272 'TouchList': {
  1273     'headerFile': 'mozilla/dom/TouchEvent.h',
  1274 },
  1276 'TreeColumns': {
  1277     'nativeType': 'nsTreeColumns',
  1278 },
  1280 'TreeWalker': {
  1281     'wrapperCache': False,
  1282     'resultNotAddRefed': [ 'root', 'currentNode' ],
  1283 },
  1285 'UndoManager': {
  1286     'implicitJSContext' : [ 'undo', 'redo', 'transact' ],
  1287 },
  1289 'URL' : [{
  1290     'wrapperCache': False,
  1291 },
  1293     'workers': True,
  1294     'wrapperCache': False,
  1295 }],
  1297 'VTTCue': {
  1298     'nativeType': 'mozilla::dom::TextTrackCue'
  1299 },
  1301 'VTTRegion': {
  1302   'nativeType': 'mozilla::dom::TextTrackRegion',
  1303 },
  1305 'WebGLActiveInfo': {
  1306     'nativeType': 'mozilla::WebGLActiveInfo',
  1307     'headerFile': 'WebGLActiveInfo.h',
  1308     'wrapperCache': False
  1309 },
  1311 'WebGLBuffer': {
  1312     'nativeType': 'mozilla::WebGLBuffer',
  1313     'headerFile': 'WebGLBuffer.h'
  1314 },
  1316 'WebGLExtensionCompressedTextureATC': {
  1317     'nativeType': 'mozilla::WebGLExtensionCompressedTextureATC',
  1318     'headerFile': 'WebGLExtensions.h'
  1319 },
  1321 'WebGLExtensionCompressedTextureETC1': {
  1322     'nativeType': 'mozilla::WebGLExtensionCompressedTextureETC1',
  1323     'headerFile': 'WebGLExtensions.h'
  1324 },
  1326 'WebGLExtensionCompressedTexturePVRTC': {
  1327     'nativeType': 'mozilla::WebGLExtensionCompressedTexturePVRTC',
  1328     'headerFile': 'WebGLExtensions.h'
  1329 },
  1331 'WebGLExtensionCompressedTextureS3TC': {
  1332     'nativeType': 'mozilla::WebGLExtensionCompressedTextureS3TC',
  1333     'headerFile': 'WebGLExtensions.h'
  1334 },
  1336 'WebGLExtensionDepthTexture': {
  1337     'nativeType': 'mozilla::WebGLExtensionDepthTexture',
  1338     'headerFile': 'WebGLExtensions.h'
  1339 },
  1341 'WebGLExtensionDebugRendererInfo': {
  1342     'nativeType': 'mozilla::WebGLExtensionDebugRendererInfo',
  1343     'headerFile': 'WebGLExtensions.h'
  1344 },
  1346 'WebGLExtensionDebugShaders': {
  1347     'nativeType': 'mozilla::WebGLExtensionDebugShaders',
  1348     'headerFile': 'WebGLExtensions.h'
  1349 },
  1351 'WebGLExtensionElementIndexUint': {
  1352     'nativeType': 'mozilla::WebGLExtensionElementIndexUint',
  1353     'headerFile': 'WebGLExtensions.h'
  1354 },
  1356 'WebGLExtensionFragDepth': {
  1357     'nativeType': 'mozilla::WebGLExtensionFragDepth',
  1358     'headerFile': 'WebGLExtensions.h'
  1359 },
  1361 'WebGLExtensionLoseContext': {
  1362     'nativeType': 'mozilla::WebGLExtensionLoseContext',
  1363     'headerFile': 'WebGLExtensions.h'
  1364 },
  1366 'WebGLExtensionSRGB': {
  1367     'nativeType': 'mozilla::WebGLExtensionSRGB',
  1368     'headerFile': 'WebGLExtensions.h'
  1369 },
  1371 'WebGLExtensionStandardDerivatives': {
  1372     'nativeType': 'mozilla::WebGLExtensionStandardDerivatives',
  1373     'headerFile': 'WebGLExtensions.h'
  1374 },
  1376 'WebGLExtensionTextureFilterAnisotropic': {
  1377     'nativeType': 'mozilla::WebGLExtensionTextureFilterAnisotropic',
  1378     'headerFile': 'WebGLExtensions.h'
  1379 },
  1381 'WebGLExtensionTextureFloat': {
  1382     'nativeType': 'mozilla::WebGLExtensionTextureFloat',
  1383     'headerFile': 'WebGLExtensions.h'
  1384 },
  1386 'WebGLExtensionTextureFloatLinear': {
  1387     'nativeType': 'mozilla::WebGLExtensionTextureFloatLinear',
  1388     'headerFile': 'WebGLExtensions.h'
  1389 },
  1391 'WebGLExtensionTextureHalfFloat': {
  1392    'nativeType': 'mozilla::WebGLExtensionTextureHalfFloat',
  1393    'headerFile': 'WebGLExtensions.h'
  1394 },
  1396 'WebGLExtensionTextureHalfFloatLinear': {
  1397    'nativeType': 'mozilla::WebGLExtensionTextureHalfFloatLinear',
  1398    'headerFile': 'WebGLExtensions.h'
  1399 },
  1401 'WebGLExtensionColorBufferFloat': {
  1402    'nativeType': 'mozilla::WebGLExtensionColorBufferFloat',
  1403    'headerFile': 'WebGLExtensions.h'
  1404 },
  1406 'WebGLExtensionColorBufferHalfFloat': {
  1407    'nativeType': 'mozilla::WebGLExtensionColorBufferHalfFloat',
  1408    'headerFile': 'WebGLExtensions.h'
  1409 },
  1411 'WebGLExtensionDrawBuffers': {
  1412     'nativeType': 'mozilla::WebGLExtensionDrawBuffers',
  1413     'headerFile': 'WebGLExtensions.h'
  1414 },
  1416 'WebGLExtensionVertexArray': {
  1417     'nativeType': 'mozilla::WebGLExtensionVertexArray',
  1418     'headerFile': 'WebGLExtensions.h'
  1419 },
  1421 'WebGLExtensionInstancedArrays': {
  1422     'nativeType': 'mozilla::WebGLExtensionInstancedArrays',
  1423     'headerFile': 'WebGLExtensions.h'
  1424 },
  1426 'WebGLFramebuffer': {
  1427     'nativeType': 'mozilla::WebGLFramebuffer',
  1428     'headerFile': 'WebGLFramebuffer.h'
  1429 },
  1431 'WebGLProgram': {
  1432     'nativeType': 'mozilla::WebGLProgram',
  1433     'headerFile': 'WebGLProgram.h'
  1434 },
  1436 'WebGLQuery': {
  1437     'nativeType': 'mozilla::WebGLQuery',
  1438     'headerFile': 'WebGLQuery.h'
  1439 },
  1441 'WebGLRenderbuffer': {
  1442     'nativeType': 'mozilla::WebGLRenderbuffer',
  1443     'headerFile': 'WebGLRenderbuffer.h'
  1444 },
  1446 'WebGLRenderingContext': {
  1447     'nativeType': 'mozilla::WebGLContext',
  1448     'headerFile': 'WebGLContext.h',
  1449     'resultNotAddRefed': [ 'canvas', 'getContextAttributes', 'getExtension',
  1450                            'getAttachedShaders' ],
  1451     'implicitJSContext': [ 'getSupportedExtensions' ],
  1452 },
  1454 'WebGL2RenderingContext': {
  1455     'nativeType': 'mozilla::WebGLContext',
  1456     'headerFile': 'WebGLContext.h',
  1457     'resultNotAddRefed': [ 'canvas', 'getContextAttributes', 'getExtension',
  1458                            'getAttachedShaders' ],
  1459     'implicitJSContext': [ 'getSupportedExtensions' ],
  1460 },
  1462 'WebGLShader': {
  1463     'nativeType': 'mozilla::WebGLShader',
  1464     'headerFile': 'WebGLShader.h'
  1465 },
  1467 'WebGLShaderPrecisionFormat': {
  1468     'nativeType': 'mozilla::WebGLShaderPrecisionFormat',
  1469     'headerFile': 'WebGLShaderPrecisionFormat.h',
  1470     'wrapperCache': False
  1471 },
  1473 'WebGLTexture': {
  1474     'nativeType': 'mozilla::WebGLTexture',
  1475     'headerFile': 'WebGLTexture.h'
  1476 },
  1478 'WebGLUniformLocation': {
  1479     'nativeType': 'mozilla::WebGLUniformLocation',
  1480     'headerFile': 'WebGLUniformLocation.h',
  1481     'wrapperCache': False
  1482 },
  1484 'WebGLVertexArray': {
  1485     'nativeType': 'mozilla::WebGLVertexArray',
  1486     'headerFile': 'WebGLVertexArray.h'
  1487 },
  1489 'WebrtcGlobalInformation': {
  1490     'nativeType': 'mozilla::dom::WebrtcGlobalInformation',
  1491     'headerFile': 'WebrtcGlobalInformation.h',
  1492     'wrapperCache': False,
  1493     'concrete': False,
  1494 },
  1496 'WebSocket': {
  1497     'headerFile': 'WebSocket.h',
  1498 },
  1500 'Window': {
  1501     'nativeType': 'nsGlobalWindow',
  1502     # When turning on Window, remember to drop the "'register': False"
  1503     # from ChromeWindow.
  1504     'hasXPConnectImpls': True,
  1505     'register': False,
  1506     'binaryNames': {
  1507         'postMessage': 'postMessageMoz',
  1508     },
  1509 },
  1511 'WindowProxy': [
  1513     'nativeType': 'nsIDOMWindow',
  1514     'concrete': False
  1515 },
  1517     # We need a worker descriptor for WindowProxy because EventTarget exists in
  1518     # workers.  But it's an external interface, so it'll just map to JSObject*.
  1519     'workers': True
  1520 }],
  1522 'Worker': {
  1523     'headerFile': 'mozilla/dom/WorkerPrivate.h',
  1524     'nativeType': 'mozilla::dom::workers::WorkerPrivate',
  1525     'implicitJSContext': [
  1526         'terminate',
  1527     ],
  1528 },
  1530 'WorkerGlobalScope': {
  1531     'headerFile': 'mozilla/dom/WorkerScope.h',
  1532     'workers': True,
  1533     'concrete': False,
  1534     'implicitJSContext': [
  1535         'close', 'importScripts',
  1536     ],
  1537     'binaryNames': { 'console': 'getConsole', },
  1538 },
  1540 'WorkerLocation': {
  1541     'headerFile': 'mozilla/dom/workers/bindings/Location.h',
  1542     'workers': True,
  1543 },
  1545 'WorkerNavigator': {
  1546     'headerFile': 'mozilla/dom/workers/bindings/Navigator.h',
  1547     'workers': True,
  1548 },
  1550 'XMLHttpRequest': [
  1552     'nativeType': 'nsXMLHttpRequest',
  1553     'implicitJSContext': [ 'constructor', 'send'],
  1554     'resultNotAddRefed': [ 'upload', 'responseXML' ]
  1555 },
  1557     'workers': True,
  1558     # XXXkhuey responseXML returns Document? which boils down to a JSObject*
  1559     # on a worker, and nsRefPtr<JSObject> fails in the expected way. channel is
  1560     # similar.  This is ugly but it's all going away soon anyways.
  1561     'resultNotAddRefed': [
  1562         'responseXML', 'channel'
  1564 }],
  1566 'XMLHttpRequestEventTarget': {
  1567     'nativeType': 'nsXHREventTarget',
  1568     'headerFile': 'nsXMLHttpRequest.h',
  1569     'concrete': False
  1570 },
  1572 'XMLHttpRequestUpload': [
  1574     'nativeType': 'nsXMLHttpRequestUpload',
  1575     'headerFile': 'nsXMLHttpRequest.h'
  1576 },
  1578     'workers': True,
  1579 }],
  1581 'XMLSerializer': {
  1582     'nativeType': 'nsDOMSerializer',
  1583 },
  1585 'XMLStylesheetProcessingInstruction': {
  1586     'resultNotAddRefed': [ 'sheet' ]
  1587 },
  1589 'XPathEvaluator': {
  1590     'wrapperCache': False
  1591 },
  1593 'XULDocument': {
  1594     'headerFile': 'XULDocument.h'
  1595 },
  1597 'XULElement': {
  1598     'nativeType': 'nsXULElement',
  1599     'resultNotAddRefed': [ 'controllers', 'style' ]
  1600 },
  1602 ####################################
  1603 # Test Interfaces of various sorts #
  1604 ####################################
  1606 'TestInterface' : {
  1607         # Keep this in sync with TestExampleInterface
  1608         'headerFile': 'TestBindingHeader.h',
  1609         'register': False,
  1610         'resultNotAddRefed': [ 'receiveWeakSelf', 'receiveWeakNullableSelf',
  1611                                'receiveWeakOther', 'receiveWeakNullableOther',
  1612                                'receiveWeakExternal', 'receiveWeakNullableExternal',
  1613                                'ReceiveWeakCallbackInterface',
  1614                                'ReceiveWeakNullableCallbackInterface',
  1615                                'receiveWeakCastableObjectSequence',
  1616                                'receiveWeakNullableCastableObjectSequence',
  1617                                'receiveWeakCastableObjectNullableSequence',
  1618                                'receiveWeakNullableCastableObjectNullableSequence' ],
  1619         'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo',
  1620                          'attributeGetterRenamedFrom': 'attributeGetterRenamedTo',
  1621                          'attributeRenamedFrom': 'attributeRenamedTo' }
  1622         },
  1624 'TestParentInterface' : {
  1625         'headerFile': 'TestBindingHeader.h',
  1626         'register': False,
  1627         },
  1629 'TestChildInterface' : {
  1630         'headerFile': 'TestBindingHeader.h',
  1631         'register': False,
  1632         },
  1634 'TestCImplementedInterface' : {
  1635         'headerFile': 'TestCImplementedInterface.h',
  1636         'register': False,
  1637         },
  1639 'TestCImplementedInterface2' : {
  1640         'headerFile': 'TestCImplementedInterface.h',
  1641         'register': False,
  1642         },
  1644 'TestJSImplInterface' : {
  1645         # Keep this in sync with TestExampleInterface
  1646         'headerFile': 'TestJSImplGenBinding.h',
  1647         'register': False,
  1648         'resultNotAddRefed': [ 'receiveWeakSelf', 'receiveWeakNullableSelf',
  1649                                'receiveWeakOther', 'receiveWeakNullableOther',
  1650                                'receiveWeakExternal', 'receiveWeakNullableExternal',
  1651                                'ReceiveWeakCallbackInterface',
  1652                                'ReceiveWeakNullableCallbackInterface',
  1653                                'receiveWeakCastableObjectSequence',
  1654                                'receiveWeakNullableCastableObjectSequence',
  1655                                'receiveWeakCastableObjectNullableSequence',
  1656                                'receiveWeakNullableCastableObjectNullableSequence' ],
  1657         'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo',
  1658                          'attributeGetterRenamedFrom': 'attributeGetterRenamedTo',
  1659                          'attributeRenamedFrom': 'attributeRenamedTo' }
  1660         },
  1662 'TestJSImplInterface2' : {
  1663         'headerFile': 'TestJSImplGenBinding.h',
  1664         'register': False
  1665         },
  1667 'TestJSImplInterface3' : {
  1668         'headerFile': 'TestJSImplGenBinding.h',
  1669         'register': False
  1670         },
  1672 'TestJSImplInterface4' : {
  1673         'headerFile': 'TestJSImplGenBinding.h',
  1674         'register': False
  1675         },
  1677 'TestJSImplInterface5' : {
  1678         'headerFile': 'TestJSImplGenBinding.h',
  1679         'register': False
  1680         },
  1682 'TestJSImplInterface6' : {
  1683         'headerFile': 'TestJSImplGenBinding.h',
  1684         'register': False
  1685         },
  1687 'TestNavigator' : {
  1688         'headerFile': 'TestJSImplGenBinding.h',
  1689         'register' : False
  1690         },
  1692 'TestNavigatorWithConstructor' : {
  1693         'headerFile': 'TestJSImplGenBinding.h',
  1694         'register' : False
  1695         },
  1697 'TestExternalInterface' : {
  1698         'nativeType': 'mozilla::dom::TestExternalInterface',
  1699         'headerFile': 'TestBindingHeader.h',
  1700         'register': False
  1701         },
  1703 'TestNonWrapperCacheInterface' : {
  1704         'headerFile': 'TestBindingHeader.h',
  1705         'register': False,
  1706         'wrapperCache': False
  1707         },
  1709 'IndirectlyImplementedInterface': {
  1710         'headerFile': 'TestBindingHeader.h',
  1711         'register': False,
  1712         'castable': False,
  1713         'concrete': False
  1714         },
  1716 'OnlyForUseInConstructor' : {
  1717         'headerFile': 'TestBindingHeader.h',
  1718         'register': False
  1719         },
  1721 'ImplementedInterface' : {
  1722         'headerFile': 'TestBindingHeader.h',
  1723         'concrete': False,
  1724         'register': False,
  1725         },
  1727 'ImplementedInterfaceParent' : {
  1728         'headerFile': 'TestBindingHeader.h',
  1729         'concrete': False,
  1730         'register': False
  1731         },
  1733 'DiamondImplements' : {
  1734         'headerFile': 'TestBindingHeader.h',
  1735         'concrete': False,
  1736         'register': False
  1737         },
  1739 'DiamondBranch1A' : {
  1740         'headerFile': 'TestBindingHeader.h',
  1741         'concrete': False,
  1742         'register': False
  1743         },
  1745 'DiamondBranch1B' : {
  1746         'headerFile': 'TestBindingHeader.h',
  1747         'concrete': False,
  1748         'register': False
  1749         },
  1751 'DiamondBranch2A' : {
  1752         'headerFile': 'TestBindingHeader.h',
  1753         'concrete': False,
  1754         'register': False
  1755         },
  1757 'DiamondBranch2B' : {
  1758         'headerFile': 'TestBindingHeader.h',
  1759         'concrete': False,
  1760         'register': False
  1761         },
  1763 'TestIndexedGetterInterface' : {
  1764         'headerFile': 'TestBindingHeader.h',
  1765         'register': False
  1766         },
  1768 'TestNamedGetterInterface' : {
  1769         'headerFile': 'TestBindingHeader.h',
  1770         'register': False
  1771         },
  1773 'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
  1774         'headerFile': 'TestBindingHeader.h',
  1775         'register': False
  1776         },
  1778 'TestIndexedAndNamedGetterInterface' : {
  1779         'headerFile': 'TestBindingHeader.h',
  1780         'register': False
  1781         },
  1783 'TestIndexedSetterInterface' : {
  1784         'headerFile': 'TestBindingHeader.h',
  1785         'register': False
  1786         },
  1788 'TestNamedSetterInterface' : {
  1789         'headerFile': 'TestBindingHeader.h',
  1790         'register': False
  1791         },
  1793 'TestIndexedAndNamedSetterInterface' : {
  1794         'headerFile': 'TestBindingHeader.h',
  1795         'register': False
  1796         },
  1798 'TestIndexedAndNamedGetterAndSetterInterface' : {
  1799         'headerFile': 'TestBindingHeader.h',
  1800         'register': False,
  1801         },
  1803 'TestRenamedInterface' : {
  1804         'headerFile': 'TestBindingHeader.h',
  1805         'register': False,
  1806         'nativeType': 'nsRenamedInterface'
  1807         },
  1809 'TestIndexedDeleterInterface' : {
  1810         'headerFile': 'TestBindingHeader.h',
  1811         'register': False
  1812         },
  1814 'TestIndexedDeleterWithRetvalInterface' : {
  1815         'headerFile': 'TestBindingHeader.h',
  1816         'register': False
  1817         },
  1819 'TestNamedDeleterInterface' : {
  1820         'headerFile': 'TestBindingHeader.h',
  1821         'register': False
  1822         },
  1824 'TestNamedDeleterWithRetvalInterface' : {
  1825         'headerFile': 'TestBindingHeader.h',
  1826         'register': False
  1827         },
  1829 'TestIndexedAndNamedDeleterInterface' : {
  1830         'headerFile': 'TestBindingHeader.h',
  1831         'register': False
  1832         },
  1834 'TestCppKeywordNamedMethodsInterface' : {
  1835         'headerFile': 'TestBindingHeader.h',
  1836         'register': False
  1837         },
  1839 'TestExampleInterface' : {
  1840         # Keep this in sync with TestInterface
  1841         'headerFile': 'TestExampleInterface-example.h',
  1842         'register': False,
  1843         'resultNotAddRefed': [ 'receiveWeakSelf', 'receiveWeakNullableSelf',
  1844                                'receiveWeakOther', 'receiveWeakNullableOther',
  1845                                'receiveWeakExternal', 'receiveWeakNullableExternal',
  1846                                'ReceiveWeakCallbackInterface',
  1847                                'ReceiveWeakNullableCallbackInterface',
  1848                                'receiveWeakCastableObjectSequence',
  1849                                'receiveWeakNullableCastableObjectSequence',
  1850                                'receiveWeakCastableObjectNullableSequence',
  1851                                'receiveWeakNullableCastableObjectNullableSequence' ],
  1852         'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo',
  1853                          'attributeGetterRenamedFrom': 'attributeGetterRenamedTo',
  1854                          'attributeRenamedFrom': 'attributeRenamedTo' }
  1855         },
  1857 'TestExampleProxyInterface' : {
  1858         'headerFile': 'TestExampleProxyInterface-example.h',
  1859         'register': False
  1863 # These are temporary, until they've been converted to use new DOM bindings
  1864 def addExternalIface(iface, nativeType=None, headerFile=None,
  1865                      notflattened=False):
  1866     if iface in DOMInterfaces:
  1867         raise Exception('Interface declared both as WebIDL and External interface')
  1868     domInterface = {
  1869         'concrete': False
  1871     if not nativeType is None:
  1872         domInterface['nativeType'] = nativeType
  1873     if not headerFile is None:
  1874         domInterface['headerFile'] = headerFile
  1875     domInterface['notflattened'] = notflattened
  1876     DOMInterfaces[iface] = domInterface
  1878 addExternalIface('ApplicationCache', nativeType='nsIDOMOfflineResourceList')
  1879 addExternalIface('Counter')
  1880 addExternalIface('CSSRule')
  1881 addExternalIface('mozIDOMApplication', nativeType='mozIDOMApplication', headerFile='nsIDOMApplicationRegistry.h')
  1882 addExternalIface('CSSRuleList')
  1883 addExternalIface('RTCDataChannel', nativeType='nsIDOMDataChannel')
  1884 addExternalIface('File')
  1885 addExternalIface('HitRegionOptions', nativeType='nsISupports')
  1886 addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
  1887 addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True)
  1888 addExternalIface('MenuBuilder', nativeType='nsIMenuBuilder', notflattened=True)
  1889 addExternalIface('MozBoxObject', nativeType='nsIBoxObject')
  1890 addExternalIface('MozControllers', nativeType='nsIControllers')
  1891 addExternalIface('MozFrameLoader', nativeType='nsIFrameLoader', notflattened=True)
  1892 addExternalIface('MozFrameRequestCallback', nativeType='nsIFrameRequestCallback',
  1893                  notflattened=True)
  1894 addExternalIface('MozIccInfo', headerFile='nsIDOMIccInfo.h')
  1895 addExternalIface('MozMobileConnection', headerFile='nsIDOMMobileConnection.h')
  1896 addExternalIface('MozMobileMessageManager', headerFile='nsIDOMMobileMessageManager.h')
  1897 addExternalIface('MozObserver', nativeType='nsIObserver', notflattened=True)
  1898 addExternalIface('MozRDFCompositeDataSource', nativeType='nsIRDFCompositeDataSource',
  1899                  notflattened=True)
  1900 addExternalIface('MozRDFResource', nativeType='nsIRDFResource', notflattened=True)
  1901 addExternalIface('MozTreeBoxObject', nativeType='nsITreeBoxObject',
  1902                  notflattened=True)
  1903 addExternalIface('MozTreeColumn', nativeType='nsITreeColumn',
  1904                  headerFile='nsITreeColumns.h')
  1905 addExternalIface('MozVoicemailStatus')
  1906 addExternalIface('MozWakeLockListener', headerFile='nsIDOMWakeLockListener.h')
  1907 addExternalIface('MozXULTemplateBuilder', nativeType='nsIXULTemplateBuilder')
  1908 addExternalIface('nsIBrowserDOMWindow', nativeType='nsIBrowserDOMWindow',
  1909                  notflattened=True)
  1910 addExternalIface('nsIControllers', nativeType='nsIControllers')
  1911 addExternalIface('nsIDOMCrypto', nativeType='nsIDOMCrypto',
  1912                  headerFile='Crypto.h')
  1913 addExternalIface('nsIInputStreamCallback', nativeType='nsIInputStreamCallback',
  1914                  headerFile='nsIAsyncInputStream.h')
  1915 addExternalIface('nsIMessageBroadcaster', nativeType='nsIMessageBroadcaster',
  1916                  headerFile='nsIMessageManager.h', notflattened=True)
  1917 addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
  1918 addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
  1919 addExternalIface('nsISupports', nativeType='nsISupports')
  1920 addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
  1921 addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True)
  1922 addExternalIface('nsIVariant', nativeType='nsIVariant', notflattened=True)
  1923 addExternalIface('OutputStream', nativeType='nsIOutputStream',
  1924                  notflattened=True)
  1925 addExternalIface('Principal', nativeType='nsIPrincipal',
  1926                  headerFile='nsIPrincipal.h', notflattened=True)
  1927 addExternalIface('StackFrame', nativeType='nsIStackFrame',
  1928                  headerFile='nsIException.h', notflattened=True)
  1929 addExternalIface('SVGNumber')
  1930 addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
  1931                  notflattened=True)
  1932 addExternalIface('UserDataHandler')
  1933 addExternalIface('XPathResult', nativeType='nsISupports')
  1934 addExternalIface('XPathExpression')
  1935 addExternalIface('XPathNSResolver')
  1936 addExternalIface('XULCommandDispatcher')

mercurial