1 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/.
8 typedef TestInterface AnotherNameForTestInterface;
9 typedef TestInterface? NullableTestInterface;
11 interface TestExternalInterface;
13 [AvailableIn=PrivilegedApps, Pref="xyz"]
14 interface TestRenamedInterface {
17 callback interface TestCallbackInterface {
18 readonly attribute long foo;
19 attribute DOMString bar;
21 long doSomethingElse(DOMString arg, TestInterface otherArg);
22 void doSequenceLongArg(sequence<long> arg);
23 void doSequenceStringArg(sequence<DOMString> arg);
24 void doMozMapLongArg(MozMap<long> arg);
25 sequence<long> getSequenceOfLong();
26 sequence<TestInterface> getSequenceOfInterfaces();
27 sequence<TestInterface>? getNullableSequenceOfInterfaces();
28 sequence<TestInterface?> getSequenceOfNullableInterfaces();
29 sequence<TestInterface?>? getNullableSequenceOfNullableInterfaces();
30 sequence<TestCallbackInterface> getSequenceOfCallbackInterfaces();
31 sequence<TestCallbackInterface>? getNullableSequenceOfCallbackInterfaces();
32 sequence<TestCallbackInterface?> getSequenceOfNullableCallbackInterfaces();
33 sequence<TestCallbackInterface?>? getNullableSequenceOfNullableCallbackInterfaces();
34 MozMap<long> getMozMapOfLong();
35 Dict? getDictionary();
36 void passArrayBuffer(ArrayBuffer arg);
37 void passNullableArrayBuffer(ArrayBuffer? arg);
38 void passOptionalArrayBuffer(optional ArrayBuffer arg);
39 void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
40 void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
41 void passArrayBufferView(ArrayBufferView arg);
42 void passInt8Array(Int8Array arg);
43 void passInt16Array(Int16Array arg);
44 void passInt32Array(Int32Array arg);
45 void passUint8Array(Uint8Array arg);
46 void passUint16Array(Uint16Array arg);
47 void passUint32Array(Uint32Array arg);
48 void passUint8ClampedArray(Uint8ClampedArray arg);
49 void passFloat32Array(Float32Array arg);
50 void passFloat64Array(Float64Array arg);
51 void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
52 void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
53 void passVariadicTypedArray(Float32Array... arg);
54 void passVariadicNullableTypedArray(Float32Array?... arg);
55 Uint8Array receiveUint8Array();
56 attribute Uint8Array uint8ArrayAttr;
59 callback interface TestSingleOperationCallbackInterface {
60 TestInterface doSomething(short arg, sequence<double> anotherArg);
69 callback TestCallback = void();
70 [TreatNonCallableAsNull] callback TestTreatAsNullCallback = void();
72 // Callback return value tests
73 callback TestIntegerReturn = long();
74 callback TestNullableIntegerReturn = long?();
75 callback TestBooleanReturn = boolean();
76 callback TestFloatReturn = float();
77 callback TestStringReturn = DOMString(long arg);
78 callback TestEnumReturn = TestEnum();
79 callback TestInterfaceReturn = TestInterface();
80 callback TestNullableInterfaceReturn = TestInterface?();
81 callback TestExternalInterfaceReturn = TestExternalInterface();
82 callback TestNullableExternalInterfaceReturn = TestExternalInterface?();
83 callback TestCallbackInterfaceReturn = TestCallbackInterface();
84 callback TestNullableCallbackInterfaceReturn = TestCallbackInterface?();
85 callback TestCallbackReturn = TestCallback();
86 callback TestNullableCallbackReturn = TestCallback?();
87 callback TestObjectReturn = object();
88 callback TestNullableObjectReturn = object?();
89 callback TestTypedArrayReturn = ArrayBuffer();
90 callback TestNullableTypedArrayReturn = ArrayBuffer?();
91 callback TestSequenceReturn = sequence<boolean>();
92 callback TestNullableSequenceReturn = sequence<boolean>?();
93 // Callback argument tests
94 callback TestIntegerArguments = sequence<long>(long arg1, long? arg2,
96 sequence<long?>? arg4);
97 callback TestInterfaceArguments = void(TestInterface arg1, TestInterface? arg2,
98 TestExternalInterface arg3,
99 TestExternalInterface? arg4,
100 TestCallbackInterface arg5,
101 TestCallbackInterface? arg6,
102 sequence<TestInterface> arg7,
103 sequence<TestInterface?>? arg8,
104 sequence<TestExternalInterface> arg9,
105 sequence<TestExternalInterface?>? arg10,
106 sequence<TestCallbackInterface> arg11,
107 sequence<TestCallbackInterface?>? arg12);
108 callback TestStringEnumArguments = void(DOMString myString, DOMString? nullString,
110 callback TestObjectArguments = void(object anObj, object? anotherObj,
111 ArrayBuffer buf, ArrayBuffer? buf2);
112 callback TestOptionalArguments = void(optional DOMString aString,
113 optional object something,
114 optional sequence<TestInterface> aSeq,
115 optional TestInterface? anInterface,
116 optional TestInterface anotherInterface,
117 optional long aLong);
119 TestInterface implements ImplementedInterface;
121 // This interface is only for use in the constructor below
122 interface OnlyForUseInConstructor {
126 Constructor(DOMString str),
127 Constructor(unsigned long num, boolean? boolArg),
128 Constructor(TestInterface? iface),
129 Constructor(long arg1, IndirectlyImplementedInterface iface),
130 Constructor(Date arg1),
131 // Constructor(long arg1, long arg2, (TestInterface or OnlyForUseInConstructor) arg3),
132 AvailableIn=CertifiedApps,
133 NamedConstructor=Test,
134 NamedConstructor=Test(DOMString str),
135 NamedConstructor=Test2(DictForConstructor dict, any any1, object obj1,
136 object? obj2, sequence<Dict> seq, optional any any2,
137 optional object obj3, optional object? obj4),
138 NamedConstructor=Test3((long or MozMap<any>) arg1)
140 interface TestInterface {
142 // XXXbz add tests for throwing versions of all the integer stuff
143 readonly attribute byte readonlyByte;
144 attribute byte writableByte;
145 void passByte(byte arg);
147 void passOptionalByte(optional byte arg);
148 void passOptionalByteBeforeRequired(optional byte arg1, byte arg2);
149 void passOptionalByteWithDefault(optional byte arg = 0);
150 void passOptionalByteWithDefaultBeforeRequired(optional byte arg1 = 0, byte arg2);
151 void passNullableByte(byte? arg);
152 void passOptionalNullableByte(optional byte? arg);
153 void passVariadicByte(byte... arg);
155 readonly attribute byte cachedByte;
156 [StoreInSlot, Constant]
157 readonly attribute byte cachedConstantByte;
159 attribute byte cachedWritableByte;
161 [UnsafeInPrerendering]
162 void unsafePrerenderMethod();
163 [UnsafeInPrerendering]
164 attribute long unsafePrerenderWritable;
165 [UnsafeInPrerendering]
166 readonly attribute long unsafePrerenderReadonly;
167 readonly attribute short readonlyShort;
168 attribute short writableShort;
169 void passShort(short arg);
170 short receiveShort();
171 void passOptionalShort(optional short arg);
172 void passOptionalShortWithDefault(optional short arg = 5);
174 readonly attribute long readonlyLong;
175 attribute long writableLong;
176 void passLong(long arg);
178 void passOptionalLong(optional long arg);
179 void passOptionalLongWithDefault(optional long arg = 7);
181 readonly attribute long long readonlyLongLong;
182 attribute long long writableLongLong;
183 void passLongLong(long long arg);
184 long long receiveLongLong();
185 void passOptionalLongLong(optional long long arg);
186 void passOptionalLongLongWithDefault(optional long long arg = -12);
188 readonly attribute octet readonlyOctet;
189 attribute octet writableOctet;
190 void passOctet(octet arg);
191 octet receiveOctet();
192 void passOptionalOctet(optional octet arg);
193 void passOptionalOctetWithDefault(optional octet arg = 19);
195 readonly attribute unsigned short readonlyUnsignedShort;
196 attribute unsigned short writableUnsignedShort;
197 void passUnsignedShort(unsigned short arg);
198 unsigned short receiveUnsignedShort();
199 void passOptionalUnsignedShort(optional unsigned short arg);
200 void passOptionalUnsignedShortWithDefault(optional unsigned short arg = 2);
202 readonly attribute unsigned long readonlyUnsignedLong;
203 attribute unsigned long writableUnsignedLong;
204 void passUnsignedLong(unsigned long arg);
205 unsigned long receiveUnsignedLong();
206 void passOptionalUnsignedLong(optional unsigned long arg);
207 void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6);
209 readonly attribute unsigned long long readonlyUnsignedLongLong;
210 attribute unsigned long long writableUnsignedLongLong;
211 void passUnsignedLongLong(unsigned long long arg);
212 unsigned long long receiveUnsignedLongLong();
213 void passOptionalUnsignedLongLong(optional unsigned long long arg);
214 void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17);
216 attribute float writableFloat;
217 attribute unrestricted float writableUnrestrictedFloat;
218 attribute float? writableNullableFloat;
219 attribute unrestricted float? writableNullableUnrestrictedFloat;
220 attribute double writableDouble;
221 attribute unrestricted double writableUnrestrictedDouble;
222 attribute double? writableNullableDouble;
223 attribute unrestricted double? writableNullableUnrestrictedDouble;
224 void passFloat(float arg1, unrestricted float arg2,
225 float? arg3, unrestricted float? arg4,
226 double arg5, unrestricted double arg6,
227 double? arg7, unrestricted double? arg8,
228 sequence<float> arg9, sequence<unrestricted float> arg10,
229 sequence<float?> arg11, sequence<unrestricted float?> arg12,
230 sequence<double> arg13, sequence<unrestricted double> arg14,
231 sequence<double?> arg15, sequence<unrestricted double?> arg16);
233 void passLenientFloat(float arg1, unrestricted float arg2,
234 float? arg3, unrestricted float? arg4,
235 double arg5, unrestricted double arg6,
236 double? arg7, unrestricted double? arg8,
237 sequence<float> arg9,
238 sequence<unrestricted float> arg10,
239 sequence<float?> arg11,
240 sequence<unrestricted float?> arg12,
241 sequence<double> arg13,
242 sequence<unrestricted double> arg14,
243 sequence<double?> arg15,
244 sequence<unrestricted double?> arg16);
246 attribute float lenientFloatAttr;
248 attribute double lenientDoubleAttr;
250 void passUnrestricted(optional unrestricted float arg1 = 0,
251 optional unrestricted float arg2 = Infinity,
252 optional unrestricted float arg3 = -Infinity,
253 optional unrestricted float arg4 = NaN,
254 optional unrestricted double arg5 = 0,
255 optional unrestricted double arg6 = Infinity,
256 optional unrestricted double arg7 = -Infinity,
257 optional unrestricted double arg8 = NaN);
259 // Castable interface types
260 // XXXbz add tests for throwing versions of all the castable interface stuff
261 TestInterface receiveSelf();
262 TestInterface? receiveNullableSelf();
263 TestInterface receiveWeakSelf();
264 TestInterface? receiveWeakNullableSelf();
265 void passSelf(TestInterface arg);
266 void passNullableSelf(TestInterface? arg);
267 attribute TestInterface nonNullSelf;
268 attribute TestInterface? nullableSelf;
270 readonly attribute TestInterface cachedSelf;
271 // Optional arguments
272 void passOptionalSelf(optional TestInterface? arg);
273 void passOptionalNonNullSelf(optional TestInterface arg);
274 void passOptionalSelfWithDefault(optional TestInterface? arg = null);
276 // Non-wrapper-cache interface types
278 TestNonWrapperCacheInterface receiveNonWrapperCacheInterface();
280 TestNonWrapperCacheInterface? receiveNullableNonWrapperCacheInterface();
282 sequence<TestNonWrapperCacheInterface> receiveNonWrapperCacheInterfaceSequence();
284 sequence<TestNonWrapperCacheInterface?> receiveNullableNonWrapperCacheInterfaceSequence();
286 sequence<TestNonWrapperCacheInterface>? receiveNonWrapperCacheInterfaceNullableSequence();
288 sequence<TestNonWrapperCacheInterface?>? receiveNullableNonWrapperCacheInterfaceNullableSequence();
290 // Non-castable interface types
291 IndirectlyImplementedInterface receiveOther();
292 IndirectlyImplementedInterface? receiveNullableOther();
293 IndirectlyImplementedInterface receiveWeakOther();
294 IndirectlyImplementedInterface? receiveWeakNullableOther();
295 void passOther(IndirectlyImplementedInterface arg);
296 void passNullableOther(IndirectlyImplementedInterface? arg);
297 attribute IndirectlyImplementedInterface nonNullOther;
298 attribute IndirectlyImplementedInterface? nullableOther;
299 // Optional arguments
300 void passOptionalOther(optional IndirectlyImplementedInterface? arg);
301 void passOptionalNonNullOther(optional IndirectlyImplementedInterface arg);
302 void passOptionalOtherWithDefault(optional IndirectlyImplementedInterface? arg = null);
304 // External interface types
305 TestExternalInterface receiveExternal();
306 TestExternalInterface? receiveNullableExternal();
307 TestExternalInterface receiveWeakExternal();
308 TestExternalInterface? receiveWeakNullableExternal();
309 void passExternal(TestExternalInterface arg);
310 void passNullableExternal(TestExternalInterface? arg);
311 attribute TestExternalInterface nonNullExternal;
312 attribute TestExternalInterface? nullableExternal;
313 // Optional arguments
314 void passOptionalExternal(optional TestExternalInterface? arg);
315 void passOptionalNonNullExternal(optional TestExternalInterface arg);
316 void passOptionalExternalWithDefault(optional TestExternalInterface? arg = null);
318 // Callback interface types
319 TestCallbackInterface receiveCallbackInterface();
320 TestCallbackInterface? receiveNullableCallbackInterface();
321 TestCallbackInterface receiveWeakCallbackInterface();
322 TestCallbackInterface? receiveWeakNullableCallbackInterface();
323 void passCallbackInterface(TestCallbackInterface arg);
324 void passNullableCallbackInterface(TestCallbackInterface? arg);
325 attribute TestCallbackInterface nonNullCallbackInterface;
326 attribute TestCallbackInterface? nullableCallbackInterface;
327 // Optional arguments
328 void passOptionalCallbackInterface(optional TestCallbackInterface? arg);
329 void passOptionalNonNullCallbackInterface(optional TestCallbackInterface arg);
330 void passOptionalCallbackInterfaceWithDefault(optional TestCallbackInterface? arg = null);
332 // Miscellaneous interface tests
333 IndirectlyImplementedInterface receiveConsequentialInterface();
334 void passConsequentialInterface(IndirectlyImplementedInterface arg);
338 readonly attribute sequence<long> readonlySequence;
340 readonly attribute sequence<Dict> readonlySequenceOfDictionaries;
342 readonly attribute sequence<Dict>? readonlyNullableSequenceOfDictionaries;
343 [Cached, Pure, Frozen]
344 readonly attribute sequence<Dict> readonlyFrozenSequence;
345 [Cached, Pure, Frozen]
346 readonly attribute sequence<Dict>? readonlyFrozenNullableSequence;
347 sequence<long> receiveSequence();
348 sequence<long>? receiveNullableSequence();
349 sequence<long?> receiveSequenceOfNullableInts();
350 sequence<long?>? receiveNullableSequenceOfNullableInts();
351 void passSequence(sequence<long> arg);
352 void passNullableSequence(sequence<long>? arg);
353 void passSequenceOfNullableInts(sequence<long?> arg);
354 void passOptionalSequenceOfNullableInts(optional sequence<long?> arg);
355 void passOptionalNullableSequenceOfNullableInts(optional sequence<long?>? arg);
356 sequence<TestInterface> receiveCastableObjectSequence();
357 sequence<TestCallbackInterface> receiveCallbackObjectSequence();
358 sequence<TestInterface?> receiveNullableCastableObjectSequence();
359 sequence<TestCallbackInterface?> receiveNullableCallbackObjectSequence();
360 sequence<TestInterface>? receiveCastableObjectNullableSequence();
361 sequence<TestInterface?>? receiveNullableCastableObjectNullableSequence();
362 sequence<TestInterface> receiveWeakCastableObjectSequence();
363 sequence<TestInterface?> receiveWeakNullableCastableObjectSequence();
364 sequence<TestInterface>? receiveWeakCastableObjectNullableSequence();
365 sequence<TestInterface?>? receiveWeakNullableCastableObjectNullableSequence();
366 void passCastableObjectSequence(sequence<TestInterface> arg);
367 void passNullableCastableObjectSequence(sequence<TestInterface?> arg);
368 void passCastableObjectNullableSequence(sequence<TestInterface>? arg);
369 void passNullableCastableObjectNullableSequence(sequence<TestInterface?>? arg);
370 void passOptionalSequence(optional sequence<long> arg);
371 void passOptionalSequenceWithDefaultValue(optional sequence<long> arg = []);
372 void passOptionalNullableSequence(optional sequence<long>? arg);
373 void passOptionalNullableSequenceWithDefaultValue(optional sequence<long>? arg = null);
374 void passOptionalNullableSequenceWithDefaultValue2(optional sequence<long>? arg = []);
375 void passOptionalObjectSequence(optional sequence<TestInterface> arg);
376 void passExternalInterfaceSequence(sequence<TestExternalInterface> arg);
377 void passNullableExternalInterfaceSequence(sequence<TestExternalInterface?> arg);
379 sequence<DOMString> receiveStringSequence();
380 void passStringSequence(sequence<DOMString> arg);
382 sequence<ByteString> receiveByteStringSequence();
383 void passByteStringSequence(sequence<ByteString> arg);
385 sequence<any> receiveAnySequence();
386 sequence<any>? receiveNullableAnySequence();
387 sequence<sequence<any>> receiveAnySequenceSequence();
389 sequence<object> receiveObjectSequence();
390 sequence<object?> receiveNullableObjectSequence();
392 void passSequenceOfSequences(sequence<sequence<long>> arg);
393 sequence<sequence<long>> receiveSequenceOfSequences();
396 void passMozMap(MozMap<long> arg);
397 void passNullableMozMap(MozMap<long>? arg);
398 void passMozMapOfNullableInts(MozMap<long?> arg);
399 void passOptionalMozMapOfNullableInts(optional MozMap<long?> arg);
400 void passOptionalNullableMozMapOfNullableInts(optional MozMap<long?>? arg);
401 void passCastableObjectMozMap(MozMap<TestInterface> arg);
402 void passNullableCastableObjectMozMap(MozMap<TestInterface?> arg);
403 void passCastableObjectNullableMozMap(MozMap<TestInterface>? arg);
404 void passNullableCastableObjectNullableMozMap(MozMap<TestInterface?>? arg);
405 void passOptionalMozMap(optional MozMap<long> arg);
406 void passOptionalNullableMozMap(optional MozMap<long>? arg);
407 void passOptionalNullableMozMapWithDefaultValue(optional MozMap<long>? arg = null);
408 void passOptionalObjectMozMap(optional MozMap<TestInterface> arg);
409 void passExternalInterfaceMozMap(MozMap<TestExternalInterface> arg);
410 void passNullableExternalInterfaceMozMap(MozMap<TestExternalInterface?> arg);
411 void passStringMozMap(MozMap<DOMString> arg);
412 void passByteStringMozMap(MozMap<ByteString> arg);
413 void passMozMapOfMozMaps(MozMap<MozMap<long>> arg);
414 MozMap<long> receiveMozMap();
415 MozMap<long>? receiveNullableMozMap();
416 MozMap<long?> receiveMozMapOfNullableInts();
417 MozMap<long?>? receiveNullableMozMapOfNullableInts();
418 MozMap<MozMap<long>> receiveMozMapOfMozMaps();
419 MozMap<any> receiveAnyMozMap();
422 void passArrayBuffer(ArrayBuffer arg);
423 void passNullableArrayBuffer(ArrayBuffer? arg);
424 void passOptionalArrayBuffer(optional ArrayBuffer arg);
425 void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
426 void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
427 void passArrayBufferView(ArrayBufferView arg);
428 void passInt8Array(Int8Array arg);
429 void passInt16Array(Int16Array arg);
430 void passInt32Array(Int32Array arg);
431 void passUint8Array(Uint8Array arg);
432 void passUint16Array(Uint16Array arg);
433 void passUint32Array(Uint32Array arg);
434 void passUint8ClampedArray(Uint8ClampedArray arg);
435 void passFloat32Array(Float32Array arg);
436 void passFloat64Array(Float64Array arg);
437 void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
438 void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
439 void passMozMapOfArrayBuffers(MozMap<ArrayBuffer> arg);
440 void passMozMapOfNullableArrayBuffers(MozMap<ArrayBuffer?> arg);
441 void passVariadicTypedArray(Float32Array... arg);
442 void passVariadicNullableTypedArray(Float32Array?... arg);
443 Uint8Array receiveUint8Array();
444 attribute Uint8Array uint8ArrayAttr;
447 void passString(DOMString arg);
448 void passNullableString(DOMString? arg);
449 void passOptionalString(optional DOMString arg);
450 void passOptionalStringWithDefaultValue(optional DOMString arg = "abc");
451 void passOptionalNullableString(optional DOMString? arg);
452 void passOptionalNullableStringWithDefaultValue(optional DOMString? arg = null);
453 void passVariadicString(DOMString... arg);
454 DOMString receiveString();
457 void passByteString(ByteString arg);
458 void passNullableByteString(ByteString? arg);
459 void passOptionalByteString(optional ByteString arg);
460 void passOptionalNullableByteString(optional ByteString? arg);
461 void passVariadicByteString(ByteString... arg);
464 void passUSVS(USVString arg);
465 void passNullableUSVS(USVString? arg);
466 void passOptionalUSVS(optional USVString arg);
467 void passOptionalUSVSWithDefaultValue(optional USVString arg = "abc");
468 void passOptionalNullableUSVS(optional USVString? arg);
469 void passOptionalNullableUSVSWithDefaultValue(optional USVString? arg = null);
470 void passVariadicUSVS(USVString... arg);
471 USVString receiveUSVS();
474 void passEnum(TestEnum arg);
475 void passNullableEnum(TestEnum? arg);
476 void passOptionalEnum(optional TestEnum arg);
477 void passEnumWithDefault(optional TestEnum arg = "a");
478 void passOptionalNullableEnum(optional TestEnum? arg);
479 void passOptionalNullableEnumWithDefaultValue(optional TestEnum? arg = null);
480 void passOptionalNullableEnumWithDefaultValue2(optional TestEnum? arg = "a");
481 TestEnum receiveEnum();
482 TestEnum? receiveNullableEnum();
483 attribute TestEnum enumAttribute;
484 readonly attribute TestEnum readonlyEnumAttribute;
487 void passCallback(TestCallback arg);
488 void passNullableCallback(TestCallback? arg);
489 void passOptionalCallback(optional TestCallback arg);
490 void passOptionalNullableCallback(optional TestCallback? arg);
491 void passOptionalNullableCallbackWithDefaultValue(optional TestCallback? arg = null);
492 TestCallback receiveCallback();
493 TestCallback? receiveNullableCallback();
494 void passNullableTreatAsNullCallback(TestTreatAsNullCallback? arg);
495 void passOptionalNullableTreatAsNullCallback(optional TestTreatAsNullCallback? arg);
496 void passOptionalNullableTreatAsNullCallbackWithDefaultValue(optional TestTreatAsNullCallback? arg = null);
497 attribute TestTreatAsNullCallback treatAsNullCallback;
498 attribute TestTreatAsNullCallback? nullableTreatAsNullCallback;
501 void passAny(any arg);
502 void passVariadicAny(any... arg);
503 void passOptionalAny(optional any arg);
504 void passAnyDefaultNull(optional any arg = null);
505 void passSequenceOfAny(sequence<any> arg);
506 void passNullableSequenceOfAny(sequence<any>? arg);
507 void passOptionalSequenceOfAny(optional sequence<any> arg);
508 void passOptionalNullableSequenceOfAny(optional sequence<any>? arg);
509 void passOptionalSequenceOfAnyWithDefaultValue(optional sequence<any>? arg = null);
510 void passSequenceOfSequenceOfAny(sequence<sequence<any>> arg);
511 void passSequenceOfNullableSequenceOfAny(sequence<sequence<any>?> arg);
512 void passNullableSequenceOfNullableSequenceOfAny(sequence<sequence<any>?>? arg);
513 void passOptionalNullableSequenceOfNullableSequenceOfAny(optional sequence<sequence<any>?>? arg);
514 void passMozMapOfAny(MozMap<any> arg);
515 void passNullableMozMapOfAny(MozMap<any>? arg);
516 void passOptionalMozMapOfAny(optional MozMap<any> arg);
517 void passOptionalNullableMozMapOfAny(optional MozMap<any>? arg);
518 void passOptionalMozMapOfAnyWithDefaultValue(optional MozMap<any>? arg = null);
519 void passMozMapOfMozMapOfAny(MozMap<MozMap<any>> arg);
520 void passMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?> arg);
521 void passNullableMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?>? arg);
522 void passOptionalNullableMozMapOfNullableMozMapOfAny(optional MozMap<MozMap<any>?>? arg);
523 void passOptionalNullableMozMapOfNullableSequenceOfAny(optional MozMap<sequence<any>?>? arg);
524 void passOptionalNullableSequenceOfNullableMozMapOfAny(optional sequence<MozMap<any>?>? arg);
528 void passObject(object arg);
529 void passVariadicObject(object... arg);
530 void passNullableObject(object? arg);
531 void passVariadicNullableObject(object... arg);
532 void passOptionalObject(optional object arg);
533 void passOptionalNullableObject(optional object? arg);
534 void passOptionalNullableObjectWithDefaultValue(optional object? arg = null);
535 void passSequenceOfObject(sequence<object> arg);
536 void passSequenceOfNullableObject(sequence<object?> arg);
537 void passNullableSequenceOfObject(sequence<object>? arg);
538 void passOptionalNullableSequenceOfNullableSequenceOfObject(optional sequence<sequence<object>?>? arg);
539 void passOptionalNullableSequenceOfNullableSequenceOfNullableObject(optional sequence<sequence<object?>?>? arg);
540 void passMozMapOfObject(MozMap<object> arg);
541 object receiveObject();
542 object? receiveNullableObject();
545 void passUnion((object or long) arg);
546 // Some union tests are debug-only to avoid creating all those
547 // unused union types in opt builds.
549 void passUnion2((long or boolean) arg);
550 void passUnion3((object or long or boolean) arg);
551 void passUnion4((Node or long or boolean) arg);
552 void passUnion5((object or boolean) arg);
553 void passUnion6((object or DOMString) arg);
554 void passUnion7((object or DOMString or long) arg);
555 void passUnion8((object or DOMString or boolean) arg);
556 void passUnion9((object or DOMString or long or boolean) arg);
557 void passUnion10(optional (EventInit or long) arg);
558 void passUnion11(optional (CustomEventInit or long) arg);
559 void passUnion12(optional (EventInit or long) arg = 5);
560 void passUnion13(optional (object or long?) arg = null);
561 void passUnion14(optional (object or long?) arg = 5);
562 void passUnion15((sequence<long> or long) arg);
563 void passUnion16(optional (sequence<long> or long) arg);
564 void passUnion17(optional (sequence<long>? or long) arg = 5);
565 void passUnion18((sequence<object> or long) arg);
566 void passUnion19(optional (sequence<object> or long) arg);
567 void passUnion20(optional (sequence<object> or long) arg = []);
568 void passUnion21((MozMap<long> or long) arg);
569 void passUnion22((MozMap<object> or long) arg);
570 void passUnion23((sequence<ImageData> or long) arg);
571 void passUnion24((sequence<ImageData?> or long) arg);
572 void passUnion25((sequence<sequence<ImageData>> or long) arg);
573 void passUnion26((sequence<sequence<ImageData?>> or long) arg);
574 void passUnion27(optional (sequence<DOMString> or EventInit) arg);
575 void passUnion28(optional (EventInit or sequence<DOMString>) arg);
576 void passUnionWithCallback((EventHandler or long) arg);
577 void passUnionWithByteString((ByteString or long) arg);
578 void passUnionWithMozMap((MozMap<DOMString> or DOMString) arg);
579 void passUnionWithMozMapAndSequence((MozMap<DOMString> or sequence<DOMString>) arg);
580 void passUnionWithSequenceAndMozMap((sequence<DOMString> or MozMap<DOMString>) arg);
581 void passUnionWithUSVS((USVString or long) arg);
583 void passUnionWithNullable((object? or long) arg);
584 void passNullableUnion((object or long)? arg);
585 void passOptionalUnion(optional (object or long) arg);
586 void passOptionalNullableUnion(optional (object or long)? arg);
587 void passOptionalNullableUnionWithDefaultValue(optional (object or long)? arg = null);
588 //void passUnionWithInterfaces((TestInterface or TestExternalInterface) arg);
589 //void passUnionWithInterfacesAndNullable((TestInterface? or TestExternalInterface) arg);
590 //void passUnionWithSequence((sequence<object> or long) arg);
591 void passUnionWithArrayBuffer((ArrayBuffer or long) arg);
592 void passUnionWithString((DOMString or object) arg);
593 //void passUnionWithEnum((TestEnum or object) arg);
594 // Trying to use a callback in a union won't include the test
595 // headers, unfortunately, so won't compile.
596 //void passUnionWithCallback((TestCallback or long) arg);
597 void passUnionWithObject((object or long) arg);
598 //void passUnionWithDict((Dict or long) arg);
600 void passUnionWithDefaultValue1(optional (double or DOMString) arg = "");
601 void passUnionWithDefaultValue2(optional (double or DOMString) arg = 1);
602 void passUnionWithDefaultValue3(optional (double or DOMString) arg = 1.5);
603 void passUnionWithDefaultValue4(optional (float or DOMString) arg = "");
604 void passUnionWithDefaultValue5(optional (float or DOMString) arg = 1);
605 void passUnionWithDefaultValue6(optional (float or DOMString) arg = 1.5);
606 void passUnionWithDefaultValue7(optional (unrestricted double or DOMString) arg = "");
607 void passUnionWithDefaultValue8(optional (unrestricted double or DOMString) arg = 1);
608 void passUnionWithDefaultValue9(optional (unrestricted double or DOMString) arg = 1.5);
609 void passUnionWithDefaultValue10(optional (unrestricted double or DOMString) arg = Infinity);
610 void passUnionWithDefaultValue11(optional (unrestricted float or DOMString) arg = "");
611 void passUnionWithDefaultValue12(optional (unrestricted float or DOMString) arg = 1);
612 void passUnionWithDefaultValue13(optional (unrestricted float or DOMString) arg = Infinity);
614 void passNullableUnionWithDefaultValue1(optional (double or DOMString)? arg = "");
615 void passNullableUnionWithDefaultValue2(optional (double or DOMString)? arg = 1);
616 void passNullableUnionWithDefaultValue3(optional (double or DOMString)? arg = null);
617 void passNullableUnionWithDefaultValue4(optional (float or DOMString)? arg = "");
618 void passNullableUnionWithDefaultValue5(optional (float or DOMString)? arg = 1);
619 void passNullableUnionWithDefaultValue6(optional (float or DOMString)? arg = null);
620 void passNullableUnionWithDefaultValue7(optional (unrestricted double or DOMString)? arg = "");
621 void passNullableUnionWithDefaultValue8(optional (unrestricted double or DOMString)? arg = 1);
622 void passNullableUnionWithDefaultValue9(optional (unrestricted double or DOMString)? arg = null);
623 void passNullableUnionWithDefaultValue10(optional (unrestricted float or DOMString)? arg = "");
624 void passNullableUnionWithDefaultValue11(optional (unrestricted float or DOMString)? arg = 1);
625 void passNullableUnionWithDefaultValue12(optional (unrestricted float or DOMString)? arg = null);
627 void passSequenceOfUnions(sequence<(CanvasPattern or CanvasGradient)> arg);
628 void passSequenceOfUnions2(sequence<(object or long)> arg);
629 void passVariadicUnion((CanvasPattern or CanvasGradient)... arg);
631 void passSequenceOfNullableUnions(sequence<(CanvasPattern or CanvasGradient)?> arg);
632 void passVariadicNullableUnion((CanvasPattern or CanvasGradient)?... arg);
633 void passMozMapOfUnions(MozMap<(CanvasPattern or CanvasGradient)> arg);
634 // XXXbz no move constructor on some unions
635 // void passMozMapOfUnions2(MozMap<(object or long)> arg);
637 (CanvasPattern or CanvasGradient) receiveUnion();
638 (object or long) receiveUnion2();
639 (CanvasPattern? or CanvasGradient) receiveUnionContainingNull();
640 (CanvasPattern or CanvasGradient)? receiveNullableUnion();
641 (object or long)? receiveNullableUnion2();
643 attribute (CanvasPattern or CanvasGradient) writableUnion;
644 attribute (CanvasPattern? or CanvasGradient) writableUnionContainingNull;
645 attribute (CanvasPattern or CanvasGradient)? writableNullableUnion;
648 void passDate(Date arg);
649 void passNullableDate(Date? arg);
650 void passOptionalDate(optional Date arg);
651 void passOptionalNullableDate(optional Date? arg);
652 void passOptionalNullableDateWithDefaultValue(optional Date? arg = null);
653 void passDateSequence(sequence<Date> arg);
654 void passNullableDateSequence(sequence<Date?> arg);
655 void passDateMozMap(MozMap<Date> arg);
657 Date? receiveNullableDate();
660 void methodRenamedFrom();
661 [BinaryName="otherMethodRenamedTo"]
662 void otherMethodRenamedFrom();
663 void methodRenamedFrom(byte argument);
664 readonly attribute byte attributeGetterRenamedFrom;
665 attribute byte attributeRenamedFrom;
666 [BinaryName="otherAttributeRenamedTo"]
667 attribute byte otherAttributeRenamedFrom;
669 void passDictionary(optional Dict x);
671 readonly attribute Dict readonlyDictionary;
673 readonly attribute Dict? readonlyNullableDictionary;
675 attribute Dict writableDictionary;
676 [Cached, Pure, Frozen]
677 readonly attribute Dict readonlyFrozenDictionary;
678 [Cached, Pure, Frozen]
679 readonly attribute Dict? readonlyFrozenNullableDictionary;
680 [Cached, Pure, Frozen]
681 attribute Dict writableFrozenDictionary;
682 Dict receiveDictionary();
683 Dict? receiveNullableDictionary();
684 void passOtherDictionary(optional GrandparentDict x);
685 void passSequenceOfDictionaries(sequence<Dict> x);
686 void passMozMapOfDictionaries(MozMap<GrandparentDict> x);
687 // No support for nullable dictionaries inside a sequence (nor should there be)
688 // void passSequenceOfNullableDictionaries(sequence<Dict?> x);
689 void passDictionaryOrLong(optional Dict x);
690 void passDictionaryOrLong(long x);
692 void passDictContainingDict(optional DictContainingDict arg);
693 void passDictContainingSequence(optional DictContainingSequence arg);
694 DictContainingSequence receiveDictContainingSequence();
695 void passVariadicDictionary(Dict... arg);
697 // EnforceRange/Clamp tests
698 void dontEnforceRangeOrClamp(byte arg);
699 void doEnforceRange([EnforceRange] byte arg);
700 void doClamp([Clamp] byte arg);
701 [EnforceRange] attribute byte enforcedByte;
702 [Clamp] attribute byte clampedByte;
705 const myLong myLongConstant = 5;
706 void exerciseTypedefInterfaces1(AnotherNameForTestInterface arg);
707 AnotherNameForTestInterface exerciseTypedefInterfaces2(NullableTestInterface arg);
708 void exerciseTypedefInterfaces3(YetAnotherNameForTestInterface arg);
710 // Static methods and attributes
711 static attribute boolean staticAttribute;
712 static void staticMethod(boolean arg);
713 static void staticMethodWithContext(any arg);
715 // Overload resolution tests
716 //void overload1(DOMString... strs);
717 boolean overload1(TestInterface arg);
718 TestInterface overload1(DOMString strs, TestInterface arg);
719 void overload2(TestInterface arg);
720 void overload2(optional Dict arg);
721 void overload2(boolean arg);
722 void overload2(DOMString arg);
723 void overload2(Date arg);
724 void overload3(TestInterface arg);
725 void overload3(TestCallback arg);
726 void overload3(boolean arg);
727 void overload4(TestInterface arg);
728 void overload4(TestCallbackInterface arg);
729 void overload4(DOMString arg);
730 void overload5(long arg);
731 void overload5(TestEnum arg);
732 void overload6(long arg);
733 void overload6(boolean arg);
734 void overload7(long arg);
735 void overload7(boolean arg);
736 void overload7(ByteString arg);
737 void overload8(long arg);
738 void overload8(TestInterface arg);
739 void overload9(long? arg);
740 void overload9(DOMString arg);
741 void overload10(long? arg);
742 void overload10(object arg);
743 void overload11(long arg);
744 void overload11(DOMString? arg);
745 void overload12(long arg);
746 void overload12(boolean? arg);
747 void overload13(long? arg);
748 void overload13(boolean arg);
749 void overload14(optional long arg);
750 void overload14(TestInterface arg);
751 void overload15(long arg);
752 void overload15(optional TestInterface arg);
753 void overload16(long arg);
754 void overload16(optional TestInterface? arg);
755 void overload17(sequence<long> arg);
756 void overload17(MozMap<long> arg);
757 void overload18(MozMap<DOMString> arg);
758 void overload18(sequence<DOMString> arg);
759 void overload19(sequence<long> arg);
760 void overload19(optional Dict arg);
761 void overload20(optional Dict arg);
762 void overload20(sequence<long> arg);
765 void passVariadicThirdArg(DOMString arg1, long arg2, TestInterface... arg3);
767 // Conditionally exposed methods/attributes
769 readonly attribute boolean prefable1;
771 readonly attribute boolean prefable2;
773 readonly attribute boolean prefable3;
775 readonly attribute boolean prefable4;
777 readonly attribute boolean prefable5;
778 [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
779 readonly attribute boolean prefable6;
780 [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
781 readonly attribute boolean prefable7;
782 [Pref="ghi.jkl", Func="nsGenericHTMLElement::TouchEventsEnabled"]
783 readonly attribute boolean prefable8;
784 [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
785 readonly attribute boolean prefable9;
788 [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
790 [Pref="abc.def", Func="TestFuncControlledMember"]
791 readonly attribute boolean prefable12;
792 [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
794 [Pref="abc.def", Func="TestFuncControlledMember"]
795 readonly attribute boolean prefable14;
796 [Func="TestFuncControlledMember"]
797 readonly attribute boolean prefable15;
798 [Func="TestFuncControlledMember"]
799 readonly attribute boolean prefable16;
800 [Pref="abc.def", Func="TestFuncControlledMember"]
802 [Func="TestFuncControlledMember"]
804 [Func="TestFuncControlledMember"]
806 [Pref="abc.def", Func="TestFuncControlledMember", ChromeOnly]
808 [Func="TestFuncControlledMember", AvailableIn=CertifiedApps]
810 [Func="TestFuncControlledMember", AvailableIn=CertifiedApps]
812 [Pref="abc.def", Func="TestFuncControlledMember", AvailableIn=CertifiedApps]
814 [Pref="abc.def", Func="TestFuncControlledMember", AvailableIn=PrivilegedApps]
818 [LenientThis] attribute long attrWithLenientThis;
819 [Unforgeable] readonly attribute long unforgeableAttr;
820 [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
821 [Unforgeable] long unforgeableMethod();
822 [Unforgeable, ChromeOnly] long unforgeableMethod2();
824 void passRenamedInterface(TestRenamedInterface arg);
825 [PutForwards=writableByte] readonly attribute TestInterface putForwardsAttr;
826 [PutForwards=writableByte, LenientThis] readonly attribute TestInterface putForwardsAttr2;
827 [PutForwards=writableByte, ChromeOnly] readonly attribute TestInterface putForwardsAttr3;
828 [Throws] void throwingMethod();
829 [Throws] attribute boolean throwingAttr;
830 [GetterThrows] attribute boolean throwingGetterAttr;
831 [SetterThrows] attribute boolean throwingSetterAttr;
832 legacycaller short(unsigned long arg1, TestInterface arg2);
833 void passArgsWithDefaults(optional long arg1,
834 optional TestInterface? arg2 = null,
835 optional Dict arg3, optional double arg4 = 5.0,
836 optional float arg5);
838 attribute any jsonifierShouldSkipThis;
839 attribute TestParentInterface jsonifierShouldSkipThis2;
840 attribute TestCallbackInterface jsonifierShouldSkipThis3;
843 attribute byte dashed-attribute;
844 void dashed-method();
846 // If you add things here, add them to TestExampleGen and TestJSImplGen as well
849 interface TestParentInterface {
852 interface TestChildInterface : TestParentInterface {
855 interface TestNonWrapperCacheInterface {
859 interface ImplementedInterfaceParent {
860 void implementedParentMethod();
861 attribute boolean implementedParentProperty;
863 const long implementedParentConstant = 8;
866 ImplementedInterfaceParent implements IndirectlyImplementedInterface;
869 interface IndirectlyImplementedInterface {
870 void indirectlyImplementedMethod();
871 attribute boolean indirectlyImplementedProperty;
873 const long indirectlyImplementedConstant = 9;
877 interface ImplementedInterface : ImplementedInterfaceParent {
878 void implementedMethod();
879 attribute boolean implementedProperty;
881 const long implementedConstant = 5;
885 interface DiamondImplements {
886 readonly attribute long diamondImplementedProperty;
889 interface DiamondBranch1A {
892 interface DiamondBranch1B {
895 interface DiamondBranch2A : DiamondImplements {
898 interface DiamondBranch2B : DiamondImplements {
900 TestInterface implements DiamondBranch1A;
901 TestInterface implements DiamondBranch1B;
902 TestInterface implements DiamondBranch2A;
903 TestInterface implements DiamondBranch2B;
904 DiamondBranch1A implements DiamondImplements;
905 DiamondBranch1B implements DiamondImplements;
907 dictionary Dict : ParentDict {
913 [EnforceRange] unsigned long enforcedUnsignedLong;
914 [Clamp] unsigned long clampedUnsignedLong;
916 DOMString empty = "";
917 TestEnum otherEnum = "b";
918 DOMString otherStr = "def";
919 DOMString? yetAnotherStr = null;
923 object? anotherObj = null;
924 TestCallback? someCallback = null;
926 any anotherAny = null;
928 unrestricted float urFloat = 0;
929 unrestricted float urFloat2 = 1.1;
930 unrestricted float urFloat3 = -1.1;
931 unrestricted float? urFloat4 = null;
932 unrestricted float infUrFloat = Infinity;
933 unrestricted float negativeInfUrFloat = -Infinity;
934 unrestricted float nanUrFloat = NaN;
936 unrestricted double urDouble = 0;
937 unrestricted double urDouble2 = 1.1;
938 unrestricted double urDouble3 = -1.1;
939 unrestricted double? urDouble4 = null;
940 unrestricted double infUrDouble = Infinity;
941 unrestricted double negativeInfUrDouble = -Infinity;
942 unrestricted double nanUrDouble = NaN;
944 (float or DOMString) floatOrString = "str";
945 (object or long) objectOrLong;
947 (EventInit or long) eventInitOrLong;
948 (EventInit or long)? nullableEventInitOrLong;
949 (HTMLElement or long)? nullableHTMLElementOrLong;
950 // CustomEventInit is useful to test because it needs rooting.
951 (CustomEventInit or long) eventInitOrLong2;
952 (CustomEventInit or long)? nullableEventInitOrLong2;
953 (EventInit or long) eventInitOrLongWithDefaultValue = null;
954 (CustomEventInit or long) eventInitOrLongWithDefaultValue2 = null;
955 (EventInit or long) eventInitOrLongWithDefaultValue3 = 5;
956 (CustomEventInit or long) eventInitOrLongWithDefaultValue4 = 5;
957 (sequence<object> or long) objectSequenceOrLong;
960 ArrayBuffer arrayBuffer;
961 ArrayBuffer? nullableArrayBuffer;
962 Uint8Array uint8Array;
963 Float64Array? float64Array = null;
966 sequence<long> seq2 = [];
967 sequence<long>? seq3;
968 sequence<long>? seq4 = null;
969 sequence<long>? seq5 = [];
973 required long requiredLong;
974 required object requiredObject;
977 dictionary ParentDict : GrandparentDict {
979 TestInterface someInterface;
980 TestInterface? someNullableInterface = null;
981 TestExternalInterface someExternalInterface;
985 dictionary DictContainingDict {
989 dictionary DictContainingSequence {
990 sequence<long> ourSequence;
991 sequence<TestInterface> ourSequence2;
992 sequence<any> ourSequence3;
993 sequence<object> ourSequence4;
994 sequence<object?> ourSequence5;
995 sequence<object>? ourSequence6;
996 sequence<object?>? ourSequence7;
997 sequence<object>? ourSequence8 = null;
998 sequence<object?>? ourSequence9 = null;
999 sequence<(float or DOMString)> ourSequence10;
1002 dictionary DictForConstructor {
1004 DictContainingDict dict2;
1005 sequence<Dict> seq1;
1006 sequence<sequence<Dict>>? seq2;
1007 sequence<sequence<Dict>?> seq3;
1010 sequence<DictContainingSequence> seq6;
1016 interface TestIndexedGetterInterface {
1017 getter long item(unsigned long idx);
1018 readonly attribute unsigned long length;
1019 legacycaller void();
1022 interface TestNamedGetterInterface {
1023 getter DOMString (DOMString name);
1026 interface TestIndexedGetterAndSetterAndNamedGetterInterface {
1027 getter DOMString (DOMString myName);
1028 getter long (unsigned long index);
1029 setter creator void (unsigned long index, long arg);
1032 interface TestIndexedAndNamedGetterInterface {
1033 getter long (unsigned long index);
1034 getter DOMString namedItem(DOMString name);
1035 readonly attribute unsigned long length;
1038 interface TestIndexedSetterInterface {
1039 setter creator void setItem(unsigned long idx, DOMString item);
1040 getter DOMString (unsigned long idx);
1043 interface TestNamedSetterInterface {
1044 setter creator void (DOMString myName, TestIndexedSetterInterface item);
1045 getter TestIndexedSetterInterface (DOMString name);
1048 interface TestIndexedAndNamedSetterInterface {
1049 setter creator void (unsigned long index, TestIndexedSetterInterface item);
1050 getter TestIndexedSetterInterface (unsigned long index);
1051 setter creator void setNamedItem(DOMString name, TestIndexedSetterInterface item);
1052 getter TestIndexedSetterInterface (DOMString name);
1055 interface TestIndexedAndNamedGetterAndSetterInterface : TestIndexedSetterInterface {
1056 getter long item(unsigned long index);
1057 getter DOMString namedItem(DOMString name);
1058 setter creator void (unsigned long index, long item);
1059 setter creator void (DOMString name, DOMString item);
1060 stringifier DOMString ();
1061 readonly attribute unsigned long length;
1064 interface TestIndexedDeleterInterface {
1065 deleter void delItem(unsigned long idx);
1066 getter long (unsigned long index);
1069 interface TestIndexedDeleterWithRetvalInterface {
1070 deleter boolean delItem(unsigned long index);
1071 getter long (unsigned long index);
1074 interface TestNamedDeleterInterface {
1075 deleter void (DOMString name);
1076 getter long (DOMString name);
1079 interface TestNamedDeleterWithRetvalInterface {
1080 deleter boolean delNamedItem(DOMString name);
1081 getter long (DOMString name);
1084 interface TestIndexedAndNamedDeleterInterface {
1085 deleter void (unsigned long index);
1086 getter long (unsigned long index);
1087 deleter void delNamedItem(DOMString name);
1088 getter long (DOMString name);
1091 interface TestCppKeywordNamedMethodsInterface {