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