tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Bindings.conf (53639B)


      1 # -*- Mode:Python; tab-width:8; indent-tabs-mode:nil -*- */
      2 # vim: set ts=8 sts=4 et sw=4 tw=80: */
      3 # This Source Code Form is subject to the terms of the Mozilla Public
      4 # License, v. 2.0. If a copy of the MPL was not distributed with this
      5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      6 
      7 # DOM Bindings Configuration.
      8 #
      9 # The WebIDL interfaces are defined in dom/webidl. For interfaces requiring
     10 # special handling, there are corresponding entries in the configuration table
     11 # below. The configuration table maps each interface name to a |descriptor|.
     12 #
     13 # Valid fields for all descriptors:
     14 #   * nativeType - The native type (concrete class or XPCOM interface) that
     15 #                  instances of this interface will unwrap to.  If not
     16 #                  specified, defaults to 'nsIDOM' followed by the interface
     17 #                  name for external interfaces and
     18 #                  'mozilla::dom::InterfaceName' for everything else.
     19 #   * headerFile - The file in which the nativeType is declared (defaults
     20 #                  to an educated guess).
     21 #   * concrete - Indicates whether there exist JS objects with this interface as
     22 #                their primary interface (and hence whose prototype is this
     23 #                interface's prototype object).  Always False for callback
     24 #                interfaces.  Defaults to True for leaf interfaces and
     25 #                interfaces with constructors, false otherwise.
     26 #   * notflattened - The native type does not have nsIClassInfo, so when
     27 #                    wrapping it the right IID needs to be passed in.
     28 #                    Only relevant for callback interfaces.
     29 #   * register - True if this binding should be registered.  Defaults to true.
     30 #   * wrapperCache: True if this object is a wrapper cache.  Objects that are
     31 #                   not can only be returned from a limited set of methods,
     32 #                   cannot be prefable, and must ensure that they disallow
     33 #                   XPConnect wrapping.  Always false for callback interfaces.
     34 #                   Defaults to true for non-callback descriptors.
     35 #   * implicitJSContext - Llist of names of attributes and methods specified in
     36 #                         the .webidl file that require a JSContext as the first
     37 #                         argument.
     38 #
     39 # The value for an interface is a dictionary which specifies the
     40 # descriptor to use when generating that interface's binding.
     41 
     42 import buildconfig
     43 
     44 DOMInterfaces = {
     45 
     46 'AbortSignal': {
     47     'implicitJSContext': [ 'throwIfAborted' ],
     48     'concrete': True,
     49 },
     50 
     51 'AnonymousContent': {
     52     'wrapperCache': False
     53 },
     54 
     55 'AudioBuffer': {
     56     'implicitJSContext': [ 'copyToChannel' ],
     57 },
     58 
     59 'AudioBufferSourceNode': {
     60     'implicitJSContext': [ 'buffer' ],
     61 },
     62 
     63 'AudioWorkletGlobalScope': {
     64     'implicitJSContext': [ 'registerProcessor' ],
     65 },
     66 
     67 'BarProp': {
     68     'headerFile': 'mozilla/dom/BarProps.h',
     69 },
     70 
     71 'BaseAudioContext': {
     72     'nativeType': 'mozilla::dom::AudioContext',
     73 },
     74 
     75 'BatteryManager': {
     76     'nativeType': 'mozilla::dom::battery::BatteryManager',
     77     'headerFile': 'BatteryManager.h'
     78 },
     79 
     80 'Blob': {
     81     'implicitJSContext': [ 'stream' ],
     82 },
     83 
     84 'BrowsingContext': {
     85     'concrete': True,
     86 },
     87 
     88 'Cache': {
     89     'implicitJSContext': [ 'add', 'addAll', 'match', 'matchAll', 'put',
     90                            'delete', 'keys' ],
     91     'nativeType': 'mozilla::dom::cache::Cache',
     92 },
     93 
     94 'CacheStorage': {
     95     'implicitJSContext': [ 'match' ],
     96     'nativeType': 'mozilla::dom::cache::CacheStorage',
     97 },
     98 
     99 'CanvasRenderingContext2D': {
    100     'implicitJSContext': [
    101         'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
    102     ],
    103 },
    104 
    105 'CaretPosition' : {
    106     'nativeType': 'nsDOMCaretPosition',
    107 },
    108 
    109 'ChannelWrapper': {
    110     'nativeType': 'mozilla::extensions::ChannelWrapper',
    111 },
    112 
    113 'Client' : {
    114     'concrete': True,
    115 },
    116 
    117 'ClonedErrorHolder': {
    118     'wrapperCache': False
    119 },
    120 
    121 'console': {
    122     'nativeType': 'mozilla::dom::Console',
    123 },
    124 
    125 'ConsoleInstance': {
    126     'implicitJSContext': ['clear', 'count', 'countReset', 'groupEnd', 'time', 'timeEnd'],
    127 },
    128 
    129 'ConvolverNode': {
    130     'implicitJSContext': [ 'buffer' ],
    131 },
    132 
    133 'Credential' : {
    134     'concrete': True,
    135 },
    136 
    137 'Crypto' : {
    138     'headerFile': 'Crypto.h'
    139 },
    140 
    141 'CSSStyleProperties': {
    142     'nativeType': 'nsDOMCSSDeclaration'
    143 },
    144 
    145 'CSSColorValue': {
    146     'concrete': True,
    147 },
    148 
    149 'CSSPageDescriptors': {
    150     'nativeType': 'mozilla::dom::CSSPageRuleDeclaration',
    151     'headerFile': 'mozilla/dom/CSSPageRule.h',
    152 },
    153 
    154 'CSSConditionRule': {
    155     'nativeType': 'mozilla::css::ConditionRule',
    156     'headerFile': 'mozilla/css/GroupRule.h',
    157 },
    158 
    159 'CSSGroupingRule': {
    160     'nativeType': 'mozilla::css::GroupRule',
    161 },
    162 
    163 'CSSNumericValue': {
    164     'concrete': True,
    165 },
    166 
    167 'CSSRule': {
    168     'nativeType': 'mozilla::css::Rule'
    169 },
    170 
    171 'CSSStyleDeclaration': {
    172     'nativeType': 'nsICSSDeclaration',
    173     # Concrete because of the font-face mess.
    174     'concrete': True,
    175 },
    176 
    177 'CSSStyleSheet': {
    178     'nativeType': 'mozilla::StyleSheet',
    179 },
    180 
    181 'CSSStyleValue': {
    182     'concrete': True,
    183 },
    184 
    185 'CSSPositionTryDescriptors': {
    186     'nativeType': 'mozilla::dom::CSSPositionTryRuleDeclaration',
    187     'headerFile': 'mozilla/dom/CSSPositionTryRule.h',
    188 },
    189 
    190 'CSSTransformComponent': {
    191     'concrete': True,
    192 },
    193 
    194 'CustomElementRegistry': {
    195     'implicitJSContext': ['define', 'getName'],
    196 },
    197 
    198 'DebuggerNotification': {
    199     'concrete': True,
    200 },
    201 'CallbackDebuggerNotification': {
    202     'concrete': True,
    203 },
    204 
    205 'DedicatedWorkerGlobalScope': {
    206     'headerFile': 'mozilla/dom/WorkerScope.h',
    207 },
    208 
    209 'DeviceAcceleration': {
    210     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
    211 },
    212 
    213 'DeviceRotationRate': {
    214     'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
    215 },
    216 
    217 'DominatorTree': {
    218     'nativeType': 'mozilla::devtools::DominatorTree'
    219 },
    220 
    221 'DOMException': {
    222     'implicitJSContext': [ 'filename', 'lineNumber', 'columnNumber', 'stack' ],
    223 },
    224 
    225 'DOMMatrixReadOnly': {
    226     'headerFile': 'mozilla/dom/DOMMatrix.h',
    227 },
    228 
    229 'DOMPointReadOnly': {
    230     'headerFile': 'mozilla/dom/DOMPoint.h',
    231 },
    232 
    233 'DOMRectList': {
    234     'headerFile': 'mozilla/dom/DOMRect.h',
    235 },
    236 
    237 'DOMRectReadOnly': {
    238     'headerFile': 'mozilla/dom/DOMRect.h',
    239 },
    240 
    241 'DOMStringMap': {
    242     'nativeType': 'nsDOMStringMap'
    243 },
    244 
    245 'DOMTokenList': {
    246     'nativeType': 'nsDOMTokenList',
    247 },
    248 
    249 'Element': {
    250     'concrete': True,
    251 },
    252 
    253 'Event': {
    254     'implicitJSContext': [ 'preventDefault' ],
    255 },
    256 
    257 'EventTarget': {
    258     'jsImplParent': 'mozilla::DOMEventTargetHelper',
    259 },
    260 
    261 'Exception': {
    262     'headerFile': 'mozilla/dom/DOMException.h',
    263     'implicitJSContext': [ '__stringifier', 'filename', 'lineNumber', 'columnNumber', 'stack' ],
    264 },
    265 
    266 'ExtendableEvent': {
    267     'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
    268     'implicitJSContext': [ 'waitUntil' ],
    269 },
    270 
    271 'ExtendableMessageEvent': {
    272     'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
    273 },
    274 
    275 'FetchEvent': {
    276     'headerFile': 'ServiceWorkerEvents.h',
    277     'implicitJSContext': [ 'respondWith' ],
    278 },
    279 
    280 'FileReader': {
    281     'implicitJSContext': [ 'readAsArrayBuffer' ],
    282 },
    283 
    284 'FileReaderSync': {
    285     'wrapperCache': False,
    286 },
    287 
    288 'FileSystemEntry': {
    289     'concrete': True,
    290 },
    291 
    292 'FileSystemHandle': {
    293     'concrete': True,
    294 },
    295 
    296 'FluentBundle': {
    297     'nativeType': 'mozilla::intl::FluentBundle',
    298 },
    299 
    300 'FluentBundleAsyncIterator': {
    301     'headerFile': 'mozilla/intl/L10nRegistry.h',
    302     'nativeType': 'mozilla::intl::FluentBundleAsyncIterator',
    303 },
    304 
    305 'FluentBundleIterator': {
    306     'headerFile': 'mozilla/intl/L10nRegistry.h',
    307     'nativeType': 'mozilla::intl::FluentBundleIterator',
    308 },
    309 
    310 'FluentPattern': {
    311     'headerFile': 'mozilla/intl/FluentBundle.h',
    312     'nativeType': 'mozilla::intl::FluentPattern',
    313 },
    314 
    315 'FluentResource': {
    316     'headerFile': 'mozilla/intl/FluentResource.h',
    317     'nativeType': 'mozilla::intl::FluentResource',
    318 },
    319 
    320 'FontFaceSet': {
    321     'implicitJSContext': [ 'load' ],
    322 },
    323 
    324 'FontFaceSetIterator': {
    325     'wrapperCache': False,
    326 },
    327 
    328 'FrameLoader': {
    329     'nativeType': 'nsFrameLoader',
    330 },
    331 
    332 'HeapSnapshot': {
    333     'nativeType': 'mozilla::devtools::HeapSnapshot'
    334 },
    335 
    336 'History': {
    337     'implicitJSContext': [ 'go' ],
    338     'headerFile': 'nsHistory.h',
    339     'nativeType': 'nsHistory'
    340 },
    341 
    342 'HTMLBaseElement': {
    343     'nativeType': 'mozilla::dom::HTMLSharedElement'
    344 },
    345 
    346 'HTMLCollection': {
    347     'nativeType': 'nsIHTMLCollection',
    348     # nsContentList.h pulls in nsIHTMLCollection.h
    349     'headerFile': 'nsContentList.h',
    350     'concrete': True,
    351 },
    352 
    353 'HTMLDirectoryElement': {
    354     'nativeType': 'mozilla::dom::HTMLSharedElement'
    355 },
    356 
    357 'HTMLDListElement': {
    358     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
    359 },
    360 
    361 'HTMLDocument': {
    362     'nativeType': 'nsHTMLDocument',
    363     'concrete': True,
    364 },
    365 
    366 'HTMLElement': {
    367     'nativeType': 'nsGenericHTMLElement',
    368 },
    369 
    370 'HTMLHeadElement': {
    371     'nativeType': 'mozilla::dom::HTMLSharedElement'
    372 },
    373 
    374 'HTMLHtmlElement': {
    375     'nativeType': 'mozilla::dom::HTMLSharedElement'
    376 },
    377 
    378 'HTMLOListElement': {
    379     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
    380 },
    381 
    382 'HTMLParamElement': {
    383     'nativeType': 'mozilla::dom::HTMLSharedElement'
    384 },
    385 
    386 'HTMLQuoteElement': {
    387     'nativeType': 'mozilla::dom::HTMLSharedElement'
    388 },
    389 
    390 'HTMLUListElement': {
    391     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
    392 },
    393 
    394 'IDBCursor': {
    395     'implicitJSContext': [ 'delete' ],
    396     'concrete': True,
    397 },
    398 
    399 'IDBCursorWithValue': {
    400     'nativeType': 'mozilla::dom::IDBCursor',
    401 },
    402 
    403 'IDBDatabase': {
    404     'implicitJSContext': [ 'transaction' ],
    405 },
    406 
    407 'IDBFactory': {
    408     'implicitJSContext': [ 'open', 'deleteDatabase', 'databases',
    409                            'openForPrincipal', 'deleteForPrincipal' ],
    410 },
    411 
    412 'IDBKeyRange': {
    413     'wrapperCache': False,
    414     'concrete': True,
    415 },
    416 
    417 'IDBObjectStore': {
    418     'implicitJSContext': [ 'clear' ],
    419 },
    420 
    421 'IDBOpenDBRequest': {
    422     'headerFile': 'IDBRequest.h'
    423 },
    424 
    425 'IDBRequest': {
    426     'concrete': True,
    427 },
    428 
    429 'IDBVersionChangeEvent': {
    430     'headerFile': 'IDBEvents.h',
    431 },
    432 
    433 'IOUtils': {
    434     'nativeType': 'mozilla::IOUtils',
    435     'headerFile': 'mozilla/IOUtils.h',
    436 },
    437 
    438 'InspectorFontFace': {
    439     'wrapperCache': False,
    440 },
    441 
    442 'InspectorCSSParser': {
    443     'wrapperCache': False,
    444 },
    445 
    446 'IntersectionObserver': {
    447     'nativeType': 'mozilla::dom::DOMIntersectionObserver',
    448 },
    449 
    450 'IntersectionObserverEntry': {
    451     'nativeType': 'mozilla::dom::DOMIntersectionObserverEntry',
    452     'headerFile': 'DOMIntersectionObserver.h',
    453 },
    454 
    455 'KeyEvent' : {
    456     'concrete': False,
    457 },
    458 
    459 'L10nFileSource': {
    460     'headerFile': 'mozilla/intl/FileSource.h',
    461     'nativeType': 'mozilla::intl::L10nFileSource',
    462 },
    463 
    464 'L10nRegistry': {
    465     'nativeType': 'mozilla::intl::L10nRegistry',
    466 },
    467 
    468 'LegacyMozTCPSocket': {
    469     'headerFile': 'TCPSocket.h',
    470     'wrapperCache': False,
    471 },
    472 
    473 'Localization': {
    474     'nativeType': 'mozilla::intl::Localization',
    475 },
    476 
    477 'Location': {
    478     'implicitJSContext': [ 'reload' ],
    479 },
    480 
    481 'MatchGlob': {
    482     'nativeType': 'mozilla::extensions::MatchGlob',
    483 },
    484 
    485 'MatchPattern': {
    486     'nativeType': 'mozilla::extensions::MatchPattern',
    487 },
    488 
    489 'MatchPatternSet': {
    490     'headerFile': 'mozilla/extensions/MatchPattern.h',
    491     'nativeType': 'mozilla::extensions::MatchPatternSet',
    492 },
    493 
    494 'MediaStream': {
    495     'headerFile': 'DOMMediaStream.h',
    496     'nativeType': 'mozilla::DOMMediaStream'
    497 },
    498 
    499 'MediaRecorder': {
    500     'headerFile': 'MediaRecorder.h',
    501 },
    502 
    503 'MimeType': {
    504     'headerFile' : 'nsMimeTypeArray.h',
    505     'nativeType': 'nsMimeType',
    506 },
    507 
    508 'MimeTypeArray': {
    509     'nativeType': 'nsMimeTypeArray',
    510 },
    511 
    512 'MozCanvasPrintState': {
    513     'headerFile': 'mozilla/dom/HTMLCanvasElement.h',
    514     'nativeType': 'mozilla::dom::HTMLCanvasPrintState',
    515 },
    516 
    517 'MozChannel': {
    518     'nativeType': 'nsIChannel',
    519     'notflattened': True
    520 },
    521 
    522 'MozDocumentMatcher': {
    523     'nativeType': 'mozilla::extensions::MozDocumentMatcher',
    524     'headerFile': 'mozilla/extensions/WebExtensionContentScript.h',
    525 },
    526 
    527 'MozDocumentObserver': {
    528     'nativeType': 'mozilla::extensions::DocumentObserver',
    529 },
    530 
    531 'MozSharedMap': {
    532     'nativeType': 'mozilla::dom::ipc::SharedMap',
    533     'concrete': True,
    534 },
    535 
    536 'MozWritableSharedMap': {
    537     'headerFile': 'mozilla/dom/ipc/SharedMap.h',
    538     'nativeType': 'mozilla::dom::ipc::WritableSharedMap',
    539 },
    540 
    541 'MozSharedMapChangeEvent': {
    542     'nativeType': 'mozilla::dom::ipc::SharedMapChangeEvent',
    543 },
    544 
    545 'MozStorageAsyncStatementParams': {
    546     'headerFile': 'mozilla/storage/mozStorageAsyncStatementParams.h',
    547     'nativeType': 'mozilla::storage::AsyncStatementParams',
    548 },
    549 
    550 'MozStorageStatementParams': {
    551     'headerFile': 'mozilla/storage/mozStorageStatementParams.h',
    552     'nativeType': 'mozilla::storage::StatementParams',
    553 },
    554 
    555 'MozStorageStatementRow': {
    556     'headerFile': 'mozilla/storage/mozStorageStatementRow.h',
    557     'nativeType': 'mozilla::storage::StatementRow',
    558 },
    559 
    560 'MozQueryInterface': {
    561     'wrapperCache': False,
    562 },
    563 
    564 'MutationObserver': {
    565     'nativeType': 'nsDOMMutationObserver',
    566 },
    567 
    568 'MutationRecord': {
    569     'nativeType': 'nsDOMMutationRecord',
    570     'headerFile': 'nsDOMMutationObserver.h',
    571 },
    572 
    573 'NamedNodeMap': {
    574     'nativeType': 'nsDOMAttributeMap',
    575 },
    576 
    577 'NetworkInformation': {
    578     'nativeType': 'mozilla::dom::network::Connection',
    579 },
    580 
    581 'Node': {
    582     'nativeType': 'nsINode',
    583     # Some WebIDL APIs that return Node use nsIContent internally (which doesn't
    584     # have a direct correspondence with any WebIDL interface), so we need to use
    585     # nsIContent.h so that the compiler knows nsIContent and nsINode are related
    586     # by inheritance.
    587     'headerFile': 'nsIContent.h',
    588 },
    589 
    590 'NodeIterator': {
    591     'wrapperCache': False,
    592 },
    593 
    594 'NodeList': {
    595     'nativeType': 'nsINodeList',
    596     'concrete': True,
    597 },
    598 
    599 'OfflineAudioContext': {
    600     'nativeType': 'mozilla::dom::AudioContext',
    601 },
    602 
    603 'OffscreenCanvasRenderingContext2D': {
    604     'implicitJSContext': [
    605         'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
    606     ],
    607 },
    608 
    609 'PaintRequestList': {
    610     'headerFile': 'mozilla/dom/PaintRequest.h',
    611 },
    612 
    613 'Path2D': {
    614     'nativeType': 'mozilla::dom::CanvasPath',
    615     'headerFile': 'CanvasPath.h'
    616 },
    617 
    618 'PathUtils': {
    619     'nativeType': 'mozilla::PathUtils',
    620     'headerFile': 'mozilla/PathUtils.h',
    621 },
    622 
    623 'Performance' : {
    624     'implicitJSContext': [
    625         'mark'
    626     ],
    627 },
    628 
    629 'PerformanceResourceTiming' : {
    630     'concrete': True,
    631 },
    632 
    633 'TaskController' : {
    634     'nativeType' : 'mozilla::dom::WebTaskController',
    635     'headerFile' : 'mozilla/dom/WebTaskController.h'
    636 },
    637 
    638 'TransformStreamDefaultController': {
    639     'implicitJSContext': ['terminate'],
    640 },
    641 
    642 'Plugin': {
    643     'headerFile' : 'nsPluginArray.h',
    644     'nativeType': 'nsPluginElement',
    645 },
    646 
    647 'PluginArray': {
    648     'nativeType': 'nsPluginArray',
    649 },
    650 
    651 'PromiseNativeHandler': {
    652     'wrapperCache': False,
    653 },
    654 
    655 'PushEvent': {
    656     'headerFile': 'ServiceWorkerEvents.h',
    657 },
    658 
    659 'PushMessageData': {
    660     'headerFile': 'ServiceWorkerEvents.h',
    661 },
    662 
    663 'Range': {
    664     'nativeType': 'nsRange',
    665 },
    666 
    667 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
    668 'ReadableByteStreamController': {
    669     'implicitJSContext': ['byobRequest', 'close', 'enqueue'],
    670 },
    671 
    672 'ReadableStream': {
    673     'implicitJSContext': ['tee'],
    674 },
    675 
    676 'ReadableStreamBYOBRequest': {
    677     'implicitJSContext': ['respond', 'respondWithNewView'],
    678 },
    679 
    680 'ReadableStreamDefaultController': {
    681     'implicitJSContext': ['close'],
    682 },
    683 
    684 'Request': {
    685     'implicitJSContext': [ 'arrayBuffer', 'blob', 'bytes', 'formData', 'json',
    686                            'text' ],
    687 },
    688 
    689 'ResizeObserverEntry': {
    690     'nativeType': 'mozilla::dom::ResizeObserverEntry',
    691     'headerFile': 'mozilla/dom/ResizeObserver.h',
    692 },
    693 
    694 'ResizeObserverSize': {
    695     'nativeType': 'mozilla::dom::ResizeObserverSize',
    696     'headerFile': 'mozilla/dom/ResizeObserver.h',
    697 },
    698 
    699 'Response': {
    700     'implicitJSContext': [ 'arrayBuffer', 'blob', 'bytes', 'body', 'formData',
    701                            'json', 'text', 'clone', 'cloneUnfiltered' ],
    702 },
    703 
    704 'Scheduler': {
    705     'nativeType': 'mozilla::dom::WebTaskScheduler',
    706     'headerFile': 'mozilla/dom/WebTaskScheduler.h',
    707 },
    708 
    709 'Screen': {
    710     'nativeType': 'nsScreen',
    711 },
    712 
    713 'ServiceWorkerGlobalScope': {
    714     'headerFile': 'mozilla/dom/WorkerScope.h',
    715 },
    716 
    717 'ServiceWorkerRegistration': {
    718     'implicitJSContext': [ 'pushManager' ],
    719 },
    720 
    721 'ShadowRealmGlobalScope': {
    722     'hasOrdinaryObjectPrototype': True,
    723 },
    724 
    725 'SharedWorkerGlobalScope': {
    726     'headerFile': 'mozilla/dom/WorkerScope.h',
    727 },
    728 
    729 'StreamFilter': {
    730     'nativeType': 'mozilla::extensions::StreamFilter',
    731 },
    732 
    733 'StreamFilterDataEvent': {
    734     'nativeType': 'mozilla::extensions::StreamFilterDataEvent',
    735     'headerFile': 'mozilla/extensions/StreamFilterEvents.h',
    736 },
    737 
    738 'StructuredCloneHolder': {
    739     'nativeType': 'mozilla::dom::StructuredCloneBlob',
    740     'wrapperCache': False,
    741 },
    742 
    743 'StylePropertyMapReadOnly': {
    744     'concrete': True,
    745 },
    746 
    747 'StyleSheet': {
    748     'nativeType': 'mozilla::StyleSheet',
    749     'headerFile': 'mozilla/StyleSheetInlines.h',
    750 },
    751 
    752 'SVGAnimatedAngle': {
    753     'nativeType': 'mozilla::dom::DOMSVGAnimatedAngle',
    754     'headerFile': 'DOMSVGAnimatedAngle.h',
    755 },
    756 
    757 'SVGAnimatedBoolean': {
    758     'nativeType': 'mozilla::dom::DOMSVGAnimatedBoolean',
    759     'headerFile': 'DOMSVGAnimatedBoolean.h',
    760 },
    761 
    762 'SVGAnimatedEnumeration': {
    763     'nativeType': 'mozilla::dom::DOMSVGAnimatedEnumeration',
    764     'headerFile': 'DOMSVGAnimatedEnumeration.h',
    765 },
    766 
    767 'SVGAnimatedInteger': {
    768     'nativeType': 'mozilla::dom::DOMSVGAnimatedInteger',
    769     'headerFile': 'DOMSVGAnimatedInteger.h',
    770 },
    771 
    772 'SVGAnimatedPreserveAspectRatio': {
    773     'nativeType': 'mozilla::dom::DOMSVGAnimatedPreserveAspectRatio',
    774     'headerFile': 'SVGAnimatedPreserveAspectRatio.h'
    775 },
    776 
    777 'SVGAnimatedLength': {
    778     'nativeType': 'mozilla::dom::DOMSVGAnimatedLength',
    779     'headerFile': 'DOMSVGAnimatedLength.h',
    780 },
    781 
    782 'SVGAnimatedLengthList': {
    783     'nativeType': 'mozilla::dom::DOMSVGAnimatedLengthList',
    784     'headerFile': 'DOMSVGAnimatedLengthList.h',
    785 },
    786 
    787 'SVGAnimatedNumber': {
    788     'nativeType': 'mozilla::dom::DOMSVGAnimatedNumber',
    789     'headerFile': 'DOMSVGAnimatedNumber.h',
    790 },
    791 
    792 'SVGAnimatedNumberList': {
    793     'nativeType': 'mozilla::dom::DOMSVGAnimatedNumberList',
    794     'headerFile': 'DOMSVGAnimatedNumberList.h'
    795 },
    796 
    797 'SVGAnimatedString': {
    798     'nativeType': 'mozilla::dom::DOMSVGAnimatedString',
    799     'headerFile': 'DOMSVGAnimatedString.h',
    800 },
    801 
    802 'SVGAnimatedTransformList': {
    803     'nativeType': 'mozilla::dom::DOMSVGAnimatedTransformList',
    804     'headerFile': 'DOMSVGAnimatedTransformList.h'
    805 },
    806 
    807 'SVGAngle': {
    808     'nativeType': 'mozilla::dom::DOMSVGAngle',
    809     'headerFile': 'DOMSVGAngle.h'
    810 },
    811 
    812 'SVGElement': {
    813     'concrete': True,
    814 },
    815 
    816 'SVGFEFuncAElement': {
    817     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
    818 },
    819 
    820 'SVGFEFuncBElement': {
    821     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
    822 },
    823 
    824 'SVGFEFuncGElement': {
    825     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
    826 },
    827 
    828 'SVGFEFuncRElement': {
    829     'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
    830 },
    831 
    832 'SVGLength': {
    833     'nativeType': 'mozilla::dom::DOMSVGLength',
    834     'headerFile': 'DOMSVGLength.h'
    835 },
    836 
    837 'SVGLengthList': {
    838     'nativeType': 'mozilla::dom::DOMSVGLengthList',
    839     'headerFile': 'DOMSVGLengthList.h'
    840 },
    841 
    842 'SVGLinearGradientElement': {
    843     'headerFile': 'mozilla/dom/SVGGradientElement.h',
    844 },
    845 
    846 'SVGNumber': {
    847     'nativeType': 'mozilla::dom::DOMSVGNumber',
    848     'headerFile': 'DOMSVGNumber.h',
    849 },
    850 
    851 'SVGNumberList': {
    852     'nativeType': 'mozilla::dom::DOMSVGNumberList',
    853     'headerFile': 'DOMSVGNumberList.h'
    854 },
    855 
    856 'SVGPoint': {
    857     'nativeType': 'mozilla::dom::DOMSVGPoint',
    858     'headerFile': 'DOMSVGPoint.h'
    859 },
    860 
    861 'SVGPointList': {
    862     'nativeType': 'mozilla::dom::DOMSVGPointList',
    863     'headerFile': 'DOMSVGPointList.h'
    864 },
    865 
    866 'SVGPreserveAspectRatio': {
    867     'nativeType': 'mozilla::dom::DOMSVGPreserveAspectRatio',
    868     'headerFile': 'SVGPreserveAspectRatio.h'
    869 },
    870 
    871 'SVGRadialGradientElement': {
    872     'headerFile': 'mozilla/dom/SVGGradientElement.h',
    873 },
    874 
    875 'SVGStringList': {
    876     'nativeType': 'mozilla::dom::DOMSVGStringList',
    877     'headerFile': 'DOMSVGStringList.h',
    878 },
    879 
    880 'SVGTransform': {
    881     'nativeType': 'mozilla::dom::DOMSVGTransform',
    882     'headerFile': 'DOMSVGTransform.h',
    883 },
    884 
    885 'SVGTransformList': {
    886     'nativeType': 'mozilla::dom::DOMSVGTransformList',
    887     'headerFile': 'DOMSVGTransformList.h'
    888 },
    889 
    890 'SVGUnitTypes' : {
    891     # Maybe should be a namespace.
    892     'concrete': False,
    893 },
    894 
    895 'SyncReadFile': {
    896     'nativeType': 'mozilla::SyncReadFile',
    897     'headerFile': 'mozilla/IOUtils.h',
    898 },
    899 
    900 'Text': {
    901     # Total hack to allow binding code to realize that nsTextNode can
    902     # in fact be cast to Text.
    903     'headerFile': 'nsTextNode.h',
    904 },
    905 
    906 'TextDecoder': {
    907     'wrapperCache': False
    908 },
    909 
    910 'TextEncoder': {
    911     'wrapperCache': False
    912 },
    913 
    914 'TextMetrics': {
    915     'wrapperCache': False
    916 },
    917 
    918 'TouchList': {
    919     'headerFile': 'mozilla/dom/TouchEvent.h',
    920 },
    921 
    922 'TreeColumn': {
    923     'nativeType': 'nsTreeColumn',
    924     'headerFile': 'nsTreeColumns.h',
    925 },
    926 
    927 'TreeColumns': {
    928     'nativeType': 'nsTreeColumns',
    929 },
    930 
    931 'TreeContentView': {
    932     'nativeType': 'nsTreeContentView',
    933 },
    934 
    935 'TreeWalker': {
    936     'wrapperCache': False,
    937 },
    938 
    939 'TrustedHTML': {
    940     'wrapperCache': False,
    941 },
    942 
    943 'TrustedScript': {
    944     'wrapperCache': False,
    945 },
    946 
    947 'TrustedScriptURL': {
    948     'wrapperCache': False,
    949 },
    950 
    951 'TrustedTypePolicyFactory': {
    952     'implicitJSContext': ['createPolicy'],
    953 },
    954 
    955 'UserInteraction': {
    956     'nativeType': 'mozilla::telemetry::UserInteractionStopwatch',
    957     'headerFile': 'mozilla/telemetry/Stopwatch.h',
    958 },
    959 
    960 'VisualViewport': {
    961     'nativeType': 'mozilla::dom::VisualViewport',
    962 },
    963 
    964 'VTTCue': {
    965     'nativeType': 'mozilla::dom::TextTrackCue'
    966 },
    967 
    968 'VTTRegion': {
    969   'nativeType': 'mozilla::dom::TextTrackRegion',
    970 },
    971 
    972 'WakeLock': {
    973     'nativeType': 'mozilla::dom::WakeLockJS'
    974 },
    975 
    976 'WebExtensionContentScript': {
    977     'nativeType': 'mozilla::extensions::WebExtensionContentScript',
    978 },
    979 
    980 'WebExtensionPolicy': {
    981     'nativeType': 'mozilla::extensions::WebExtensionPolicy',
    982 },
    983 
    984 'WindowClient': {
    985     'nativeType': 'mozilla::dom::Client',
    986 },
    987 
    988 'WindowGlobalChild': {
    989     'implicitJSContext': ['getActor'],
    990 },
    991 
    992 'WindowGlobalParent': {
    993     'implicitJSContext': ['getActor'],
    994 },
    995 
    996 'WebGLActiveInfo': {
    997     'nativeType': 'mozilla::WebGLActiveInfoJS',
    998     'headerFile': 'ClientWebGLContext.h',
    999     'wrapperCache': False
   1000 },
   1001 
   1002 'WebGLBuffer': {
   1003     'nativeType': 'mozilla::WebGLBufferJS',
   1004     'headerFile': 'ClientWebGLContext.h'
   1005 },
   1006 
   1007 'EXT_float_blend': {
   1008     'nativeType': 'mozilla::ClientWebGLExtensionFloatBlend',
   1009     'headerFile': 'ClientWebGLExtensions.h'
   1010 },
   1011 
   1012 'EXT_texture_compression_bptc': {
   1013     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureBPTC',
   1014     'headerFile': 'ClientWebGLExtensions.h'
   1015 },
   1016 
   1017 'EXT_texture_compression_rgtc': {
   1018     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureRGTC',
   1019     'headerFile': 'ClientWebGLExtensions.h'
   1020 },
   1021 
   1022 'EXT_texture_norm16': {
   1023     'nativeType': 'mozilla::ClientWebGLExtensionTextureNorm16',
   1024     'headerFile': 'ClientWebGLExtensions.h'
   1025 },
   1026 
   1027 'OES_fbo_render_mipmap': {
   1028     'nativeType': 'mozilla::ClientWebGLExtensionFBORenderMipmap',
   1029     'headerFile': 'ClientWebGLExtensions.h'
   1030 },
   1031 
   1032 'OVR_multiview2': {
   1033     'nativeType': 'mozilla::ClientWebGLExtensionMultiview',
   1034     'headerFile': 'ClientWebGLExtensions.h'
   1035 },
   1036 
   1037 'WEBGL_compressed_texture_astc': {
   1038     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureASTC',
   1039     'headerFile': 'ClientWebGLExtensions.h'
   1040 },
   1041 
   1042 'WEBGL_compressed_texture_etc': {
   1043     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureES3',
   1044     'headerFile': 'ClientWebGLExtensions.h'
   1045 },
   1046 
   1047 'WEBGL_compressed_texture_etc1': {
   1048     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureETC1',
   1049     'headerFile': 'ClientWebGLExtensions.h'
   1050 },
   1051 
   1052 'WEBGL_compressed_texture_pvrtc': {
   1053     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTexturePVRTC',
   1054     'headerFile': 'ClientWebGLExtensions.h'
   1055 },
   1056 
   1057 'WEBGL_compressed_texture_s3tc': {
   1058     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureS3TC',
   1059     'headerFile': 'ClientWebGLExtensions.h'
   1060 },
   1061 
   1062 'WEBGL_compressed_texture_s3tc_srgb': {
   1063     'nativeType': 'mozilla::ClientWebGLExtensionCompressedTextureS3TC_SRGB',
   1064     'headerFile': 'ClientWebGLExtensions.h'
   1065 },
   1066 
   1067 'WEBGL_depth_texture': {
   1068     'nativeType': 'mozilla::ClientWebGLExtensionDepthTexture',
   1069     'headerFile': 'ClientWebGLExtensions.h'
   1070 },
   1071 
   1072 'WEBGL_debug_renderer_info': {
   1073     'nativeType': 'mozilla::ClientWebGLExtensionDebugRendererInfo',
   1074     'headerFile': 'ClientWebGLExtensions.h'
   1075 },
   1076 
   1077 'WEBGL_debug_shaders': {
   1078     'nativeType': 'mozilla::ClientWebGLExtensionDebugShaders',
   1079     'headerFile': 'ClientWebGLExtensions.h'
   1080 },
   1081 
   1082 'WEBGL_explicit_present': {
   1083     'nativeType': 'mozilla::ClientWebGLExtensionExplicitPresent',
   1084     'headerFile': 'ClientWebGLExtensions.h'
   1085 },
   1086 
   1087 'WEBGL_provoking_vertex': {
   1088     'nativeType': 'mozilla::ClientWebGLExtensionProvokingVertex',
   1089     'headerFile': 'ClientWebGLExtensions.h'
   1090 },
   1091 
   1092 'OES_draw_buffers_indexed': {
   1093     'nativeType': 'mozilla::ClientWebGLExtensionDrawBuffersIndexed',
   1094     'headerFile': 'ClientWebGLExtensions.h'
   1095 },
   1096 
   1097 'OES_element_index_uint': {
   1098     'nativeType': 'mozilla::ClientWebGLExtensionElementIndexUint',
   1099     'headerFile': 'ClientWebGLExtensions.h'
   1100 },
   1101 
   1102 'EXT_frag_depth': {
   1103     'nativeType': 'mozilla::ClientWebGLExtensionFragDepth',
   1104     'headerFile': 'ClientWebGLExtensions.h'
   1105 },
   1106 
   1107 'WEBGL_lose_context': {
   1108     'nativeType': 'mozilla::ClientWebGLExtensionLoseContext',
   1109     'headerFile': 'ClientWebGLExtensions.h'
   1110 },
   1111 
   1112 'EXT_sRGB': {
   1113     'nativeType': 'mozilla::ClientWebGLExtensionSRGB',
   1114     'headerFile': 'ClientWebGLExtensions.h'
   1115 },
   1116 
   1117 'OES_standard_derivatives': {
   1118     'nativeType': 'mozilla::ClientWebGLExtensionStandardDerivatives',
   1119     'headerFile': 'ClientWebGLExtensions.h'
   1120 },
   1121 
   1122 'EXT_shader_texture_lod': {
   1123     'nativeType': 'mozilla::ClientWebGLExtensionShaderTextureLod',
   1124     'headerFile': 'ClientWebGLExtensions.h'
   1125 },
   1126 
   1127 'EXT_texture_filter_anisotropic': {
   1128     'nativeType': 'mozilla::ClientWebGLExtensionTextureFilterAnisotropic',
   1129     'headerFile': 'ClientWebGLExtensions.h'
   1130 },
   1131 
   1132 'OES_texture_float': {
   1133     'nativeType': 'mozilla::ClientWebGLExtensionTextureFloat',
   1134     'headerFile': 'ClientWebGLExtensions.h'
   1135 },
   1136 
   1137 'OES_texture_float_linear': {
   1138     'nativeType': 'mozilla::ClientWebGLExtensionTextureFloatLinear',
   1139     'headerFile': 'ClientWebGLExtensions.h'
   1140 },
   1141 
   1142 'OES_texture_half_float': {
   1143    'nativeType': 'mozilla::ClientWebGLExtensionTextureHalfFloat',
   1144    'headerFile': 'ClientWebGLExtensions.h'
   1145 },
   1146 
   1147 'OES_texture_half_float_linear': {
   1148    'nativeType': 'mozilla::ClientWebGLExtensionTextureHalfFloatLinear',
   1149    'headerFile': 'ClientWebGLExtensions.h'
   1150 },
   1151 
   1152 'WEBGL_color_buffer_float': {
   1153    'nativeType': 'mozilla::ClientWebGLExtensionColorBufferFloat',
   1154    'headerFile': 'ClientWebGLExtensions.h'
   1155 },
   1156 
   1157 'EXT_color_buffer_half_float': {
   1158    'nativeType': 'mozilla::ClientWebGLExtensionColorBufferHalfFloat',
   1159    'headerFile': 'ClientWebGLExtensions.h'
   1160 },
   1161 
   1162 'EXT_color_buffer_float': {
   1163    'nativeType': 'mozilla::ClientWebGLExtensionEXTColorBufferFloat',
   1164    'headerFile': 'ClientWebGLExtensions.h'
   1165 },
   1166 
   1167 'WEBGL_draw_buffers': {
   1168     'nativeType': 'mozilla::ClientWebGLExtensionDrawBuffers',
   1169     'headerFile': 'ClientWebGLExtensions.h'
   1170 },
   1171 
   1172 'OES_vertex_array_object': {
   1173     'nativeType': 'mozilla::ClientWebGLExtensionVertexArray',
   1174     'headerFile': 'ClientWebGLExtensions.h'
   1175 },
   1176 
   1177 'ANGLE_instanced_arrays': {
   1178     'nativeType': 'mozilla::ClientWebGLExtensionInstancedArrays',
   1179     'headerFile': 'ClientWebGLExtensions.h'
   1180 },
   1181 
   1182 'EXT_blend_minmax': {
   1183     'nativeType': 'mozilla::ClientWebGLExtensionBlendMinMax',
   1184     'headerFile': 'ClientWebGLExtensions.h'
   1185 },
   1186 
   1187 'EXT_depth_clamp': {
   1188     'nativeType': 'mozilla::ClientWebGLExtensionDepthClamp',
   1189     'headerFile': 'ClientWebGLExtensions.h'
   1190 },
   1191 
   1192 'EXT_disjoint_timer_query': {
   1193     'nativeType': 'mozilla::ClientWebGLExtensionDisjointTimerQuery',
   1194     'headerFile': 'ClientWebGLExtensions.h'
   1195 },
   1196 
   1197 'MOZ_debug': {
   1198     'nativeType': 'mozilla::ClientWebGLExtensionMOZDebug',
   1199     'headerFile': 'ClientWebGLExtensions.h'
   1200 },
   1201 
   1202 'WebGLFramebuffer': {
   1203     'nativeType': 'mozilla::WebGLFramebufferJS',
   1204     'headerFile': 'ClientWebGLContext.h'
   1205 },
   1206 
   1207 'WebGLProgram': {
   1208     'nativeType': 'mozilla::WebGLProgramJS',
   1209     'headerFile': 'ClientWebGLContext.h'
   1210 },
   1211 
   1212 'WebGLQuery': {
   1213     'nativeType': 'mozilla::WebGLQueryJS',
   1214     'headerFile': 'ClientWebGLContext.h'
   1215 },
   1216 
   1217 'WebGLRenderbuffer': {
   1218     'nativeType': 'mozilla::WebGLRenderbufferJS',
   1219     'headerFile': 'ClientWebGLContext.h'
   1220 },
   1221 
   1222 'WebGLRenderingContext': {
   1223     'nativeType': 'mozilla::ClientWebGLContext',
   1224     'headerFile': 'ClientWebGLContext.h',
   1225 },
   1226 
   1227 'WebGL2RenderingContext': {
   1228     'nativeType': 'mozilla::ClientWebGLContext',
   1229     'headerFile': 'ClientWebGLContext.h',
   1230 },
   1231 
   1232 'WebGLSampler': {
   1233     'nativeType': 'mozilla::WebGLSamplerJS',
   1234     'headerFile': 'ClientWebGLContext.h'
   1235 },
   1236 
   1237 'WebGLShader': {
   1238     'nativeType': 'mozilla::WebGLShaderJS',
   1239     'headerFile': 'ClientWebGLContext.h'
   1240 },
   1241 
   1242 'WebGLShaderPrecisionFormat': {
   1243     'nativeType': 'mozilla::WebGLShaderPrecisionFormatJS',
   1244     'headerFile': 'ClientWebGLContext.h',
   1245     'wrapperCache': False
   1246 },
   1247 
   1248 'WebGLSync': {
   1249     'nativeType': 'mozilla::WebGLSyncJS',
   1250     'headerFile': 'ClientWebGLContext.h'
   1251 },
   1252 
   1253 'WebGLTexture': {
   1254     'nativeType': 'mozilla::WebGLTextureJS',
   1255     'headerFile': 'ClientWebGLContext.h'
   1256 },
   1257 
   1258 'WebGLTransformFeedback': {
   1259     'nativeType': 'mozilla::WebGLTransformFeedbackJS',
   1260     'headerFile': 'ClientWebGLContext.h'
   1261 },
   1262 
   1263 'WebGLUniformLocation': {
   1264     'nativeType': 'mozilla::WebGLUniformLocationJS',
   1265     'headerFile': 'ClientWebGLContext.h'
   1266 },
   1267 
   1268 'WebGLVertexArrayObject': {
   1269     'nativeType': 'mozilla::WebGLVertexArrayJS',
   1270     'headerFile': 'ClientWebGLContext.h'
   1271 },
   1272 
   1273 # WebGPU
   1274 
   1275 'GPU': {
   1276     'nativeType': 'mozilla::webgpu::Instance',
   1277 },
   1278 'GPUAdapter': {
   1279     'nativeType': 'mozilla::webgpu::Adapter',
   1280 },
   1281 'GPUAdapterInfo': {
   1282     'nativeType': 'mozilla::webgpu::AdapterInfo',
   1283     'headerFile': 'mozilla/webgpu/Adapter.h',
   1284 },
   1285 'GPUBindGroup': {
   1286     'nativeType': 'mozilla::webgpu::BindGroup',
   1287 },
   1288 'GPUBindGroupLayout': {
   1289     'nativeType': 'mozilla::webgpu::BindGroupLayout',
   1290 },
   1291 'GPUBuffer': {
   1292     'nativeType': 'mozilla::webgpu::Buffer',
   1293     'implicitJSContext': [ 'unmap', 'destroy' ],
   1294 },
   1295 'GPUCanvasContext': {
   1296     'nativeType': 'mozilla::webgpu::CanvasContext',
   1297 },
   1298 'GPUCommandBuffer': {
   1299     'nativeType': 'mozilla::webgpu::CommandBuffer',
   1300 },
   1301 'GPUCommandEncoder': {
   1302     'nativeType': 'mozilla::webgpu::CommandEncoder',
   1303 },
   1304 'GPUCompilationInfo': {
   1305     'nativeType': 'mozilla::webgpu::CompilationInfo',
   1306 },
   1307 'GPUCompilationMessage': {
   1308     'nativeType': 'mozilla::webgpu::CompilationMessage',
   1309 },
   1310 'GPUComputePassEncoder': {
   1311     'nativeType': 'mozilla::webgpu::ComputePassEncoder',
   1312 },
   1313 'GPUComputePipeline': {
   1314     'nativeType': 'mozilla::webgpu::ComputePipeline',
   1315 },
   1316 'GPUDevice': {
   1317     'nativeType': 'mozilla::webgpu::Device',
   1318 },
   1319 'GPUDeviceLostInfo': {
   1320     'nativeType': 'mozilla::webgpu::DeviceLostInfo',
   1321 },
   1322 'GPUError': {
   1323     'nativeType': 'mozilla::webgpu::Error',
   1324 },
   1325 'GPUExternalTexture': {
   1326     'nativeType': 'mozilla::webgpu::ExternalTexture',
   1327 },
   1328 'GPUInternalError': {
   1329     'nativeType': 'mozilla::webgpu::InternalError',
   1330 },
   1331 'GPUOutOfMemoryError': {
   1332     'nativeType': 'mozilla::webgpu::OutOfMemoryError',
   1333 },
   1334 'GPUPipelineError': {
   1335     'nativeType': 'mozilla::webgpu::PipelineError',
   1336 },
   1337 'GPUPipelineLayout': {
   1338     'nativeType': 'mozilla::webgpu::PipelineLayout',
   1339 },
   1340 'GPUQuerySet': {
   1341     'nativeType': 'mozilla::webgpu::QuerySet',
   1342 },
   1343 'GPUQueue': {
   1344     'nativeType': 'mozilla::webgpu::Queue',
   1345 },
   1346 'GPURenderBundle': {
   1347     'nativeType': 'mozilla::webgpu::RenderBundle',
   1348 },
   1349 'GPURenderBundleEncoder': {
   1350     'nativeType': 'mozilla::webgpu::RenderBundleEncoder',
   1351 },
   1352 'GPURenderPassEncoder': {
   1353     'nativeType': 'mozilla::webgpu::RenderPassEncoder',
   1354 },
   1355 'GPURenderPipeline': {
   1356     'nativeType': 'mozilla::webgpu::RenderPipeline',
   1357 },
   1358 'GPUSampler': {
   1359     'nativeType': 'mozilla::webgpu::Sampler',
   1360 },
   1361 'GPUShaderModule': {
   1362     'nativeType': 'mozilla::webgpu::ShaderModule',
   1363 },
   1364 'GPUSupportedFeatures': {
   1365     'nativeType': 'mozilla::webgpu::SupportedFeatures',
   1366 },
   1367 'GPUSupportedLimits': {
   1368     'nativeType': 'mozilla::webgpu::SupportedLimits',
   1369 },
   1370 'GPUTexture': {
   1371     'nativeType': 'mozilla::webgpu::Texture',
   1372 },
   1373 'GPUTextureView': {
   1374     'nativeType': 'mozilla::webgpu::TextureView',
   1375 },
   1376 'GPUValidationError': {
   1377     'nativeType': 'mozilla::webgpu::ValidationError',
   1378 },
   1379 
   1380 'GPUBufferUsage': {
   1381     'concrete': False,
   1382 },
   1383 'GPUColorWrite': {
   1384     'concrete': False,
   1385 },
   1386 'GPUMapMode': {
   1387     'concrete': False,
   1388 },
   1389 'GPUShaderStage': {
   1390     'concrete': False,
   1391 },
   1392 'GPUTextureUsage': {
   1393     'concrete': False,
   1394 },
   1395 'WGSLLanguageFeatures': {
   1396     'nativeType': 'mozilla::webgpu::WGSLLanguageFeatures',
   1397     'headerFile': 'mozilla/webgpu/Instance.h',
   1398 },
   1399 
   1400 # Glean
   1401 
   1402 'GleanImpl': {
   1403     'nativeType': 'mozilla::glean::Glean',
   1404     'headerFile': 'mozilla/glean/bindings/Glean.h',
   1405 },
   1406 'GleanCategory': {
   1407     'nativeType': 'mozilla::glean::Category',
   1408     'headerFile': 'mozilla/glean/bindings/Category.h',
   1409 },
   1410 'GleanPingsImpl': {
   1411     'nativeType': 'mozilla::glean::GleanPings',
   1412     'headerFile': 'mozilla/glean/bindings/GleanPings.h',
   1413 },
   1414 'GleanLabeled': {
   1415     'nativeType': 'mozilla::glean::GleanLabeled',
   1416     'headerFile': 'mozilla/glean/bindings/Labeled.h',
   1417 },
   1418 'GleanMetric': {
   1419     'nativeType': 'mozilla::glean::GleanMetric',
   1420     'headerFile': 'mozilla/glean/bindings/GleanMetric.h',
   1421 },
   1422 'GleanBoolean': {
   1423     'nativeType': 'mozilla::glean::GleanBoolean',
   1424     'headerFile': 'mozilla/glean/bindings/Boolean.h',
   1425 },
   1426 'GleanCounter': {
   1427     'nativeType': 'mozilla::glean::GleanCounter',
   1428     'headerFile': 'mozilla/glean/bindings/Counter.h',
   1429 },
   1430 'GleanCustomDistribution': {
   1431     'nativeType': 'mozilla::glean::GleanCustomDistribution',
   1432     'headerFile': 'mozilla/glean/bindings/CustomDistribution.h',
   1433 },
   1434 'GleanDatetime': {
   1435     'nativeType': 'mozilla::glean::GleanDatetime',
   1436     'headerFile': 'mozilla/glean/bindings/Datetime.h',
   1437 },
   1438 'GleanString': {
   1439     'nativeType': 'mozilla::glean::GleanString',
   1440     'headerFile': 'mozilla/glean/bindings/String.h',
   1441 },
   1442 'GleanStringList': {
   1443     'nativeType': 'mozilla::glean::GleanStringList',
   1444     'headerFile': 'mozilla/glean/bindings/StringList.h',
   1445 },
   1446 'GleanTimespan': {
   1447     'nativeType': 'mozilla::glean::GleanTimespan',
   1448     'headerFile': 'mozilla/glean/bindings/Timespan.h',
   1449 },
   1450 'GleanUuid': {
   1451     'nativeType': 'mozilla::glean::GleanUuid',
   1452     'headerFile': 'mozilla/glean/bindings/Uuid.h',
   1453 },
   1454 'GleanEvent': {
   1455     'nativeType': 'mozilla::glean::GleanEvent',
   1456     'headerFile': 'mozilla/glean/bindings/Event.h',
   1457 },
   1458 'GleanQuantity': {
   1459     'nativeType': 'mozilla::glean::GleanQuantity',
   1460     'headerFile': 'mozilla/glean/bindings/Quantity.h',
   1461 },
   1462 'GleanUrl': {
   1463     'nativeType': 'mozilla::glean::GleanUrl',
   1464     'headerFile': 'mozilla/glean/bindings/Url.h',
   1465 },
   1466 'GleanTimingDistribution': {
   1467     'nativeType': 'mozilla::glean::GleanTimingDistribution',
   1468     'headerFile': 'mozilla/glean/bindings/TimingDistribution.h',
   1469 },
   1470 'GleanMemoryDistribution': {
   1471     'nativeType': 'mozilla::glean::GleanMemoryDistribution',
   1472     'headerFile': 'mozilla/glean/bindings/MemoryDistribution.h',
   1473 },
   1474 'GleanNumerator': {
   1475     'nativeType': 'mozilla::glean::GleanNumerator',
   1476     'headerFile': 'mozilla/glean/bindings/Numerator.h',
   1477 },
   1478 'GleanDenominator': {
   1479     'nativeType': 'mozilla::glean::GleanDenominator',
   1480     'headerFile': 'mozilla/glean/bindings/Denominator.h',
   1481 },
   1482 'GleanRate': {
   1483     'nativeType': 'mozilla::glean::GleanRate',
   1484     'headerFile': 'mozilla/glean/bindings/Rate.h',
   1485 },
   1486 'GleanText': {
   1487     'nativeType': 'mozilla::glean::GleanText',
   1488     'headerFile': 'mozilla/glean/bindings/Text.h',
   1489 },
   1490 'GleanObject': {
   1491     'nativeType': 'mozilla::glean::GleanObject',
   1492     'headerFile': 'mozilla/glean/bindings/Object.h',
   1493 },
   1494 'GleanDualLabeledCounter': {
   1495     'nativeType': 'mozilla::glean::GleanDualLabeledCounter',
   1496     'headerFile': 'mozilla/glean/bindings/DualLabeledCounter.h',
   1497 },
   1498 
   1499 'Window': {
   1500     'nativeType': 'nsGlobalWindowInner',
   1501     'headerFile': 'nsGlobalWindowInner.h',
   1502     'implicitJSContext': [
   1503         'requestIdleCallback', 'indexedDB'
   1504     ],
   1505 },
   1506 
   1507 'WindowContext': {
   1508     'concrete': True
   1509 },
   1510 
   1511 'WindowProxy': {
   1512     'nativeType': 'mozilla::dom::WindowProxyHolder',
   1513     'headerFile': 'mozilla/dom/WindowProxyHolder.h',
   1514     'concrete': False
   1515 },
   1516 
   1517 'WindowRoot': {
   1518     'nativeType': 'nsWindowRoot'
   1519 },
   1520 
   1521 'WorkerDebuggerGlobalScope': {
   1522     'headerFile': 'mozilla/dom/WorkerScope.h',
   1523     'implicitJSContext': [
   1524         'dump', 'clearConsoleEvents', 'reportError', 'setConsoleEventHandler',
   1525     ],
   1526 },
   1527 
   1528 'WorkerGlobalScope': {
   1529     'headerFile': 'mozilla/dom/WorkerScope.h',
   1530     'implicitJSContext': [ 'importScripts', 'indexedDB' ],
   1531 },
   1532 
   1533 'Worklet': {
   1534     # Paint worklets just use the Worklet interface.
   1535     'concrete': True,
   1536     'implicitJSContext': [ 'addModule' ],
   1537 },
   1538 
   1539 # Bug 1734174: We should validate ReadableStream usage of implicitJSContext.
   1540 'WritableStream': {
   1541     'implicitJSContext': ['close'],
   1542 },
   1543 
   1544 'WritableStreamDefaultWriter': {
   1545     'implicitJSContext': ['close', 'releaseLock'],
   1546 },
   1547 
   1548 'XMLSerializer': {
   1549     'nativeType': 'nsDOMSerializer',
   1550     'wrapperCache': False
   1551 },
   1552 
   1553 'XPathEvaluator': {
   1554     'wrapperCache': False,
   1555 },
   1556 
   1557 'XPathExpression': {
   1558     'wrapperCache': False,
   1559 },
   1560 
   1561 'XRPose': {
   1562    'concrete': True,
   1563 },
   1564 
   1565 'XRReferenceSpace': {
   1566     'concrete': True,
   1567 },
   1568 
   1569 'XRSpace': {
   1570     'concrete': True,
   1571 },
   1572 
   1573 'XSLTProcessor': {
   1574     'nativeType': 'txMozillaXSLTProcessor',
   1575 },
   1576 
   1577 'XULElement': {
   1578     'nativeType': 'nsXULElement',
   1579 },
   1580 
   1581 # WebExtension API
   1582 
   1583 'ExtensionBrowser': {
   1584     'headerFile': 'mozilla/extensions/ExtensionBrowser.h',
   1585     'nativeType': 'mozilla::extensions::ExtensionBrowser',
   1586 },
   1587 
   1588 'ExtensionMockAPI': {
   1589     'headerFile': 'mozilla/extensions/ExtensionMockAPI.h',
   1590     'nativeType': 'mozilla::extensions::ExtensionMockAPI',
   1591 },
   1592 
   1593 'ExtensionBrowserSettings': {
   1594     'headerFile': 'mozilla/extensions/ExtensionBrowserSettings.h',
   1595     'nativeType': 'mozilla::extensions::ExtensionBrowserSettings',
   1596 },
   1597 
   1598 'ExtensionBrowserSettingsColorManagement': {
   1599     'headerFile': 'mozilla/extensions/ExtensionBrowserSettingsColorManagement.h',
   1600     'nativeType': 'mozilla::extensions::ExtensionBrowserSettingsColorManagement',
   1601 },
   1602 
   1603 'ExtensionDns': {
   1604     'headerFile': 'mozilla/extensions/ExtensionDns.h',
   1605     'nativeType': 'mozilla::extensions::ExtensionDns',
   1606 },
   1607 
   1608 'ExtensionEventManager': {
   1609     'headerFile': 'mozilla/extensions/ExtensionEventManager.h',
   1610     'nativeType': 'mozilla::extensions::ExtensionEventManager',
   1611 },
   1612 
   1613 'ExtensionPort': {
   1614     'headerFile': 'mozilla/extensions/ExtensionPort.h',
   1615     'nativeType': 'mozilla::extensions::ExtensionPort',
   1616 },
   1617 
   1618 'ExtensionProxy': {
   1619     'headerFile': 'mozilla/extensions/ExtensionProxy.h',
   1620     'nativeType': 'mozilla::extensions::ExtensionProxy',
   1621 },
   1622 
   1623 'ExtensionRuntime': {
   1624     'headerFile': 'mozilla/extensions/ExtensionRuntime.h',
   1625     'nativeType': 'mozilla::extensions::ExtensionRuntime',
   1626 },
   1627 
   1628 'ExtensionScripting': {
   1629     'headerFile': 'mozilla/extensions/ExtensionScripting.h',
   1630     'nativeType': 'mozilla::extensions::ExtensionScripting',
   1631 },
   1632 
   1633 'ExtensionSetting': {
   1634     'headerFile': 'mozilla/extensions/ExtensionSetting.h',
   1635     'nativeType': 'mozilla::extensions::ExtensionSetting',
   1636 },
   1637 
   1638 'ExtensionTest': {
   1639     'headerFile': 'mozilla/extensions/ExtensionTest.h',
   1640     'nativeType': 'mozilla::extensions::ExtensionTest',
   1641 },
   1642 
   1643 'ExtensionAlarms': {
   1644     'headerFile': 'mozilla/extensions/ExtensionAlarms.h',
   1645     'nativeType': 'mozilla::extensions::ExtensionAlarms',
   1646 },
   1647 
   1648 }
   1649 
   1650 if buildconfig.substs.get("MOZ_WEBRTC", False):
   1651     DOMInterfaces.update({
   1652 
   1653     'PeerConnectionImpl': {
   1654         'nativeType': 'mozilla::PeerConnectionImpl',
   1655         'headerFile': 'PeerConnectionImpl.h',
   1656     },
   1657 
   1658     'WebrtcGlobalInformation': {
   1659         'headerFile': 'WebrtcGlobalInformation.h',
   1660     },
   1661 
   1662     })
   1663 
   1664 ####################################
   1665 # Test Interfaces of various sorts #
   1666 ####################################
   1667 
   1668 if buildconfig.substs.get("ENABLE_TESTS", False):
   1669     DOMInterfaces.update({
   1670 
   1671     'OnlyForUseInConstructor' : {
   1672         'headerFile': 'TestBindingHeader.h',
   1673         'register': False,
   1674     },
   1675 
   1676     'TestAttributesOnTypes' : {
   1677         'headerFile': 'TestBindingHeader.h',
   1678         'register': False,
   1679     },
   1680 
   1681     'TestCEReactionsInterface' : {
   1682         'headerFile': 'TestBindingHeader.h',
   1683         'register': False,
   1684     },
   1685 
   1686     'TestChildInterface' : {
   1687         'headerFile': 'TestBindingHeader.h',
   1688         'register': False,
   1689     },
   1690 
   1691     'TestCImplementedInterface' : {
   1692         'headerFile': 'TestCImplementedInterface.h',
   1693         'register': False,
   1694     },
   1695 
   1696     'TestCImplementedInterface2' : {
   1697         'headerFile': 'TestCImplementedInterface.h',
   1698         'register': False,
   1699     },
   1700 
   1701     'TestConstructorForFuncInterface' : {
   1702         'headerFile': 'TestBindingHeader.h',
   1703         'register': False,
   1704     },
   1705 
   1706     'TestConstructorForPrefInterface' : {
   1707         'headerFile': 'TestBindingHeader.h',
   1708         'register': False,
   1709     },
   1710 
   1711     'TestConstructorForSCInterface' : {
   1712         'headerFile': 'TestBindingHeader.h',
   1713         'register': False,
   1714     },
   1715 
   1716     'TestCppKeywordNamedMethodsInterface' : {
   1717         'headerFile': 'TestBindingHeader.h',
   1718         'register': False,
   1719     },
   1720 
   1721     'TestDeprecatedInterface' : {
   1722         # Keep this in sync with TestExampleInterface
   1723         'headerFile': 'TestBindingHeader.h',
   1724         'register': False,
   1725     },
   1726 
   1727     'TestExampleInterface' : {
   1728         # Keep this in sync with TestInterface
   1729         'headerFile': 'TestExampleInterface-example.h',
   1730         'register': False,
   1731     },
   1732 
   1733     'TestExampleProxyInterface' : {
   1734         'headerFile': 'TestExampleProxyInterface-example.h',
   1735         'register': False,
   1736     },
   1737 
   1738     'TestExampleThrowingConstructorInterface' : {
   1739         'headerFile': 'TestExampleThrowingConstructorInterface-example.h',
   1740         'register': False,
   1741     },
   1742 
   1743     'TestExampleWorkerInterface' : {
   1744         'headerFile': 'TestExampleWorkerInterface-example.h',
   1745         'register': False,
   1746     },
   1747 
   1748     'TestExternalInterface' : {
   1749         'nativeType': 'mozilla::dom::TestExternalInterface',
   1750         'headerFile': 'TestBindingHeader.h',
   1751         'register': False,
   1752     },
   1753 
   1754     'TestFuncConstructorForDifferentFuncInterface' : {
   1755         'headerFile': 'TestBindingHeader.h',
   1756         'register': False,
   1757     },
   1758 
   1759     'TestFuncConstructorForInterface' : {
   1760         'headerFile': 'TestBindingHeader.h',
   1761         'register': False,
   1762     },
   1763 
   1764     'TestHTMLConstructorInterface' : {
   1765         'headerFile': 'TestBindingHeader.h',
   1766         'register': False,
   1767     },
   1768 
   1769     'TestIndexedAndNamedGetterInterface' : {
   1770         'headerFile': 'TestBindingHeader.h',
   1771         'register': False,
   1772     },
   1773 
   1774     'TestIndexedAndNamedGetterAndSetterInterface' : {
   1775         'headerFile': 'TestBindingHeader.h',
   1776         'register': False,
   1777     },
   1778 
   1779     'TestIndexedAndNamedSetterInterface' : {
   1780         'headerFile': 'TestBindingHeader.h',
   1781         'register': False,
   1782     },
   1783 
   1784     'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
   1785         'headerFile': 'TestBindingHeader.h',
   1786         'register': False,
   1787     },
   1788 
   1789     'TestIndexedGetterInterface' : {
   1790         'headerFile': 'TestBindingHeader.h',
   1791         'register': False,
   1792     },
   1793 
   1794     'TestIndexedSetterInterface' : {
   1795         'headerFile': 'TestBindingHeader.h',
   1796         'register': False,
   1797     },
   1798 
   1799     'TestInterface' : {
   1800         # Keep this in sync with TestExampleInterface
   1801         'headerFile': 'TestBindingHeader.h',
   1802         'register': False,
   1803     },
   1804 
   1805     'TestInterfaceWithPromiseConstructorArg' : {
   1806         'headerFile': 'TestBindingHeader.h',
   1807         'register': False,
   1808     },
   1809 
   1810     'TestJSImplInterface' : {
   1811         # Keep this in sync with TestExampleInterface
   1812         'headerFile': 'TestJSImplGenBinding.h',
   1813         'register': False,
   1814     },
   1815 
   1816     'TestJSImplInterface2' : {
   1817         'headerFile': 'TestJSImplGenBinding.h',
   1818         'register': False,
   1819     },
   1820 
   1821     'TestJSImplInterface3' : {
   1822         'headerFile': 'TestJSImplGenBinding.h',
   1823         'register': False,
   1824     },
   1825 
   1826     'TestJSImplInterface4' : {
   1827         'headerFile': 'TestJSImplGenBinding.h',
   1828         'register': False,
   1829     },
   1830 
   1831     'TestJSImplInterface5' : {
   1832         'headerFile': 'TestJSImplGenBinding.h',
   1833         'register': False,
   1834     },
   1835 
   1836     'TestJSImplInterface6' : {
   1837         'headerFile': 'TestJSImplGenBinding.h',
   1838         'register': False,
   1839     },
   1840 
   1841     'TestLegacyFactoryFunctionInterface' : {
   1842         'headerFile': 'TestBindingHeader.h',
   1843         'register': False,
   1844     },
   1845 
   1846     'TestLegacyFactoryFunctionInterface2' : {
   1847         'headerFile': 'TestBindingHeader.h',
   1848         'register': False,
   1849     },
   1850 
   1851     'TestNamedDeleterInterface' : {
   1852         'headerFile': 'TestBindingHeader.h',
   1853         'register': False,
   1854     },
   1855 
   1856     'TestNamedDeleterWithRetvalInterface' : {
   1857         'headerFile': 'TestBindingHeader.h',
   1858         'register': False,
   1859     },
   1860 
   1861     'TestNamedGetterInterface' : {
   1862         'headerFile': 'TestBindingHeader.h',
   1863         'register': False,
   1864     },
   1865 
   1866     'TestNamedSetterInterface' : {
   1867         'headerFile': 'TestBindingHeader.h',
   1868         'register': False,
   1869     },
   1870 
   1871     'TestNamespace' : {
   1872         'headerFile': 'TestBindingHeader.h',
   1873         'register': False,
   1874     },
   1875 
   1876     'TestNonWrapperCacheInterface' : {
   1877         'headerFile': 'TestBindingHeader.h',
   1878         'register': False,
   1879         'wrapperCache': False,
   1880     },
   1881 
   1882     'TestParentInterface' : {
   1883         'headerFile': 'TestBindingHeader.h',
   1884         'register': False,
   1885     },
   1886 
   1887     'TestPrefChromeOnlySCFuncConstructorForInterface' : {
   1888         'headerFile': 'TestBindingHeader.h',
   1889         'register': False,
   1890     },
   1891 
   1892     'TestPrefConstructorForDifferentPrefInterface' : {
   1893         'headerFile': 'TestBindingHeader.h',
   1894         'register': False,
   1895     },
   1896 
   1897     'TestPrefConstructorForInterface' : {
   1898         'headerFile': 'TestBindingHeader.h',
   1899         'register': False,
   1900     },
   1901 
   1902     'TestProtoObjectHackedNamespace' : {
   1903         'headerFile': 'TestBindingHeader.h',
   1904         'register': False,
   1905     },
   1906 
   1907     'TestRenamedInterface' : {
   1908         'headerFile': 'TestBindingHeader.h',
   1909         'register': False,
   1910         'nativeType': 'nsRenamedInterface'
   1911     },
   1912 
   1913     'TestRenamedNamespace' : {
   1914         'headerFile': 'TestBindingHeader.h',
   1915         'register': False,
   1916     },
   1917 
   1918     'TestSCConstructorForInterface' : {
   1919         'headerFile': 'TestBindingHeader.h',
   1920         'register': False,
   1921     },
   1922 
   1923     'TestSecureContextInterface' : {
   1924         # Keep this in sync with TestExampleInterface
   1925         'headerFile': 'TestBindingHeader.h',
   1926         'register': False,
   1927     },
   1928 
   1929     'TestThrowingConstructorInterface' : {
   1930         'headerFile': 'TestBindingHeader.h',
   1931         'register': False,
   1932     },
   1933 
   1934     'TestWorkerExposedInterface' : {
   1935         'headerFile': 'TestBindingHeader.h',
   1936         'register': False,
   1937     },
   1938 
   1939     'TestCallbackDictUnionOverload' : {
   1940         'headerFile': 'TestBindingHeader.h',
   1941         'register': False,
   1942     },
   1943 
   1944     })
   1945 
   1946     if buildconfig.substs.get("MOZ_DEBUG", False):
   1947         DOMInterfaces.update({
   1948 
   1949         'TestFunctions': {
   1950             'wrapperCache': False,
   1951         },
   1952 
   1953         'TestChromeOnlyInterface': {
   1954             'headerFile': 'TestFunctions.h',
   1955         },
   1956 
   1957         })
   1958 
   1959 
   1960 # These probably won't be converted to use new DOM bindings
   1961 def addExternalIface(iface, nativeType=None, headerFile=None,
   1962                      notflattened=False):
   1963     if iface in DOMInterfaces:
   1964         raise Exception('Interface declared both as WebIDL and External interface')
   1965     domInterface = {
   1966         'concrete': False
   1967     }
   1968     if not nativeType is None:
   1969         domInterface['nativeType'] = nativeType
   1970     if not headerFile is None:
   1971         domInterface['headerFile'] = headerFile
   1972     domInterface['notflattened'] = notflattened
   1973     DOMInterfaces[iface] = domInterface
   1974 
   1975 addExternalIface('Cookie', nativeType='nsICookie',
   1976                  headerFile='nsICookie.h', notflattened=True)
   1977 addExternalIface('ContentSecurityPolicy', nativeType='nsIContentSecurityPolicy',
   1978                  notflattened=True)
   1979 addExternalIface('PolicyContainer', nativeType='nsIPolicyContainer',
   1980                  notflattened=True)
   1981 addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
   1982 addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True)
   1983 addExternalIface('LoadContext', nativeType='nsILoadContext', notflattened=True)
   1984 addExternalIface('LoadInfo', nativeType='nsILoadInfo',
   1985                  headerFile='nsILoadInfo.h', notflattened=True)
   1986 addExternalIface('XULControllers', nativeType='nsIControllers', notflattened=True)
   1987 addExternalIface('MozTreeView', nativeType='nsITreeView',
   1988                   headerFile='nsITreeView.h', notflattened=True)
   1989 addExternalIface('nsIBrowserDOMWindow', nativeType='nsIBrowserDOMWindow',
   1990                  notflattened=True)
   1991 addExternalIface('nsIDOMWindowUtils', nativeType='nsIDOMWindowUtils', notflattened=True)
   1992 addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=True)
   1993 addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True)
   1994 addExternalIface('nsILoadGroup', nativeType='nsILoadGroup',
   1995                  headerFile='nsILoadGroup.h', notflattened=True)
   1996 addExternalIface('nsIMediaDevice', nativeType='nsIMediaDevice',
   1997                  notflattened=True)
   1998 addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings',
   1999                  notflattened=True)
   2000 addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
   2001 addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
   2002 addExternalIface('nsISocketTransport', nativeType='nsISocketTransport',
   2003                  notflattened=True)
   2004 addExternalIface('nsITransportProvider', nativeType='nsITransportProvider')
   2005 addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
   2006                  notflattened=True)
   2007 addExternalIface('nsISupports', nativeType='nsISupports')
   2008 addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
   2009 addExternalIface('nsIDOMProcessChild', nativeType='nsIDOMProcessChild', notflattened=True)
   2010 addExternalIface('nsIDOMProcessParent', nativeType='nsIDOMProcessParent', notflattened=True)
   2011 addExternalIface('nsIContentParentKeepAlive', nativeType='nsIContentParentKeepAlive', notflattened=True)
   2012 addExternalIface('nsIReferrerInfo', nativeType='nsIReferrerInfo', notflattened=True)
   2013 addExternalIface('nsISecureBrowserUI', nativeType='nsISecureBrowserUI', notflattened=True)
   2014 addExternalIface('nsIWebProgress', nativeType='nsIWebProgress', notflattened=True)
   2015 addExternalIface('nsIDOMGeoPosition', nativeType='nsIDOMGeoPosition', notflattened=True)
   2016 addExternalIface('nsIWebNavigation', nativeType='nsIWebNavigation', notflattened=True)
   2017 addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True)
   2018 addExternalIface('nsIWebBrowserPersistDocumentReceiver',
   2019                  nativeType='nsIWebBrowserPersistDocumentReceiver',
   2020                  headerFile='nsIWebBrowserPersistDocument.h',
   2021                  notflattened=True)
   2022 addExternalIface('nsIWebProgressListener', nativeType='nsIWebProgressListener',
   2023                  notflattened=True)
   2024 addExternalIface('OutputStream', nativeType='nsIOutputStream',
   2025                  notflattened=True)
   2026 addExternalIface('Principal', nativeType='nsIPrincipal',
   2027                  headerFile='nsIPrincipal.h', notflattened=True)
   2028 addExternalIface('StackFrame', nativeType='nsIStackFrame',
   2029                  headerFile='nsIException.h', notflattened=True)
   2030 addExternalIface('RemoteTab', nativeType='nsIRemoteTab',
   2031                  notflattened=True)
   2032 addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
   2033                  notflattened=True)
   2034 addExternalIface('XULCommandDispatcher', notflattened=True)
   2035 addExternalIface('nsISHistory', nativeType='nsISHistory', notflattened=True)
   2036 addExternalIface('nsISHEntry', nativeType='nsISHEntry', notflattened=True)
   2037 addExternalIface('ReferrerInfo', nativeType='nsIReferrerInfo')
   2038 addExternalIface('nsIPermissionDelegateHandler',
   2039                  nativeType='nsIPermissionDelegateHandler',
   2040                  notflattened=True)
   2041 addExternalIface('nsIOpenWindowInfo', nativeType='nsIOpenWindowInfo',
   2042                  notflattened=True)
   2043 addExternalIface('nsICookieJarSettings', nativeType='nsICookieJarSettings',
   2044                  notflattened=True)
   2045 addExternalIface('nsIGleanPing', headerFile='mozilla/glean/bindings/Ping.h',
   2046                  nativeType='nsIGleanPing', notflattened=True)
   2047 addExternalIface('nsISessionStoreRestoreData',
   2048                  nativeType='nsISessionStoreRestoreData',
   2049                  headerFile='nsISessionStoreRestoreData.h', notflattened=True)
   2050 addExternalIface('nsIScreen', nativeType='nsIScreen',
   2051                  headerFile='nsIScreen.h', notflattened=True)
   2052 addExternalIface('InputStream',
   2053                  nativeType='nsIInputStream', notflattened=True)
   2054 addExternalIface('nsIRFPTargetSetIDL', nativeType='nsIRFPTargetSetIDL')
   2055 
   2056 # The TemplatedAttributes dictionary has the interface name where the template
   2057 # should be generated as the key. The values are lists of dictionaries, where
   2058 # each dictionary corresponds to one template. The dictionary contains:
   2059 #
   2060 #   template  the template's name
   2061 #   getter    the name for the native getter to call
   2062 #   setter    the name for the native setter to call
   2063 #   argument  a tuple for the additional argument that should be passed to the
   2064 #             native getter and setter, containing the type for the argument
   2065 #             and a name for the argument. The value will be supplied by the
   2066 #             [BindingTemplate] extended attribute.
   2067 #   attrName  a string which in the generated C++ code would yield a
   2068 #             |const char*| that contains the attribute's name
   2069 
   2070 TemplatedAttributes = {
   2071 
   2072 'CSSStyleProperties': [
   2073     {
   2074         'template': 'CSS2Property',
   2075         'getter': 'GetPropertyValue',
   2076         'setter': 'SetPropertyValue',
   2077         'argument': ('NonCustomCSSPropertyId', 'id'),
   2078         'attrName': 'nsCSSProps::PropertyIDLName(id)',
   2079     },
   2080 ],
   2081 
   2082 'CSSPageDescriptors': [
   2083     {
   2084         'template': 'CSSPageDescriptor',
   2085         'getter': 'GetPropertyValue',
   2086         'setter': 'SetPropertyValue',
   2087         'argument': ('NonCustomCSSPropertyId', 'id'),
   2088         'attrName': 'nsCSSProps::PropertyIDLName(id)',
   2089     },
   2090 ],
   2091 
   2092 'CSSPositionTryDescriptors': [
   2093     {
   2094         'template': 'CSSPositionTryDescriptor',
   2095         'getter': 'GetPropertyValue',
   2096         'setter': 'SetPropertyValue',
   2097         'argument': ('NonCustomCSSPropertyId', 'id'),
   2098         'attrName': 'nsCSSProps::PropertyIDLName(id)',
   2099     },
   2100 ],
   2101 
   2102 }