gecko-dev/dom/bindings/Bindings.conf

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

1928 lines
45 KiB
Plaintext
Raw Normal View History

# -*- Mode:Python; tab-width:8; indent-tabs-mode:nil -*- */
# vim: set ts=8 sts=4 et sw=4 tw=80: */
2012-05-21 11:12:37 +00:00
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# DOM Bindings Configuration.
#
# The WebIDL interfaces are defined in dom/webidl. For interfaces requiring
# special handling, there are corresponding entries in the configuration table
# below. The configuration table maps each interface name to a |descriptor|.
#
# Valid fields for all descriptors:
# * nativeType - The native type (concrete class or XPCOM interface) that
# instances of this interface will unwrap to. If not
# specified, defaults to 'nsIDOM' followed by the interface
# name for external interfaces and
# 'mozilla::dom::InterfaceName' for everything else.
# * headerFile - The file in which the nativeType is declared (defaults
# to an educated guess).
# * concrete - Indicates whether there exist JS objects with this interface as
# their primary interface (and hence whose prototype is this
# interface's prototype object). Always False for callback
# interfaces. Defaults to True otherwise.
# * notflattened - The native type does not have nsIClassInfo, so when
# wrapping it the right IID needs to be passed in.
# Only relevant for callback interfaces.
# * register - True if this binding should be registered. Defaults to true.
# * binaryNames - Dict for mapping method and attribute names to different
# names when calling the native methods (defaults to an empty
# dict). The keys are the property names as they appear in the
# .webidl file and the values are the names as they should be
# in the WebIDL.
# * wrapperCache: True if this object is a wrapper cache. Objects that are
# not can only be returned from a limited set of methods,
# cannot be prefable, and must ensure that they disallow
# XPConnect wrapping. Always false for callback interfaces.
# Defaults to true for non-callback descriptors.
#
# The following fields are either a string, an array (defaults to an empty
# array) or a dictionary with three possible keys (all, getterOnly and
# setterOnly) each having such an array as the value
#
# * implicitJSContext - attributes and methods specified in the .webidl file
# that require a JSContext as the first argument
#
# The value for an interface is a dictionary which specifies the
# descriptor to use when generating that interface's binding.
DOMInterfaces = {
'AnonymousContent': {
'wrapperCache': False
},
'ArchiveReader': {
Bug 975696 - Split ArchiveReader and FileHandle implementation into separate dirs. r=bent f=baku --HG-- rename : dom/file/ArchiveEvent.cpp => dom/archivereader/ArchiveEvent.cpp rename : dom/file/ArchiveEvent.h => dom/archivereader/ArchiveEvent.h rename : dom/file/ArchiveReader.cpp => dom/archivereader/ArchiveReader.cpp rename : dom/file/ArchiveReader.h => dom/archivereader/ArchiveReader.h rename : dom/file/ArchiveRequest.cpp => dom/archivereader/ArchiveRequest.cpp rename : dom/file/ArchiveRequest.h => dom/archivereader/ArchiveRequest.h rename : dom/file/ArchiveZipEvent.cpp => dom/archivereader/ArchiveZipEvent.cpp rename : dom/file/ArchiveZipEvent.h => dom/archivereader/ArchiveZipEvent.h rename : dom/file/ArchiveZipFile.cpp => dom/archivereader/ArchiveZipFile.cpp rename : dom/file/ArchiveZipFile.h => dom/archivereader/ArchiveZipFile.h rename : dom/file/test/test_archivereader.html => dom/archivereader/test/test_basic.html rename : dom/file/test/test_archivereader_nonUnicode.html => dom/archivereader/test/test_nonUnicode.html rename : dom/file/test/test_archivereader_zip_in_zip.html => dom/archivereader/test/test_zip_in_zip.html rename : dom/file/test/test_bug_793311.html => dom/base/test/test_bug793311.html rename : dom/file/AsyncHelper.cpp => dom/filehandle/AsyncHelper.cpp rename : dom/file/AsyncHelper.h => dom/filehandle/AsyncHelper.h rename : dom/file/File.cpp => dom/filehandle/File.cpp rename : dom/file/File.h => dom/filehandle/File.h rename : dom/file/FileHandle.cpp => dom/filehandle/FileHandle.cpp rename : dom/file/FileHandle.h => dom/filehandle/FileHandle.h rename : dom/file/FileHelper.cpp => dom/filehandle/FileHelper.cpp rename : dom/file/FileHelper.h => dom/filehandle/FileHelper.h rename : dom/file/FileRequest.cpp => dom/filehandle/FileRequest.cpp rename : dom/file/FileRequest.h => dom/filehandle/FileRequest.h rename : dom/file/FileService.cpp => dom/filehandle/FileService.cpp rename : dom/file/FileService.h => dom/filehandle/FileService.h rename : dom/file/FileStreamWrappers.cpp => dom/filehandle/FileStreamWrappers.cpp rename : dom/file/FileStreamWrappers.h => dom/filehandle/FileStreamWrappers.h rename : dom/file/LockedFile.cpp => dom/filehandle/LockedFile.cpp rename : dom/file/LockedFile.h => dom/filehandle/LockedFile.h rename : dom/file/MemoryStreams.cpp => dom/filehandle/MemoryStreams.cpp rename : dom/file/MemoryStreams.h => dom/filehandle/MemoryStreams.h rename : dom/file/MetadataHelper.cpp => dom/filehandle/MetadataHelper.cpp rename : dom/file/MetadataHelper.h => dom/filehandle/MetadataHelper.h rename : dom/file/moz.build => dom/filehandle/moz.build rename : dom/file/nsIFileStorage.h => dom/filehandle/nsIFileStorage.h rename : dom/file/test/dummy_worker.js => dom/filehandle/test/dummy_worker.js rename : dom/file/test/helpers.js => dom/filehandle/test/helpers.js rename : dom/file/test/mochitest.ini => dom/filehandle/test/mochitest.ini rename : dom/file/test/moz.build => dom/filehandle/test/moz.build rename : dom/file/test/test_append_read_data.html => dom/filehandle/test/test_append_read_data.html rename : dom/file/test/test_getFile.html => dom/filehandle/test/test_getFile.html rename : dom/file/test/test_getFileId.html => dom/filehandle/test/test_getFileId.html rename : dom/file/test/test_location.html => dom/filehandle/test/test_location.html rename : dom/file/test/test_lockedfile_lifetimes.html => dom/filehandle/test/test_lockedfile_lifetimes.html rename : dom/file/test/test_lockedfile_lifetimes_nested.html => dom/filehandle/test/test_lockedfile_lifetimes_nested.html rename : dom/file/test/test_lockedfile_ordering.html => dom/filehandle/test/test_lockedfile_ordering.html rename : dom/file/test/test_overlapping_lockedfiles.html => dom/filehandle/test/test_overlapping_lockedfiles.html rename : dom/file/test/test_progress_events.html => dom/filehandle/test/test_progress_events.html rename : dom/file/test/test_readonly_lockedfiles.html => dom/filehandle/test/test_readonly_lockedfiles.html rename : dom/file/test/test_request_readyState.html => dom/filehandle/test/test_request_readyState.html rename : dom/file/test/test_stream_tracking.html => dom/filehandle/test/test_stream_tracking.html rename : dom/file/test/test_success_events_after_abort.html => dom/filehandle/test/test_success_events_after_abort.html rename : dom/file/test/test_truncate.html => dom/filehandle/test/test_truncate.html rename : dom/file/test/test_workers.html => dom/filehandle/test/test_workers.html rename : dom/file/test/test_write_read_data.html => dom/filehandle/test/test_write_read_data.html
2014-05-07 14:32:12 +00:00
'nativeType': 'mozilla::dom::archivereader::ArchiveReader',
},
'ArchiveRequest': {
Bug 975696 - Split ArchiveReader and FileHandle implementation into separate dirs. r=bent f=baku --HG-- rename : dom/file/ArchiveEvent.cpp => dom/archivereader/ArchiveEvent.cpp rename : dom/file/ArchiveEvent.h => dom/archivereader/ArchiveEvent.h rename : dom/file/ArchiveReader.cpp => dom/archivereader/ArchiveReader.cpp rename : dom/file/ArchiveReader.h => dom/archivereader/ArchiveReader.h rename : dom/file/ArchiveRequest.cpp => dom/archivereader/ArchiveRequest.cpp rename : dom/file/ArchiveRequest.h => dom/archivereader/ArchiveRequest.h rename : dom/file/ArchiveZipEvent.cpp => dom/archivereader/ArchiveZipEvent.cpp rename : dom/file/ArchiveZipEvent.h => dom/archivereader/ArchiveZipEvent.h rename : dom/file/ArchiveZipFile.cpp => dom/archivereader/ArchiveZipFile.cpp rename : dom/file/ArchiveZipFile.h => dom/archivereader/ArchiveZipFile.h rename : dom/file/test/test_archivereader.html => dom/archivereader/test/test_basic.html rename : dom/file/test/test_archivereader_nonUnicode.html => dom/archivereader/test/test_nonUnicode.html rename : dom/file/test/test_archivereader_zip_in_zip.html => dom/archivereader/test/test_zip_in_zip.html rename : dom/file/test/test_bug_793311.html => dom/base/test/test_bug793311.html rename : dom/file/AsyncHelper.cpp => dom/filehandle/AsyncHelper.cpp rename : dom/file/AsyncHelper.h => dom/filehandle/AsyncHelper.h rename : dom/file/File.cpp => dom/filehandle/File.cpp rename : dom/file/File.h => dom/filehandle/File.h rename : dom/file/FileHandle.cpp => dom/filehandle/FileHandle.cpp rename : dom/file/FileHandle.h => dom/filehandle/FileHandle.h rename : dom/file/FileHelper.cpp => dom/filehandle/FileHelper.cpp rename : dom/file/FileHelper.h => dom/filehandle/FileHelper.h rename : dom/file/FileRequest.cpp => dom/filehandle/FileRequest.cpp rename : dom/file/FileRequest.h => dom/filehandle/FileRequest.h rename : dom/file/FileService.cpp => dom/filehandle/FileService.cpp rename : dom/file/FileService.h => dom/filehandle/FileService.h rename : dom/file/FileStreamWrappers.cpp => dom/filehandle/FileStreamWrappers.cpp rename : dom/file/FileStreamWrappers.h => dom/filehandle/FileStreamWrappers.h rename : dom/file/LockedFile.cpp => dom/filehandle/LockedFile.cpp rename : dom/file/LockedFile.h => dom/filehandle/LockedFile.h rename : dom/file/MemoryStreams.cpp => dom/filehandle/MemoryStreams.cpp rename : dom/file/MemoryStreams.h => dom/filehandle/MemoryStreams.h rename : dom/file/MetadataHelper.cpp => dom/filehandle/MetadataHelper.cpp rename : dom/file/MetadataHelper.h => dom/filehandle/MetadataHelper.h rename : dom/file/moz.build => dom/filehandle/moz.build rename : dom/file/nsIFileStorage.h => dom/filehandle/nsIFileStorage.h rename : dom/file/test/dummy_worker.js => dom/filehandle/test/dummy_worker.js rename : dom/file/test/helpers.js => dom/filehandle/test/helpers.js rename : dom/file/test/mochitest.ini => dom/filehandle/test/mochitest.ini rename : dom/file/test/moz.build => dom/filehandle/test/moz.build rename : dom/file/test/test_append_read_data.html => dom/filehandle/test/test_append_read_data.html rename : dom/file/test/test_getFile.html => dom/filehandle/test/test_getFile.html rename : dom/file/test/test_getFileId.html => dom/filehandle/test/test_getFileId.html rename : dom/file/test/test_location.html => dom/filehandle/test/test_location.html rename : dom/file/test/test_lockedfile_lifetimes.html => dom/filehandle/test/test_lockedfile_lifetimes.html rename : dom/file/test/test_lockedfile_lifetimes_nested.html => dom/filehandle/test/test_lockedfile_lifetimes_nested.html rename : dom/file/test/test_lockedfile_ordering.html => dom/filehandle/test/test_lockedfile_ordering.html rename : dom/file/test/test_overlapping_lockedfiles.html => dom/filehandle/test/test_overlapping_lockedfiles.html rename : dom/file/test/test_progress_events.html => dom/filehandle/test/test_progress_events.html rename : dom/file/test/test_readonly_lockedfiles.html => dom/filehandle/test/test_readonly_lockedfiles.html rename : dom/file/test/test_request_readyState.html => dom/filehandle/test/test_request_readyState.html rename : dom/file/test/test_stream_tracking.html => dom/filehandle/test/test_stream_tracking.html rename : dom/file/test/test_success_events_after_abort.html => dom/filehandle/test/test_success_events_after_abort.html rename : dom/file/test/test_truncate.html => dom/filehandle/test/test_truncate.html rename : dom/file/test/test_workers.html => dom/filehandle/test/test_workers.html rename : dom/file/test/test_write_read_data.html => dom/filehandle/test/test_write_read_data.html
2014-05-07 14:32:12 +00:00
'nativeType': 'mozilla::dom::archivereader::ArchiveRequest',
},
'AudioBuffer': {
'implicitJSContext': [ 'copyToChannel' ],
},
'AudioBufferSourceNode': {
'implicitJSContext': [ 'buffer' ],
},
'AudioNode' : {
'binaryNames': {
'channelCountMode': 'channelCountModeValue',
'channelInterpretation': 'channelInterpretationValue',
},
},
'AudioWorklet': {
'nativeType': 'mozilla::dom::Worklet',
},
'AudioWorkletGlobalScope': {
'implicitJSContext': [ 'registerProcessor' ],
},
'BarProp': {
'headerFile': 'mozilla/dom/BarProps.h',
},
'BaseAudioContext': {
'nativeType': 'mozilla::dom::AudioContext',
},
'BatteryManager': {
'nativeType': 'mozilla::dom::battery::BatteryManager',
'headerFile': 'BatteryManager.h'
},
'BrowsingContext': {
'concrete': True,
},
'Cache': {
'implicitJSContext': [ 'add', 'addAll', 'match', 'matchAll', 'put',
'delete', 'keys' ],
'nativeType': 'mozilla::dom::cache::Cache',
},
'CacheStorage': {
'implicitJSContext': [ 'match' ],
'nativeType': 'mozilla::dom::cache::CacheStorage',
},
'CanvasRenderingContext2D': {
'implicitJSContext': [
'createImageData', 'getImageData', 'isPointInPath', 'isPointInStroke'
],
'binaryNames': {
'mozImageSmoothingEnabled': 'imageSmoothingEnabled'
}
},
'CaretPosition' : {
'nativeType': 'nsDOMCaretPosition',
},
'ChannelWrapper': {
'nativeType': 'mozilla::extensions::ChannelWrapper',
},
'Client' : {
'concrete': True,
},
'Clipboard' : {
'implicitJSContext' : ['write', 'writeText', 'read', 'readText'],
},
'console': {
'nativeType': 'mozilla::dom::Console',
},
'ConsoleInstance': {
'implicitJSContext': ['clear', 'count', 'countReset', 'groupEnd', 'time', 'timeEnd'],
},
'ConvolverNode': {
'implicitJSContext': [ 'buffer' ],
},
'Coordinates': {
'headerFile': 'nsGeoPosition.h'
},
'Credential' : {
'concrete': True,
},
'Crypto' : {
'headerFile': 'Crypto.h'
},
'CSS2Properties': {
'nativeType': 'nsDOMCSSDeclaration'
},
'CSSConditionRule': {
'nativeType': 'mozilla::css::ConditionRule',
'headerFile': 'mozilla/css/GroupRule.h',
},
'CSSGroupingRule': {
'nativeType': 'mozilla::css::GroupRule',
},
'CSSLexer': {
'wrapperCache': False
},
'CSSRule': {
'nativeType': 'mozilla::css::Rule'
},
'CSSStyleDeclaration': {
'nativeType': 'nsICSSDeclaration',
# Concrete because of the font-face mess.
'concrete': True,
},
'CSSStyleRule': {
'nativeType': 'mozilla::BindingStyleRule',
},
'CSSStyleSheet': {
'nativeType': 'mozilla::StyleSheet',
'binaryNames': { 'ownerRule': 'DOMOwnerRule' },
},
'CustomElementRegistry': {
'implicitJSContext': ['define'],
},
'DedicatedWorkerGlobalScope': {
'headerFile': 'mozilla/dom/WorkerScope.h',
},
'DeviceAcceleration': {
'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
},
'DeviceRotationRate': {
'headerFile': 'mozilla/dom/DeviceMotionEvent.h',
},
'DominatorTree': {
'nativeType': 'mozilla::devtools::DominatorTree'
},
'DOMException': {
'binaryNames': {
'message': 'messageMoz',
},
'implicitJSContext': [ 'filename', 'lineNumber', 'stack' ],
},
'DOMMatrixReadOnly': {
'headerFile': 'mozilla/dom/DOMMatrix.h',
},
'DOMOverlays': {
'nativeType': 'mozilla::dom::l10n::DOMOverlays',
},
'DOMPointReadOnly': {
'headerFile': 'mozilla/dom/DOMPoint.h',
},
'DOMRectList': {
'headerFile': 'mozilla/dom/DOMRect.h',
},
'DOMRectReadOnly': {
'headerFile': 'mozilla/dom/DOMRect.h',
},
'DOMRequest': {
'implicitJSContext': [ 'then' ],
'concrete': True,
},
'DOMStringMap': {
'nativeType': 'nsDOMStringMap'
},
'DOMTokenList': {
'nativeType': 'nsDOMTokenList',
},
'DynamicsCompressorNode': {
'binaryNames': {
'release': 'getRelease'
},
},
'Element': {
'concrete': True,
},
'Event': {
'implicitJSContext': [ 'preventDefault' ],
},
'EventTarget': {
'jsImplParent': 'mozilla::DOMEventTargetHelper',
},
'Exception': {
'headerFile': 'mozilla/dom/DOMException.h',
'binaryNames': {
'message': 'messageMoz',
},
'implicitJSContext': [ '__stringifier', 'filename', 'lineNumber', 'stack' ],
},
'ExtendableEvent': {
'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
'implicitJSContext': [ 'waitUntil' ],
},
'ExtendableMessageEvent': {
'headerFile': 'mozilla/dom/ServiceWorkerEvents.h',
},
'FetchEvent': {
'headerFile': 'ServiceWorkerEvents.h',
'binaryNames': {
'request': 'request_'
},
'implicitJSContext': [ 'respondWith' ],
},
'FileReader': {
'implicitJSContext': [ 'readAsArrayBuffer' ],
},
'FileReaderSync': {
'wrapperCache': False,
},
'FileSystemEntry': {
'concrete': True,
},
'FontFaceSet': {
'implicitJSContext': [ 'load' ],
},
'FontFaceSetIterator': {
'wrapperCache': False,
},
'FrameLoader': {
'nativeType': 'nsFrameLoader',
},
'FuzzingFunctions': {
# The codegen is dumb, and doesn't understand that this interface is only a
# collection of static methods, so we have this `concrete: False` hack.
'concrete': False,
'headerFile': 'mozilla/dom/FuzzingFunctions.h',
},
'Geolocation': {
'headerFile': 'nsGeolocation.h'
},
'HeapSnapshot': {
'nativeType': 'mozilla::devtools::HeapSnapshot'
},
'History': {
'headerFile': 'nsHistory.h',
'nativeType': 'nsHistory'
},
'HTMLBaseElement': {
'nativeType': 'mozilla::dom::HTMLSharedElement'
},
'HTMLCollection': {
'nativeType': 'nsIHTMLCollection',
# nsContentList.h pulls in nsIHTMLCollection.h
'headerFile': 'nsContentList.h',
'concrete': True,
},
'HTMLDirectoryElement': {
'nativeType': 'mozilla::dom::HTMLSharedElement'
},
'HTMLDListElement': {
'nativeType' : 'mozilla::dom::HTMLSharedListElement'
},
'HTMLDocument': {
'nativeType': 'nsHTMLDocument',
'concrete': True,
},
'HTMLElement': {
'nativeType': 'nsGenericHTMLElement',
},
'HTMLHeadElement': {
'nativeType': 'mozilla::dom::HTMLSharedElement'
},
'HTMLHtmlElement': {
'nativeType': 'mozilla::dom::HTMLSharedElement'
},
'HTMLOListElement': {
'nativeType' : 'mozilla::dom::HTMLSharedListElement'
},
'HTMLParamElement': {
'nativeType': 'mozilla::dom::HTMLSharedElement'
},
'HTMLQuoteElement': {
'nativeType': 'mozilla::dom::HTMLSharedElement'
},
'HTMLTextAreaElement': {
'binaryNames': {
'textLength': 'getTextLength'
}
},
'HTMLUListElement': {
'nativeType' : 'mozilla::dom::HTMLSharedListElement'
},
'IDBCursor': {
'implicitJSContext': [ 'delete' ],
'binaryNames': {
'direction': 'getDirection'
},
'concrete': True,
},
'IDBCursorWithValue': {
'nativeType': 'mozilla::dom::IDBCursor',
Bug 1029209 - Extract IndexedDB FileHandle from core FileHandle implementation (WebIDL changes: merge MutableFile into IDBMutableFile, rename FileHandle to IDBFileHandle, DOMFileMetadataParameters to IDBFileMetadataParameters and FileRequest to IDBFileRequest); r=bent --HG-- rename : dom/filehandle/File.cpp => dom/indexedDB/FileSnapshot.cpp rename : dom/filehandle/File.h => dom/indexedDB/FileSnapshot.h rename : dom/filehandle/test/dummy_worker.js => dom/indexedDB/test/dummy_worker.js rename : dom/filehandle/test/test_append_read_data.html => dom/indexedDB/test/test_filehandle_append_read_data.html rename : dom/filehandle/test/test_compat.html => dom/indexedDB/test/test_filehandle_compat.html rename : dom/filehandle/test/test_getFile.html => dom/indexedDB/test/test_filehandle_getFile.html rename : dom/filehandle/test/test_filehandle_lifetimes.html => dom/indexedDB/test/test_filehandle_lifetimes.html rename : dom/filehandle/test/test_filehandle_lifetimes_nested.html => dom/indexedDB/test/test_filehandle_lifetimes_nested.html rename : dom/filehandle/test/test_location.html => dom/indexedDB/test/test_filehandle_location.html rename : dom/filehandle/test/test_filehandle_ordering.html => dom/indexedDB/test/test_filehandle_ordering.html rename : dom/filehandle/test/test_overlapping_filehandles.html => dom/indexedDB/test/test_filehandle_overlapping.html rename : dom/filehandle/test/test_progress_events.html => dom/indexedDB/test/test_filehandle_progress_events.html rename : dom/filehandle/test/test_readonly_filehandles.html => dom/indexedDB/test/test_filehandle_readonly_exceptions.html rename : dom/filehandle/test/test_request_readyState.html => dom/indexedDB/test/test_filehandle_request_readyState.html rename : dom/filehandle/test/test_stream_tracking.html => dom/indexedDB/test/test_filehandle_stream_tracking.html rename : dom/filehandle/test/test_success_events_after_abort.html => dom/indexedDB/test/test_filehandle_success_events_after_abort.html rename : dom/filehandle/test/test_truncate.html => dom/indexedDB/test/test_filehandle_truncate.html rename : dom/filehandle/test/test_workers.html => dom/indexedDB/test/test_filehandle_workers.html rename : dom/filehandle/test/test_write_read_data.html => dom/indexedDB/test/test_filehandle_write_read_data.html rename : dom/filehandle/test/test_getFileId.html => dom/indexedDB/test/test_getFileId.html rename : dom/webidl/FileHandle.webidl => dom/webidl/IDBFileHandle.webidl rename : dom/webidl/FileRequest.webidl => dom/webidl/IDBFileRequest.webidl
2014-07-17 16:40:54 +00:00
},
'IDBDatabase': {
'implicitJSContext': [ 'transaction', 'createMutableFile',
'mozCreateFileHandle' ],
},
'IDBFactory': {
'implicitJSContext': [ 'open', 'deleteDatabase', 'openForPrincipal',
'deleteForPrincipal' ],
},
'IDBIndex': {
'binaryNames': {
'mozGetAll': 'getAll',
'mozGetAllKeys': 'getAllKeys',
}
},
'IDBKeyRange': {
'wrapperCache': False,
'concrete': True,
},
'IDBLocaleAwareKeyRange': {
'headerFile': 'IDBKeyRange.h',
'wrapperCache': False,
},
'IDBObjectStore': {
'binaryNames': {
'mozGetAll': 'getAll'
},
'implicitJSContext': [ 'clear' ],
},
'IDBOpenDBRequest': {
'headerFile': 'IDBRequest.h'
},
'IDBRequest': {
'concrete': True,
},
'IDBVersionChangeEvent': {
'headerFile': 'IDBEvents.h',
},
'ImageCapture': {
'binaryNames': { 'videoStreamTrack': 'GetVideoStreamTrack' }
},
'ImageData': {
'wrapperCache': False,
},
'InputStream': {
'nativeType': 'nsIInputStream',
'notflattened': True
},
'InspectorFontFace': {
'wrapperCache': False,
},
'IntersectionObserver': {
'nativeType': 'mozilla::dom::DOMIntersectionObserver',
},
'IntersectionObserverEntry': {
'nativeType': 'mozilla::dom::DOMIntersectionObserverEntry',
'headerFile': 'DOMIntersectionObserver.h',
},
Bug 1479964 - Set KeyboardEvent.keyCode and KeyboardEvent.charCode to same value if the event is "keypress" event r=smaug Chrome sets both KeyboardEvent.keyCode and KeyboardEvent.charCode of "keypress" event to same value. On the other hand, our traditional behavior is, sets one of them to 0. Therefore, we need to set keyCode value to charCode value if the keypress event is caused by a non-function key, i.e., it may be a printable key with specific modifier state and/or different keyboard layout for compatibility with Chrome. Similarly, we need to set charCode value to keyCode value if the keypress event is caused by a function key which is not mapped to producing a character. Note that this hack is for compatibility with Chrome. So, for now, it's enough to change the behavior only for "keypress" event handlers in web content. If we completely change the behavior, we need to fix a lot of default handlers and mochitests too. However, it's really difficult because default handlers check whether keypress events are printable or not with following code: > if (event.charCode && > !event.altKey && !event.ctrlKey && !event.metaKey) { or > if (!event.keyCode && > !event.altKey && !event.ctrlKey && !event.metaKey) { So, until we stop dispatching "keypress" events for non-printable keys, we need complicated check in each of them. And also note that this patch changes the behavior of KeyboardEvent::KeyCode() when spoofing is enabled and the instance is initialized by initKeyEvent() or initKeyboardEvent(). That was changed by bug 1222285 unexpectedly and keeping the behavior makes patched code really ugly. Therefore, this takes back the old behavior even if spoofing is enabled. Differential Revision: https://phabricator.services.mozilla.com/D7974 --HG-- extra : moz-landing-system : lando
2018-10-09 04:43:37 +00:00
'KeyboardEvent': {
'binaryNames': { 'constructor': 'ConstructorJS' },
},
'LegacyMozTCPSocket': {
'headerFile': 'TCPSocket.h',
'wrapperCache': False,
},
'MatchGlob': {
'nativeType': 'mozilla::extensions::MatchGlob',
},
'MatchPattern': {
'nativeType': 'mozilla::extensions::MatchPattern',
},
'MatchPatternSet': {
'headerFile': 'mozilla/extensions/MatchPattern.h',
'nativeType': 'mozilla::extensions::MatchPatternSet',
},
'MediaCapabilitiesInfo' : {
'wrapperCache': False,
},
'MediaKeys' : {
'implicitJSContext': [ 'createSession']
},
'MediaStream': {
'headerFile': 'DOMMediaStream.h',
'nativeType': 'mozilla::DOMMediaStream'
},
'MediaStreamAudioDestinationNode': {
'binaryNames': { 'stream': 'DOMStream' }
},
'MediaStreamList': {
'headerFile': 'MediaStreamList.h',
},
'MediaRecorder': {
'headerFile': 'MediaRecorder.h',
},
'MimeType': {
'headerFile' : 'nsMimeTypeArray.h',
'nativeType': 'nsMimeType',
},
'MimeTypeArray': {
'nativeType': 'nsMimeTypeArray',
},
'MozCanvasPrintState': {
'headerFile': 'mozilla/dom/HTMLCanvasElement.h',
'nativeType': 'mozilla::dom::HTMLCanvasPrintState',
},
'MozChannel': {
'nativeType': 'nsIChannel',
'notflattened': True
},
'MozDocumentMatcher': {
'nativeType': 'mozilla::extensions::MozDocumentMatcher',
'headerFile': 'mozilla/extensions/WebExtensionContentScript.h',
},
'MozDocumentObserver': {
'nativeType': 'mozilla::extensions::DocumentObserver',
},
'MozSharedMap': {
'nativeType': 'mozilla::dom::ipc::SharedMap',
'concrete': True,
},
'MozWritableSharedMap': {
'headerFile': 'mozilla/dom/ipc/SharedMap.h',
'nativeType': 'mozilla::dom::ipc::WritableSharedMap',
},
'MozSharedMapChangeEvent': {
'nativeType': 'mozilla::dom::ipc::SharedMapChangeEvent',
},
'MozStorageAsyncStatementParams': {
'headerFile': 'mozilla/storage/mozStorageAsyncStatementParams.h',
'nativeType': 'mozilla::storage::AsyncStatementParams',
},
'MozStorageStatementParams': {
'headerFile': 'mozilla/storage/mozStorageStatementParams.h',
'nativeType': 'mozilla::storage::StatementParams',
},
'MozStorageStatementRow': {
'headerFile': 'mozilla/storage/mozStorageStatementRow.h',
'nativeType': 'mozilla::storage::StatementRow',
},
'MozQueryInterface': {
'wrapperCache': False,
},
'MutationObserver': {
'nativeType': 'nsDOMMutationObserver',
},
'MutationRecord': {
'nativeType': 'nsDOMMutationRecord',
'headerFile': 'nsDOMMutationObserver.h',
},
'NamedNodeMap': {
'nativeType': 'nsDOMAttributeMap',
},
'NetworkInformation': {
'nativeType': 'mozilla::dom::network::Connection',
},
'Node': {
'nativeType': 'nsINode',
},
'NodeIterator': {
'wrapperCache': False,
},
'NodeList': {
'nativeType': 'nsINodeList',
'concrete': True,
},
'NotificationEvent': {
'binaryNames': {
'notification': 'notification_'
}
},
'OfflineAudioContext': {
'nativeType': 'mozilla::dom::AudioContext',
},
'OfflineResourceList': {
'nativeType': 'nsDOMOfflineResourceList',
},
'PaintRequestList': {
'headerFile': 'mozilla/dom/PaintRequest.h',
},
'Path2D': {
'nativeType': 'mozilla::dom::CanvasPath',
'headerFile': 'CanvasPath.h'
},
'PeerConnectionImpl': {
'nativeType': 'mozilla::PeerConnectionImpl',
'headerFile': 'PeerConnectionImpl.h',
'wrapperCache': False
},
'PerformanceResourceTiming' : {
'concrete': True,
},
'PlacesBookmark' : {
'concrete': True,
},
'PlacesEvent' : {
'concrete': True,
},
'TransceiverImpl': {
'nativeType': 'mozilla::TransceiverImpl',
'headerFile': 'TransceiverImpl.h',
'wrapperCache': False
},
'Plugin': {
'headerFile' : 'nsPluginArray.h',
'nativeType': 'nsPluginElement',
},
'PluginArray': {
'nativeType': 'nsPluginArray',
},
'PluginTag': {
'nativeType': 'nsIPluginTag',
},
'Policy': {
'nativeType': 'mozilla::dom::FeaturePolicy',
},
'Position': {
'headerFile': 'nsGeoPosition.h'
},
'PromiseNativeHandler': {
'wrapperCache': False,
},
'PushEvent': {
'headerFile': 'ServiceWorkerEvents.h',
},
'PushMessageData': {
'headerFile': 'ServiceWorkerEvents.h',
},
'Range': {
'nativeType': 'nsRange',
'binaryNames': {
'__stringifier': 'ToString'
}
},
'Request': {
'binaryNames': {
'headers': 'headers_',
'referrerPolicy': 'referrerPolicy_'
},
'implicitJSContext': [ 'arrayBuffer', 'blob', 'formData', 'json', 'text' ],
},
'ResizeObserverEntry': {
'nativeType': 'mozilla::dom::ResizeObserverEntry',
'headerFile': 'mozilla/dom/ResizeObserver.h',
},
'ResizeObserverSize': {
'nativeType': 'mozilla::dom::ResizeObserverSize',
'headerFile': 'mozilla/dom/ResizeObserver.h',
},
'Response': {
'binaryNames': { 'headers': 'headers_' },
'implicitJSContext': [ 'arrayBuffer', 'blob', 'formData', 'json', 'text',
'clone', 'cloneUnfiltered' ],
},
'RTCDataChannel': {
'nativeType': 'nsDOMDataChannel',
},
'Screen': {
'nativeType': 'nsScreen',
},
'ServiceWorkerGlobalScope': {
'headerFile': 'mozilla/dom/WorkerScope.h',
},
'ServiceWorkerRegistration': {
'implicitJSContext': [ 'pushManager' ],
},
'SharedWorkerGlobalScope': {
'headerFile': 'mozilla/dom/WorkerScope.h',
},
'StreamFilter': {
'nativeType': 'mozilla::extensions::StreamFilter',
},
'StreamFilterDataEvent': {
'nativeType': 'mozilla::extensions::StreamFilterDataEvent',
'headerFile': 'mozilla/extensions/StreamFilterEvents.h',
},
'StructuredCloneHolder': {
'nativeType': 'mozilla::dom::StructuredCloneBlob',
'wrapperCache': False,
},
'StyleSheet': {
'nativeType': 'mozilla::StyleSheet',
'headerFile': 'mozilla/StyleSheetInlines.h',
},
'SVGAnimatedAngle': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedAngle',
'headerFile': 'DOMSVGAnimatedAngle.h',
},
'SVGAnimatedBoolean': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedBoolean',
'headerFile': 'DOMSVGAnimatedBoolean.h',
},
'SVGAnimatedEnumeration': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedEnumeration',
'headerFile': 'DOMSVGAnimatedEnumeration.h',
},
'SVGAnimatedInteger': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedInteger',
'headerFile': 'DOMSVGAnimatedInteger.h',
},
'SVGAnimatedPreserveAspectRatio': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedPreserveAspectRatio',
'headerFile': 'SVGAnimatedPreserveAspectRatio.h'
},
'SVGAnimatedLength': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedLength',
'headerFile': 'DOMSVGAnimatedLength.h',
},
'SVGAnimatedLengthList': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedLengthList',
'headerFile': 'DOMSVGAnimatedLengthList.h',
},
'SVGAnimatedNumber': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedNumber',
'headerFile': 'DOMSVGAnimatedNumber.h',
},
'SVGAnimatedNumberList': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedNumberList',
'headerFile': 'DOMSVGAnimatedNumberList.h'
},
'SVGAnimatedString': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedString',
'headerFile': 'DOMSVGAnimatedString.h',
},
'SVGAnimatedTransformList': {
'nativeType': 'mozilla::dom::DOMSVGAnimatedTransformList',
'headerFile': 'DOMSVGAnimatedTransformList.h'
},
'SVGAngle': {
'nativeType': 'mozilla::dom::DOMSVGAngle',
'headerFile': 'DOMSVGAngle.h'
},
'SVGElement': {
'concrete': True,
},
'SVGFEFuncAElement': {
'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
},
'SVGFEFuncBElement': {
'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
},
'SVGFEFuncGElement': {
'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
},
'SVGFEFuncRElement': {
'headerFile': 'mozilla/dom/SVGComponentTransferFunctionElement.h',
},
'SVGLength': {
'nativeType': 'mozilla::dom::DOMSVGLength',
'headerFile': 'DOMSVGLength.h'
},
'SVGLengthList': {
'nativeType': 'mozilla::dom::DOMSVGLengthList',
'headerFile': 'DOMSVGLengthList.h'
},
'SVGLinearGradientElement': {
'headerFile': 'mozilla/dom/SVGGradientElement.h',
},
'SVGNumber': {
'nativeType': 'mozilla::dom::DOMSVGNumber',
'headerFile': 'DOMSVGNumber.h',
},
'SVGNumberList': {
'nativeType': 'mozilla::dom::DOMSVGNumberList',
'headerFile': 'DOMSVGNumberList.h'
},
'SVGPathSeg': {
'nativeType': 'mozilla::DOMSVGPathSeg',
'headerFile': 'DOMSVGPathSeg.h',
},
'SVGPathSegClosePath': {
'nativeType': 'mozilla::DOMSVGPathSegClosePath',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegMovetoAbs': {
'nativeType': 'mozilla::DOMSVGPathSegMovetoAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegMovetoRel': {
'nativeType': 'mozilla::DOMSVGPathSegMovetoRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegLinetoAbs': {
'nativeType': 'mozilla::DOMSVGPathSegLinetoAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegLinetoRel': {
'nativeType': 'mozilla::DOMSVGPathSegLinetoRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoCubicAbs': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoCubicRel': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoQuadraticAbs': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoQuadraticRel': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegArcAbs': {
'nativeType': 'mozilla::DOMSVGPathSegArcAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegArcRel': {
'nativeType': 'mozilla::DOMSVGPathSegArcRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegLinetoHorizontalAbs': {
'nativeType': 'mozilla::DOMSVGPathSegLinetoHorizontalAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegLinetoHorizontalRel': {
'nativeType': 'mozilla::DOMSVGPathSegLinetoHorizontalRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegLinetoVerticalAbs': {
'nativeType': 'mozilla::DOMSVGPathSegLinetoVerticalAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegLinetoVerticalRel': {
'nativeType': 'mozilla::DOMSVGPathSegLinetoVerticalRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoCubicSmoothAbs': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicSmoothAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoCubicSmoothRel': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoCubicSmoothRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoQuadraticSmoothAbs': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticSmoothAbs',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegCurvetoQuadraticSmoothRel': {
'nativeType': 'mozilla::DOMSVGPathSegCurvetoQuadraticSmoothRel',
'headerFile': 'DOMSVGPathSeg.h'
},
'SVGPathSegList': {
'nativeType': 'mozilla::DOMSVGPathSegList',
'headerFile': 'DOMSVGPathSegList.h'
},
'SVGPoint': {
'nativeType': 'mozilla::nsISVGPoint',
'headerFile': 'nsISVGPoint.h'
},
'SVGPointList': {
'nativeType': 'mozilla::DOMSVGPointList',
'headerFile': 'DOMSVGPointList.h'
},
'SVGPreserveAspectRatio': {
'nativeType': 'mozilla::dom::DOMSVGPreserveAspectRatio',
'headerFile': 'SVGPreserveAspectRatio.h'
},
'SVGRadialGradientElement': {
'headerFile': 'mozilla/dom/SVGGradientElement.h',
},
'SVGRect': {
'nativeType': 'mozilla::dom::SVGIRect'
},
'SVGStringList': {
'nativeType': 'mozilla::DOMSVGStringList',
'headerFile': 'DOMSVGStringList.h',
},
'SVGTransform': {
'nativeType': 'mozilla::dom::DOMSVGTransform',
'headerFile': 'DOMSVGTransform.h',
'binaryNames': {
"matrix": "GetMatrix"
}
},
'SVGTransformList': {
'nativeType': 'mozilla::DOMSVGTransformList',
'headerFile': 'DOMSVGTransformList.h'
},
'SVGUnitTypes' : {
# Maybe should be a namespace.
'concrete': False,
},
'SVGZoomAndPan' : {
# Part of a kinda complicated legacy setup for putting some constants on
# both interfaces and this thing, which ideally should be a namespace.
'concrete': False,
},
'TelemetryStopwatch': {
'nativeType': 'mozilla::telemetry::Stopwatch',
},
'TestFunctions': {
'wrapperCache': False
},
'Text': {
# Total hack to allow binding code to realize that nsTextNode can
# in fact be cast to Text.
'headerFile': 'nsTextNode.h',
},
'TextDecoder': {
'wrapperCache': False
},
'TextEncoder': {
'wrapperCache': False
},
'TextMetrics': {
'wrapperCache': False
},
'TCPSocket': {
'implicitJSContext': ['send']
},
'TouchList': {
'headerFile': 'mozilla/dom/TouchEvent.h',
},
'TreeColumn': {
'nativeType': 'nsTreeColumn',
'headerFile': 'nsTreeColumns.h',
},
'TreeColumns': {
'nativeType': 'nsTreeColumns',
},
'TreeContentView': {
'nativeType': 'nsTreeContentView',
},
'TreeWalker': {
'wrapperCache': False,
},
'VisualViewport': {
'nativeType': 'mozilla::dom::VisualViewport',
},
'VTTCue': {
'nativeType': 'mozilla::dom::TextTrackCue'
},
'VTTRegion': {
'nativeType': 'mozilla::dom::TextTrackRegion',
},
'WebAuthentication': {
'implicitJSContext': 'makeCredential',
},
'WebExtensionContentScript': {
'nativeType': 'mozilla::extensions::WebExtensionContentScript',
},
'WebExtensionPolicy': {
'nativeType': 'mozilla::extensions::WebExtensionPolicy',
},
'WindowClient': {
'nativeType': 'mozilla::dom::Client',
},
'WebGLActiveInfo': {
'nativeType': 'mozilla::WebGLActiveInfo',
'headerFile': 'WebGLActiveInfo.h'
},
'WebGLBuffer': {
'nativeType': 'mozilla::WebGLBuffer',
'headerFile': 'WebGLBuffer.h'
},
'EXT_float_blend': {
'nativeType': 'mozilla::WebGLExtensionFloatBlend',
'headerFile': 'WebGLExtensions.h'
},
'EXT_texture_compression_bptc': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureBPTC',
'headerFile': 'WebGLExtensions.h'
},
'EXT_texture_compression_rgtc': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureRGTC',
'headerFile': 'WebGLExtensions.h'
},
'OES_fbo_render_mipmap': {
'nativeType': 'mozilla::WebGLExtensionFBORenderMipmap',
'headerFile': 'WebGLExtensions.h'
},
'OVR_multiview2': {
'nativeType': 'mozilla::WebGLExtensionMultiview',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_compressed_texture_astc': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureASTC',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_compressed_texture_etc': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureES3',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_compressed_texture_etc1': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureETC1',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_compressed_texture_pvrtc': {
'nativeType': 'mozilla::WebGLExtensionCompressedTexturePVRTC',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_compressed_texture_s3tc': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureS3TC',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_compressed_texture_s3tc_srgb': {
'nativeType': 'mozilla::WebGLExtensionCompressedTextureS3TC_SRGB',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_depth_texture': {
'nativeType': 'mozilla::WebGLExtensionDepthTexture',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_debug_renderer_info': {
'nativeType': 'mozilla::WebGLExtensionDebugRendererInfo',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_debug_shaders': {
'nativeType': 'mozilla::WebGLExtensionDebugShaders',
'headerFile': 'WebGLExtensions.h'
},
'OES_element_index_uint': {
'nativeType': 'mozilla::WebGLExtensionElementIndexUint',
'headerFile': 'WebGLExtensions.h'
},
'EXT_frag_depth': {
'nativeType': 'mozilla::WebGLExtensionFragDepth',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_lose_context': {
'nativeType': 'mozilla::WebGLExtensionLoseContext',
'headerFile': 'WebGLExtensions.h'
},
'EXT_sRGB': {
'nativeType': 'mozilla::WebGLExtensionSRGB',
'headerFile': 'WebGLExtensions.h'
},
'OES_standard_derivatives': {
'nativeType': 'mozilla::WebGLExtensionStandardDerivatives',
'headerFile': 'WebGLExtensions.h'
},
'EXT_shader_texture_lod': {
'nativeType': 'mozilla::WebGLExtensionShaderTextureLod',
'headerFile': 'WebGLExtensions.h'
},
'EXT_texture_filter_anisotropic': {
'nativeType': 'mozilla::WebGLExtensionTextureFilterAnisotropic',
'headerFile': 'WebGLExtensions.h'
},
'OES_texture_float': {
'nativeType': 'mozilla::WebGLExtensionTextureFloat',
'headerFile': 'WebGLExtensions.h'
},
'OES_texture_float_linear': {
'nativeType': 'mozilla::WebGLExtensionTextureFloatLinear',
'headerFile': 'WebGLExtensions.h'
},
'OES_texture_half_float': {
'nativeType': 'mozilla::WebGLExtensionTextureHalfFloat',
'headerFile': 'WebGLExtensions.h'
},
'OES_texture_half_float_linear': {
'nativeType': 'mozilla::WebGLExtensionTextureHalfFloatLinear',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_color_buffer_float': {
'nativeType': 'mozilla::WebGLExtensionColorBufferFloat',
'headerFile': 'WebGLExtensions.h'
},
'EXT_color_buffer_half_float': {
'nativeType': 'mozilla::WebGLExtensionColorBufferHalfFloat',
'headerFile': 'WebGLExtensions.h'
},
'EXT_color_buffer_float': {
'nativeType': 'mozilla::WebGLExtensionEXTColorBufferFloat',
'headerFile': 'WebGLExtensions.h'
},
'WEBGL_draw_buffers': {
'nativeType': 'mozilla::WebGLExtensionDrawBuffers',
'headerFile': 'WebGLExtensions.h'
},
'OES_vertex_array_object': {
'nativeType': 'mozilla::WebGLExtensionVertexArray',
'headerFile': 'WebGLExtensions.h'
},
'ANGLE_instanced_arrays': {
'nativeType': 'mozilla::WebGLExtensionInstancedArrays',
'headerFile': 'WebGLExtensions.h'
},
'EXT_blend_minmax': {
'nativeType': 'mozilla::WebGLExtensionBlendMinMax',
'headerFile': 'WebGLExtensions.h'
},
'EXT_disjoint_timer_query': {
'nativeType': 'mozilla::WebGLExtensionDisjointTimerQuery',
'headerFile': 'WebGLExtensions.h'
},
'MOZ_debug': {
'nativeType': 'mozilla::WebGLExtensionMOZDebug',
'headerFile': 'WebGLExtensions.h'
},
'WebGLFramebuffer': {
'nativeType': 'mozilla::WebGLFramebuffer',
'headerFile': 'WebGLFramebuffer.h'
},
'WebGLProgram': {
'nativeType': 'mozilla::WebGLProgram',
'headerFile': 'WebGLProgram.h'
},
'WebGLQuery': {
'nativeType': 'mozilla::WebGLQuery',
'headerFile': 'WebGLQuery.h'
},
'WebGLRenderbuffer': {
'nativeType': 'mozilla::WebGLRenderbuffer',
'headerFile': 'WebGLRenderbuffer.h'
},
'WebGLRenderingContext': {
'nativeType': 'mozilla::WebGLContext',
'headerFile': 'WebGLContext.h',
},
'WebGL2RenderingContext': {
'nativeType': 'mozilla::WebGL2Context',
'headerFile': 'WebGL2Context.h',
},
'WebGLSampler': {
'nativeType': 'mozilla::WebGLSampler',
'headerFile': 'WebGLSampler.h'
},
'WebGLShader': {
'nativeType': 'mozilla::WebGLShader',
'headerFile': 'WebGLShader.h'
},
'WebGLShaderPrecisionFormat': {
'nativeType': 'mozilla::WebGLShaderPrecisionFormat',
'headerFile': 'WebGLShaderPrecisionFormat.h',
'wrapperCache': False
},
'WebGLSync': {
'nativeType': 'mozilla::WebGLSync',
'headerFile': 'WebGLSync.h'
},
'WebGLTexture': {
'nativeType': 'mozilla::WebGLTexture',
'headerFile': 'WebGLTexture.h'
},
'WebGLTransformFeedback': {
'nativeType': 'mozilla::WebGLTransformFeedback',
'headerFile': 'WebGLTransformFeedback.h'
},
'WebGLUniformLocation': {
'nativeType': 'mozilla::WebGLUniformLocation',
'headerFile': 'WebGLUniformLocation.h'
},
'WebGLVertexArrayObject': {
'nativeType': 'mozilla::WebGLVertexArray',
'headerFile': 'WebGLVertexArray.h'
},
# WebGPU
'WebGPU': {
'nativeType': 'mozilla::webgpu::Instance',
},
'WebGPUAdapter': {
'nativeType': 'mozilla::webgpu::Adapter',
},
'WebGPUAttachmentState': {
'nativeType': 'mozilla::webgpu::AttachmentState',
},
'WebGPUBindGroup': {
'nativeType': 'mozilla::webgpu::BindGroup',
},
'WebGPUBindGroupLayout': {
'nativeType': 'mozilla::webgpu::BindGroupLayout',
},
'WebGPUBlendState': {
'nativeType': 'mozilla::webgpu::BlendState',
},
'WebGPUBuffer': {
'nativeType': 'mozilla::webgpu::Buffer',
},
'WebGPUCommandBuffer': {
'nativeType': 'mozilla::webgpu::CommandBuffer',
},
'WebGPUCommandEncoder': {
'nativeType': 'mozilla::webgpu::CommandEncoder',
},
'WebGPUComputePipeline': {
'nativeType': 'mozilla::webgpu::ComputePipeline',
},
'WebGPUDepthStencilState': {
'nativeType': 'mozilla::webgpu::DepthStencilState',
},
'WebGPUDevice': {
'nativeType': 'mozilla::webgpu::Device',
},
'WebGPUFence': {
'nativeType': 'mozilla::webgpu::Fence',
},
'WebGPUInputState': {
'nativeType': 'mozilla::webgpu::InputState',
},
'WebGPULogEntry': {
'nativeType': 'mozilla::webgpu::LogEntry',
},
'WebGPUPipelineLayout': {
'nativeType': 'mozilla::webgpu::PipelineLayout',
},
'WebGPUQueue': {
'nativeType': 'mozilla::webgpu::Queue',
},
'WebGPURenderPipeline': {
'nativeType': 'mozilla::webgpu::RenderPipeline',
},
'WebGPUSampler': {
'nativeType': 'mozilla::webgpu::Sampler',
},
'WebGPUShaderModule': {
'nativeType': 'mozilla::webgpu::ShaderModule',
},
'WebGPUSwapChain': {
'nativeType': 'mozilla::webgpu::SwapChain',
},
'WebGPUTexture': {
'nativeType': 'mozilla::webgpu::Texture',
},
'WebGPUTextureView': {
'nativeType': 'mozilla::webgpu::TextureView',
},
'WebGPUBindingType': {
'concrete': False,
},
'WebGPUBlendFactor': {
'concrete': False,
},
'WebGPUBlendOperation': {
'concrete': False,
},
'WebGPUBufferUsage': {
'concrete': False,
},
'WebGPUColorWriteBits': {
'concrete': False,
},
'WebGPUCompareFunction': {
'concrete': False,
},
'WebGPUFilterMode': {
'concrete': False,
},
'WebGPUIndexFormat': {
'concrete': False,
},
'WebGPUInputStepMode': {
'concrete': False,
},
'WebGPULoadOp': {
'concrete': False,
},
'WebGPUPrimitiveTopology': {
'concrete': False,
},
'WebGPUShaderStage': {
'concrete': False,
},
'WebGPUShaderStageBit': {
'concrete': False,
},
'WebGPUStencilOperation': {
'concrete': False,
},
'WebGPUStoreOp': {
'concrete': False,
},
'WebGPUTextureDimension': {
'concrete': False,
},
'WebGPUTextureFormat': {
'concrete': False,
},
'WebGPUTextureUsage': {
'concrete': False,
},
'WebGPUVertexFormat': {
'concrete': False,
},
# WebRTC
'WebrtcGlobalInformation': {
'nativeType': 'mozilla::dom::WebrtcGlobalInformation',
'headerFile': 'WebrtcGlobalInformation.h',
},
'Window': {
'nativeType': 'nsGlobalWindowInner',
'headerFile': 'nsGlobalWindow.h',
'binaryNames': {
'postMessage': 'postMessageMoz',
},
'implicitJSContext': [
'createImageBitmap',
'requestIdleCallback'
],
},
'WindowProxy': {
'headerFile': 'mozilla/dom/WindowProxyHolder.h',
'concrete': False
},
'WindowRoot': {
'nativeType': 'nsWindowRoot'
},
'WorkerDebuggerGlobalScope': {
'headerFile': 'mozilla/dom/WorkerScope.h',
'implicitJSContext': [
'dump', 'global', 'reportError', 'setConsoleEventHandler',
],
},
'WorkerGlobalScope': {
'headerFile': 'mozilla/dom/WorkerScope.h',
'implicitJSContext': [ 'createImageBitmap', 'importScripts' ],
# Rename a few things so we don't have both classes and methods
# with the same name
'binaryNames': {
'performance': 'getPerformance',
},
},
'Worklet': {
# Paint worklets just use the Worklet interface.
'concrete': True,
},
'XMLHttpRequest': {
'implicitJSContext': [ 'send'],
},
'XMLSerializer': {
'nativeType': 'nsDOMSerializer',
'wrapperCache': False
},
'XPathEvaluator': {
'wrapperCache': False,
'concrete': True,
},
'XPathExpression': {
'wrapperCache': False,
},
'XSLTProcessor': {
'nativeType': 'txMozillaXSLTProcessor',
},
'XULDocument': {
'headerFile': 'XULDocument.h'
},
'XULElement': {
'nativeType': 'nsXULElement',
},
'XULTemplateBuilder': {
'nativeType': 'nsXULTemplateBuilder',
},
'XULTreeBuilder': {
'nativeType': 'nsXULTreeBuilder',
},
####################################
# Test Interfaces of various sorts #
####################################
'TestInterface' : {
# Keep this in sync with TestExampleInterface
'headerFile': 'TestBindingHeader.h',
'register': False,
'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo',
'attributeGetterRenamedFrom': 'attributeGetterRenamedTo',
'attributeRenamedFrom': 'attributeRenamedTo' }
},
'TestParentInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestChildInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestCImplementedInterface' : {
'headerFile': 'TestCImplementedInterface.h',
'register': False,
},
'TestCImplementedInterface2' : {
'headerFile': 'TestCImplementedInterface.h',
'register': False,
},
'TestJSImplInterface' : {
# Keep this in sync with TestExampleInterface
'headerFile': 'TestJSImplGenBinding.h',
'register': False,
'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo',
'attributeGetterRenamedFrom': 'attributeGetterRenamedTo',
'attributeRenamedFrom': 'attributeRenamedTo' }
},
'TestJSImplInterface2' : {
'headerFile': 'TestJSImplGenBinding.h',
'register': False
},
'TestJSImplInterface3' : {
'headerFile': 'TestJSImplGenBinding.h',
'register': False
},
'TestJSImplInterface4' : {
'headerFile': 'TestJSImplGenBinding.h',
'register': False
},
'TestJSImplInterface5' : {
'headerFile': 'TestJSImplGenBinding.h',
'register': False
},
'TestJSImplInterface6' : {
'headerFile': 'TestJSImplGenBinding.h',
'register': False
},
'TestNavigator' : {
'headerFile': 'TestJSImplGenBinding.h',
'register' : False
},
'TestNavigatorWithConstructor' : {
'headerFile': 'TestJSImplGenBinding.h',
'register' : False
},
'TestExternalInterface' : {
'nativeType': 'mozilla::dom::TestExternalInterface',
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestNonWrapperCacheInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
'wrapperCache': False
},
'IndirectlyImplementedInterface': {
'headerFile': 'TestBindingHeader.h',
'register': False,
'castable': False,
},
'OnlyForUseInConstructor' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'ImplementedInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'ImplementedInterfaceParent' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'DiamondImplements' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'DiamondBranch1A' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'DiamondBranch1B' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'DiamondBranch2A' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'DiamondBranch2B' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestIndexedGetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestNamedGetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestIndexedGetterAndSetterAndNamedGetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestIndexedAndNamedGetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestIndexedSetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestNamedSetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestIndexedAndNamedSetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestIndexedAndNamedGetterAndSetterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestRenamedInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
'nativeType': 'nsRenamedInterface'
},
'TestNamedDeleterInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestNamedDeleterWithRetvalInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestCppKeywordNamedMethodsInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestExampleInterface' : {
# Keep this in sync with TestInterface
'headerFile': 'TestExampleInterface-example.h',
'register': False,
'binaryNames': { 'methodRenamedFrom': 'methodRenamedTo',
'attributeGetterRenamedFrom': 'attributeGetterRenamedTo',
'attributeRenamedFrom': 'attributeRenamedTo' }
},
'TestExampleWorkerInterface' : {
'headerFile': 'TestExampleWorkerInterface-example.h',
'register': False,
},
'TestExampleProxyInterface' : {
'headerFile': 'TestExampleProxyInterface-example.h',
'register': False
},
'TestDeprecatedInterface' : {
# Keep this in sync with TestExampleInterface
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestInterfaceWithPromiseConstructorArg' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestSecureContextInterface' : {
# Keep this in sync with TestExampleInterface
'headerFile': 'TestBindingHeader.h',
'register': False
},
'TestNamespace' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestRenamedNamespace' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestProtoObjectHackedNamespace' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestWorkerExposedInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestHTMLConstructorInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestCEReactionsInterface' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
'TestAttributesOnTypes' : {
'headerFile': 'TestBindingHeader.h',
'register': False,
},
}
# These are temporary, until they've been converted to use new DOM bindings
def addExternalIface(iface, nativeType=None, headerFile=None,
notflattened=False):
if iface in DOMInterfaces:
raise Exception('Interface declared both as WebIDL and External interface')
domInterface = {
'concrete': False
}
if not nativeType is None:
domInterface['nativeType'] = nativeType
if not headerFile is None:
domInterface['headerFile'] = headerFile
domInterface['notflattened'] = notflattened
DOMInterfaces[iface] = domInterface
addExternalIface('Cookie', nativeType='nsICookie',
headerFile='nsICookie.h', notflattened=True)
addExternalIface('ContentSecurityPolicy', nativeType='nsIContentSecurityPolicy',
notflattened=True)
addExternalIface('HitRegionOptions', nativeType='nsISupports')
addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
addExternalIface('imgIRequest', nativeType='imgIRequest', notflattened=True)
addExternalIface('LoadContext', nativeType='nsILoadContext', notflattened=True)
addExternalIface('LoadInfo', nativeType='nsILoadInfo',
headerFile='nsILoadInfo.h', notflattened=True)
addExternalIface('MenuBuilder', nativeType='nsIMenuBuilder', notflattened=True)
addExternalIface('XULControllers', nativeType='nsIControllers', notflattened=True)
addExternalIface('MozObserver', nativeType='nsIObserver', notflattened=True)
addExternalIface('MozTreeView', nativeType='nsITreeView',
headerFile='nsITreeView.h', notflattened=True)
addExternalIface('MozWakeLockListener', headerFile='nsIDOMWakeLockListener.h')
addExternalIface('nsIBrowserDOMWindow', nativeType='nsIBrowserDOMWindow',
notflattened=True)
addExternalIface('nsIDOMWindowUtils', nativeType='nsIDOMWindowUtils', notflattened=True)
addExternalIface('nsIEventTarget', nativeType='nsIEventTarget', notflattened=True)
addExternalIface('nsIFile', nativeType='nsIFile', notflattened=True)
addExternalIface('nsILoadGroup', nativeType='nsILoadGroup',
headerFile='nsILoadGroup.h', notflattened=True)
addExternalIface('nsIPrintSettings', nativeType='nsIPrintSettings',
notflattened=True)
addExternalIface('nsISelectionListener', nativeType='nsISelectionListener')
addExternalIface('nsIStreamListener', nativeType='nsIStreamListener', notflattened=True)
addExternalIface('nsITransportProvider', nativeType='nsITransportProvider')
addExternalIface('nsITreeSelection', nativeType='nsITreeSelection',
notflattened=True)
addExternalIface('nsISupports', nativeType='nsISupports')
addExternalIface('nsIDocShell', nativeType='nsIDocShell', notflattened=True)
addExternalIface('nsIWebNavigation', nativeType='nsIWebNavigation', notflattened=True)
addExternalIface('nsIEditor', nativeType='nsIEditor', notflattened=True)
addExternalIface('nsIVariant', nativeType='nsIVariant', notflattened=True)
addExternalIface('nsIWebBrowserPersistDocumentReceiver',
nativeType='nsIWebBrowserPersistDocumentReceiver',
headerFile='nsIWebBrowserPersistDocument.h',
notflattened=True)
addExternalIface('nsIWebProgressListener', nativeType='nsIWebProgressListener',
notflattened=True)
addExternalIface('OutputStream', nativeType='nsIOutputStream',
notflattened=True)
addExternalIface('Principal', nativeType='nsIPrincipal',
headerFile='nsIPrincipal.h', notflattened=True)
addExternalIface('StackFrame', nativeType='nsIStackFrame',
headerFile='nsIException.h', notflattened=True)
addExternalIface('RemoteTab', nativeType='nsIRemoteTab',
notflattened=True)
addExternalIface('URI', nativeType='nsIURI', headerFile='nsIURI.h',
notflattened=True)
addExternalIface('XULCommandDispatcher', notflattened=True)
addExternalIface('XULTemplateResult', nativeType='nsIXULTemplateResult',
notflattened=True)
addExternalIface('XULTemplateRuleFilter', nativeType='nsIXULTemplateRuleFilter',
notflattened=True)
addExternalIface('nsISHistory', nativeType='nsISHistory', notflattened=True)
addExternalIface('ReferrerInfo', nativeType='nsIReferrerInfo')