summaryrefslogtreecommitdiff
path: root/Source/bindings/tests/idls/TestObject.idl
blob: 26f3dba06717bf771282daad896e36445eea7e39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
/*
 * Copyright (C) 2013 Google Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *     * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above
 * copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the
 * distribution.
 *     * Neither the name of Google Inc. nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

enum TestEnum {"", "EnumValue1", "EnumValue2", "EnumValue3"};

callback VoidCallbackFunction = void ();
callback AnyCallbackFunctionOptionalAnyArg = any (optional any optionalAnyArg);

dictionary TestDict {
    boolean booleanMember;
    long longMember1 = 1;
};

dictionary TestDictDerived : TestDict {
    unsigned short unsignedShortMember;
    float floatMember4 = 4.0;
};

// No extended attributes on the interface; those go in TestInterface.idl
interface TestObject {
    // Constants
    const unsigned short CONST_VALUE_0 = 0;
    const unsigned short CONST_VALUE_1 = 1;
    const unsigned short CONST_VALUE_2 = 2;
    const unsigned short CONST_VALUE_4 = 4;
    const unsigned short CONST_VALUE_8 = 8;
    const short CONST_VALUE_9 = -1;
    const DOMString CONST_VALUE_10 = "my constant string";
    const unsigned short CONST_VALUE_11 = 0xffffffff;
    const unsigned short CONST_VALUE_12 = 0x01;
    const unsigned short CONST_VALUE_13 = 0X20;
    const unsigned short CONST_VALUE_14 = 0x1abc;
    const unsigned short CONST_VALUE_15 = 010;
    const unsigned short CONST_VALUE_16 = -010;
    const unsigned short CONST_VALUE_16 = -0x1A;
    const unsigned short CONST_VALUE_17 = -0X1a;

    // Extended attributes
    [DeprecateAs=Constant] const short DEPRECATED_CONSTANT = 1;
    [RuntimeEnabled=FeatureName] const short FEATURE_ENABLED_CONST = 1;
    [Reflect=CONST_IMPL] const short CONST_JAVASCRIPT = 1;


    // Attributes
    //
    // Naming convention:
    // [ExtAttr] attribute Type extAttrTypeNameAttribute;
    // E.g.,
    // [Foo] attribute DOMString? fooStringOrNullAttribute
    //
    // Type name reference:
    // http://heycam.github.io/webidl/#dfn-type-name
    //
    // TestInterfaceEmpty is used as a stub interface type, for testing behavior
    // that should not depend on particular type (beyond "interface or not").
    // read only
    readonly attribute DOMString readonlyStringAttribute;
    readonly attribute TestInterfaceEmpty readonlyTestInterfaceEmptyAttribute;
    readonly attribute long readonlyLongAttribute;
    // Basic types
    attribute Date dateAttribute;
    attribute DOMString stringAttribute;
    attribute DOMTimeStamp domTimeStampAttribute;
    attribute boolean booleanAttribute;
    attribute byte byteAttribute;
    attribute double doubleAttribute;
    attribute float floatAttribute;
    attribute long longAttribute;
    attribute long long longLongAttribute;
    attribute octet octetAttribute;
    attribute short shortAttribute;
    attribute unrestricted double unrestrictedDoubleAttribute;
    attribute unrestricted float unrestrictedFloatAttribute;
    attribute unsigned long unsignedLongAttribute;
    attribute unsigned long long unsignedLongLongAttribute;
    attribute unsigned short unsignedShortAttribute;
    // Interface type
    attribute TestInterfaceEmpty testInterfaceEmptyAttribute;
    // Self-reference
    attribute TestObject testObjectAttribute;
    // Callback function type
    attribute VoidCallbackFunction voidCallbackFunctionAttribute;
    attribute AnyCallbackFunctionOptionalAnyArg anyCallbackFunctionOptionalAnyArgAttribute;
    // Names that begin with an acronym
    attribute long cssAttribute;
    attribute long imeAttribute;
    attribute long svgAttribute;
    attribute long xmlAttribute;
    // Non-wrapper types
    attribute NodeFilter nodeFilterAttribute;
    attribute SerializedScriptValue serializedScriptValueAttribute;
    attribute any anyAttribute;
    // Custom type conversions
    attribute Promise promiseAttribute;
    attribute Window windowAttribute;
    // DOM Node types
    attribute Document documentAttribute;
    attribute DocumentFragment documentFragmentAttribute;
    attribute DocumentType documentTypeAttribute;
    attribute Element elementAttribute;
    attribute Node nodeAttribute;
    attribute ShadowRoot shadowRootAttribute;
    // Typed arrays
    attribute ArrayBuffer arrayBufferAttribute;
    attribute Float32Array float32ArrayAttribute;
    attribute Uint8Array uint8ArrayAttribute;
    // Exceptions for is_keep_alive_for_gc
    readonly attribute TestInterfaceEmpty self;
    readonly attribute EventTarget readonlyEventTargetAttribute;
    readonly attribute EventTarget? readonlyEventTargetOrNullAttribute;
    readonly attribute Window readonlyWindowAttribute;
    readonly attribute HTMLCollection htmlCollectionAttribute;
    readonly attribute HTMLElement htmlElementAttribute;
    // Arrays
    attribute DOMString[] stringArrayAttribute;
    attribute TestInterfaceEmpty[] testInterfaceEmptyArrayAttribute;
    attribute float[] floatArrayAttribute;
    // Nullable attributes
    attribute DOMString? stringOrNullAttribute;
    attribute long? longOrNullAttribute;
    attribute TestInterface? testInterfaceOrNullAttribute;
    // Enumerations
    attribute TestEnum testEnumAttribute;
    // Static attributes
    static attribute DOMString staticStringAttribute;
    static attribute long staticLongAttribute;
    // Exceptional type
    attribute EventHandler eventHandlerAttribute;

    // Extended attributes
    [LogActivity, LogAllWorlds] attribute long activityLoggingAccessForAllWorldsLongAttribute;
    [LogActivity=GetterOnly, LogAllWorlds] attribute long activityLoggingGetterForAllWorldsLongAttribute;
    [LogActivity=SetterOnly, LogAllWorlds] attribute long activityLoggingSetterForAllWorldsLongAttribute;
    [CachedAttribute=isValueDirty] attribute any cachedAttributeAnyAttribute;
    [CallWith=ExecutionContext] attribute any callWithExecutionContextAnyAttribute;
    [CallWith=ScriptState] attribute any callWithScriptStateAnyAttribute;
    [CallWith=ExecutionContext|ScriptState] attribute any callWithExecutionContextAndScriptStateAnyAttribute;
    [CheckSecurity=Node] readonly attribute Document checkSecurityForNodeReadonlyDocumentAttribute; // All uses are read only
    [Conditional=CONDITION] attribute long conditionalLongAttribute;
    [Conditional=CONDITION_1&CONDITION_2] attribute long conditionalAndLongAttribute;
    [Conditional=CONDITION_1|CONDITION_2] attribute long conditionalOrLongAttribute;
    // Constructors: FIXME: replace suffix with [ConstructorAttribute]
    attribute TestInterfaceEmptyConstructor testInterfaceEmptyConstructorAttribute;
    [DeprecateAs=deprecatedTestInterfaceEmptyConstructorAttribute] attribute TestInterfaceEmptyConstructor testInterfaceEmptyConstructorAttribute;
    [MeasureAs=FeatureName] attribute TestInterfaceEmptyConstructor measureAsFeatureNameTestInterfaceEmptyConstructorAttribute;
    [Custom] attribute object customObjectAttribute;
    [Custom=Getter] attribute long customGetterLongAttribute;
    [Custom=Getter] readonly attribute object customGetterReadonlyObjectAttribute;
    [Custom=Setter] attribute long customSetterLongAttribute;
    [Conditional=CONDITION, Custom] attribute long customLongAttribute;
    [CustomElementCallbacks] readonly attribute long customElementsCallbacksReadonlyLongAttribute;
    [DeprecateAs=LongAttribute] attribute long deprecatedLongAttribute;
    [EnforceRange] attribute long enforceRangeLongAttribute;
    [ExposeJSAccessors] attribute long exposeJSAccessorsLongAttribute;
    [ImplementedAs=implementedAsName] attribute long implementedAsLongAttribute;
    [Custom, ImplementedAs=implementedAsNameWithCustom] attribute long customImplementedAsLongAttribute;
    [Custom=Getter, ImplementedAs=implementedAsNameWithCustomGetter] attribute long customGetterImplementedAsLongAttribute;
    [Custom=Setter, ImplementedAs=implementedAsNameWithCustomGetter] attribute long customSetterImplementedAsLongAttribute;
    [MeasureAs=TestFeature] attribute long measureAsLongAttribute;
    [NotEnumerable] attribute long notEnumerableLongAttribute;
    [PerContextEnabled=FeatureName] attribute long perContextEnabledLongAttribute;
    [PerWorldBindings] readonly attribute TestInterfaceEmpty perWorldBindingsReadonlyTestInterfaceEmptyAttribute;
    [LogActivity, LogAllWorlds, PerWorldBindings] attribute long activityLoggingAccessPerWorldBindingsLongAttribute;
    [LogActivity, PerWorldBindings] attribute long activityLoggingAccessForIsolatedWorldsPerWorldBindingsLongAttribute;
    [LogActivity=GetterOnly, LogAllWorlds, PerWorldBindings] attribute long activityLoggingGetterPerWorldBindingsLongAttribute;
    [LogActivity=GetterOnly, PerWorldBindings] attribute long activityLoggingGetterForIsolatedWorldsPerWorldBindingsLongAttribute;
    [PutForwards=href] readonly attribute TestNode location;
    [PutForwards=hrefThrows] readonly attribute TestNode locationWithException;
    [PutForwards=hrefCallWith] readonly attribute TestNode locationWithCallWith;
    [PerWorldBindings, PutForwards=href] readonly attribute TestNode locationWithPerWorldBindings;
    [PutForwards=attr1] readonly attribute TestInterfaceGarbageCollected locationGarbageCollected;
    [PutForwards=attr1] readonly attribute TestInterfaceWillBeGarbageCollected locationWillBeGarbageCollected;
    [RaisesException] attribute long raisesExceptionLongAttribute;
    [RaisesException=Getter] attribute long raisesExceptionGetterLongAttribute;
    [RaisesException=Setter] attribute long setterRaisesExceptionLongAttribute;
    [RaisesException] attribute TestInterfaceEmpty raisesExceptionTestInterfaceEmptyAttribute;
    [CachedAttribute=isValueDirty, RaisesException] attribute any cachedAttributeRaisesExceptionGetterAnyAttribute;
    [Reflect] attribute TestInterface reflectTestInterfaceAttribute;
    [Reflect=reflectedNameAttribute] attribute TestInterface reflectReflectedNameAttributeTestAttribute;
    // [Reflect] exceptional types: exceptional getters, exceptional setters,
    // or range checking for unsigned
    [Reflect] attribute boolean reflectBooleanAttribute;
    [Reflect] attribute long reflectLongAttribute;
    [Reflect] attribute unsigned short reflectUnsignedShortAttribute;
    [Reflect] attribute unsigned long reflectUnsignedLongAttribute;
    // [Reflect] exceptional names
    [Reflect] attribute DOMString id;
    [Reflect] attribute DOMString name;
    [Reflect] attribute DOMString class;
    [Reflect=id] attribute DOMString reflectedId;
    [Reflect=name] attribute DOMString reflectedName;
    [Reflect=class] attribute DOMString reflectedClass;
    // Limited value attributes and enumerated attributes
    [Reflect, ReflectOnly="unique"] attribute DOMString limitedToOnlyOneAttribute;
    [Reflect, ReflectOnly="Per"|"Paal"|"Espen"] attribute DOMString limitedToOnlyAttribute;
    [Reflect=other, ReflectOnly="Value1"|"Value2" ] attribute DOMString limitedToOnlyOtherAttribute;
    [Reflect, ReflectOnly="rsa"|"dsa", ReflectMissing="rsa"] attribute DOMString limitedWithMissingDefaultAttribute;
    [Reflect, ReflectOnly="ltr"|"rtl"|"auto", ReflectMissing="auto", ReflectInvalid="ltr"] attribute DOMString limitedWithInvalidMissingDefaultAttribute;
    [Reflect, ReflectOnly="anonymous"|"use-credentials", ReflectEmpty="anonymous", ReflectInvalid="anonymous"] readonly attribute DOMString corsSettingAttribute;
    [Reflect, ReflectOnly="empty"|"missing"|"invalid"|"a-normal", ReflectEmpty="empty", ReflectMissing="missing", ReflectInvalid="invalid"] readonly attribute DOMString limitedWithEmptyMissingInvalidAttribute;

    [Replaceable] readonly attribute long replaceableReadonlyLongAttribute;
    [Replaceable, PutForwards=href] readonly attribute TestNode locationReplaceable;
    [RuntimeEnabled=FeatureName] attribute long runtimeEnabledLongAttribute;
    [PerContextEnabled=FeatureName, RuntimeEnabled=FeatureName] attribute long perContextEnabledRuntimeEnabledLongAttribute;
    [Conditional=CONDITION, RuntimeEnabled=FeatureName] attribute long conditionalRuntimeEnabledLongAttribute;
    [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString setterCallWithActiveWindowAndFirstWindowStringAttribute;
    [SetterCallWith=ExecutionContext] attribute DOMString setterCallWithExecutionContextStringAttribute;
    [TreatNullAs=NullString] attribute DOMString treatNullAsNullStringStringAttribute;
    [TreatReturnedNullStringAs=Null] attribute DOMString treatReturnedNullStringAsNullStringAttribute;
    [TreatReturnedNullStringAs=Undefined] attribute DOMString treatReturnedNullStringAsUndefinedStringAttribute;
    [TypeChecking=Interface|Nullable] attribute float typeCheckingInterfaceNullableStringFloatAttribute; // nop for non-interface types
    [TypeChecking=Interface] attribute TestInterface typeCheckingInterfaceTestInterfaceAttribute;
    [TypeChecking=Nullable] attribute TestInterface? typeCheckingNullableTestInterfaceOrNullAttribute;
    [TypeChecking=Interface|Nullable] attribute TestInterface? typeCheckingInterfaceNullableTestInterfaceOrNullAttribute;
    [Reflect, URL] attribute DOMString urlStringAttribute;
    [Reflect=reflectUrlAttribute, URL] attribute DOMString urlStringAttribute;
    [Unforgeable] attribute long unforgeableLongAttribute;


    // Methods
    //
    // Naming convention:
    // ReturnType returnTypeMethodTypeName1ArgTypeName2Arg(Type1 typeName1Arg, Type2 typeName2Arg);
    // E.g.,
    // void voidMethodStringArgLongArrayArg(DOMString stringArg, long[] longArrayArg);
    void voidMethod();
    static void staticVoidMethod();

    // Types
    // Basic types
    Date dateMethod();
    DOMString stringMethod();
    DOMTimeStamp readonlyDOMTimeStampMethod();
    boolean booleanMethod();
    byte byteMethod();
    double doubleMethod();
    float floatMethod();
    long longMethod();
    long long longLongMethod();
    octet octetMethod();
    short shortMethod();
    unsigned long unsignedLongMethod();
    unsigned long long unsignedLongLongMethod();
    unsigned short unsignedShortMethod();

    void voidMethodDateArg(Date dateArg);
    void voidMethodStringArg(DOMString stringArg);
    void voidMethodDOMTimeStampArg(DOMTimeStamp domTimeStampArg);
    void voidMethodBooleanArg(boolean booleanArg);
    void voidMethodByteArg(byte byteArg);
    void voidMethodDoubleArg(double doubleArg);
    void voidMethodFloatArg(float floatArg);
    void voidMethodLongArg(long longArg);
    void voidMethodLongLongArg(long long longLongArg);
    void voidMethodOctetArg(octet octetArg);
    void voidMethodShortArg(short shortArg);
    void voidMethodUnsignedLongArg(unsigned long unsignedLongArg);
    void voidMethodUnsignedLongLongArg(unsigned long long unsignedLongLongArg);
    void voidMethodUnsignedShortArg(unsigned short unsignedShortArg);
    // Interface types
    TestInterfaceEmpty testInterfaceEmptyMethod();
    void voidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
    void voidMethodLongArgTestInterfaceEmptyArg(long longArg, TestInterfaceEmpty testInterfaceEmptyArg);
    // Callback function type
    VoidCallbackFunction voidCallbackFunctionMethod();
    AnyCallbackFunctionOptionalAnyArg anyCallbackFunctionOptionalAnyArgMethod();
    void voidMethodVoidCallbackFunctionArg(VoidCallbackFunction voidCallbackFunctionArg);
    void voidMethodAnyCallbackFunctionOptionalAnyArg(AnyCallbackFunctionOptionalAnyArg anyCallbackFunctionOptionalAnyArgArg);
    // Custom type conversions
    CompareHow compareHowMethod();
    any anyMethod();
    void voidMethodCompareHowArg(CompareHow compareHowArg);
    void voidMethodEventTargetArg(EventTarget eventTargetArg);
    void voidMethodMediaQueryListListenerArg(MediaQueryListListener mediaQueryListListenerArg);
    void voidMethodAnyArg(any anyArg);
    // DOM node types
    void voidMethodAttrArg(Attr attrArg);
    void voidMethodDocumentArg(Document documentArg);
    void voidMethodDocumentTypeArg(DocumentType documentTypeArg);
    void voidMethodElementArg(Element elementArg);
    void voidMethodNodeArg(Node nodeArg);
    // Typed arrays
    ArrayBuffer arrayBufferMethod();
    ArrayBufferView arrayBufferViewMethod();
    Float32Array float32ArrayMethod();
    Int32Array int32ArrayMethod();
    Uint8Array uint8ArrayMethod();
    void voidMethodArrayBufferArg(ArrayBuffer arrayBufferArg);
    void voidMethodArrayBufferOrNullArg(ArrayBuffer? arrayBufferArg);
    void voidMethodArrayBufferViewArg(ArrayBufferView arrayBufferViewArg);
    void voidMethodFloat32ArrayArg(Float32Array float32ArrayArg);
    void voidMethodInt32ArrayArg(Int32Array int32ArrayArg);
    void voidMethodUint8ArrayArg(Uint8Array uint8ArrayArg);
    // Arrays
    long[] longArrayMethod();
    DOMString[] stringArrayMethod();
    TestInterfaceEmpty[] testInterfaceEmptyArrayMethod();
    void voidMethodArrayLongArg(long[] arrayLongArg);
    void voidMethodArrayStringArg(DOMString[] arrayStringArg);
    void voidMethodArrayTestInterfaceEmptyArg(TestInterfaceEmpty[] arrayTestInterfaceEmptyArg);
    // Sequences
    sequence<long> longSequenceMethod();
    sequence<DOMString> stringSequenceMethod();
    sequence<TestInterfaceEmpty> testInterfaceEmptySequenceMethod();
    void voidMethodSequenceLongArg(sequence<long> longSequenceArg);
    void voidMethodSequenceStringArg(sequence<DOMString> stringSequenceArg);
    void voidMethodSequenceTestInterfaceEmptyArg(sequence<TestInterfaceEmpty> testInterfaceEmptySequenceArg);
    // Nullable types
    // Currently only used on interface type arguments
    void voidMethodTestInterfaceEmptyOrNullArg(TestInterfaceEmpty? nullableTestInterfaceEmptyArg);
    // Callback interface types
    void voidMethodTestCallbackInterfaceArg(TestCallbackInterface testCallbackInterfaceArg);
    void voidMethodOptionalTestCallbackInterfaceArg(optional TestCallbackInterface optionalTestCallbackInterfaceArg);
    void voidMethodTestCallbackInterfaceOrNullArg(TestCallbackInterface? testCallbackInterfaceArg);
    // Enumerations
    TestEnum testEnumMethod();
    void voidMethodTestEnumArg(TestEnum testEnumTypeArg);
    // Exceptional types
    Dictionary dictionaryMethod();
    NodeFilter nodeFilterMethod();
    Promise promiseMethod();
    SerializedScriptValue serializedScriptValueMethod();
    XPathNSResolver xPathNSResolverMethod();
    void voidMethodDictionaryArg(Dictionary dictionaryArg);
    void voidMethodEventListenerArg(EventListener eventListenerArg);
    void voidMethodNodeFilterArg(NodeFilter nodeFilterArg);
    void voidMethodPromiseArg(Promise promiseArg);
    void voidMethodSerializedScriptValueArg(SerializedScriptValue serializedScriptValueArg);
    void voidMethodXPathNSResolverArg(XPathNSResolver xPathNSResolverArg);
    void voidMethodDictionarySequenceArg(sequence<Dictionary> dictionarySequenceArg);

    // Arguments
    void voidMethodStringArgLongArg(DOMString stringArg, long longArg);
    // Optional arguments
    void voidMethodOptionalStringArg(optional DOMString optionalStringArg);
    void voidMethodOptionalTestInterfaceEmptyArg(optional TestInterfaceEmpty optionalTestInterfaceEmptyArg);
    void voidMethodOptionalLongArg(optional long optionalLongArg);
    DOMString stringMethodOptionalLongArg(optional long optionalLongArg);
    TestInterfaceEmpty testInterfaceEmptyMethodOptionalLongArg(optional long optionalLongArg);
    long longMethodOptionalLongArg(optional long optionalLongArg);
    void voidMethodLongArgOptionalLongArg(long longArg, optional long optionalLongArg);
    void voidMethodLongArgOptionalLongArgOptionalLongArg(long longArg, optional long optionalLongArg1, optional long optionalLongArg2);
    void voidMethodLongArgOptionalTestInterfaceEmptyArg(long longArg, optional TestInterfaceEmpty optionalTestInterfaceEmpty);
    void voidMethodTestInterfaceEmptyArgOptionalLongArg(TestInterfaceEmpty optionalTestInterfaceEmpty, optional long longArg);
    // Optional arguments: exceptional case
    void voidMethodOptionalDictionaryArg(optional Dictionary optionalDictionaryArg);

    // Variadic operations
    void voidMethodVariadicStringArg(DOMString... variadicStringArgs);
    void voidMethodStringArgVariadicStringArg(DOMString stringArg, DOMString... variadicStringArgs);
    void voidMethodVariadicTestInterfaceEmptyArg(TestInterfaceEmpty... variadicTestInterfaceEmptyArgs);
    void voidMethodTestInterfaceEmptyArgVariadicTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg, TestInterfaceEmpty... variadicTestInterfaceEmptyArgs);
    void voidMethodVariadicTestInterfaceGarbageCollectedArg(TestInterfaceGarbageCollected... variadicTestInterfaceGarbageCollectedArg);
    void voidMethodVariadicTestInterfaceWillBeGarbageCollectedArg(TestInterfaceWillBeGarbageCollected... variadicTestInterfaceWillBeGarbageCollectedArg);

    // Overloaded methods
    void overloadedMethodA(long longArg);
    void overloadedMethodA(long longArg1, long longArg2);
    void overloadedMethodB(long longArg);
    void overloadedMethodB(long longArg1, optional long longArg2);
    void overloadedMethodC(long longArg);
    void overloadedMethodC(long longArg, long... longArgs);
    void overloadedMethodD(long longArg);
    void overloadedMethodD(TestInterfaceEmpty testInterfaceEmptyArg);
    void overloadedMethodE(long longArg);
    void overloadedMethodE(long[] longArrayArg);
    void overloadedMethodF(long longArg);
    void overloadedMethodF(TestInterfaceEmpty? testInterfaceEmptyOrNullArg);
    void overloadedMethodG();
    void overloadedMethodG([LegacyOverloadString] DOMString legacyOverloadStringStringArg);
    void overloadedMethodH();
    void overloadedMethodH(TestCallbackInterface testCallbackInterfaceArg);
    // FIXME: Should be in order double, Dictionary, but Blink implementation of
    // overload resolution can't handle this. http://crbug.com/293561
    void overloadedMethodI(Dictionary dictionaryArg); // Non-wrapper type
    void overloadedMethodI(double doubleArg);
    void overloadedMethodJ(long longArg);
    void overloadedMethodJ([Default=Null] TestInterfaceEmpty? testInterfaceEmptyOrNullArg);


    [PerWorldBindings] void overloadedPerWorldBindingsMethod();
    [PerWorldBindings] void overloadedPerWorldBindingsMethod(long longArg);

    static void overloadedStaticMethod(long longArg);
    static void overloadedStaticMethod(long longArg1, long longArg2);

    // Extended attributes for arguments
    // [Clamp]
    void voidMethodClampUnsignedShortArg([Clamp] unsigned short clampUnsignedShortArg);
    void voidMethodClampUnsignedLongArg([Clamp] unsigned long clampUnsignedLongArg);
    // [Default]
    void voidMethodDefaultUndefinedTestInterfaceEmptyArg([Default=Undefined] optional TestInterfaceEmpty defaultUndefinedTestInterfaceEmptyArg);
    void voidMethodDefaultUndefinedLongArg([Default=Undefined] optional long defaultUndefinedLongArg);
    void voidMethodDefaultUndefinedStringArg([Default=Undefined] optional DOMString defaultUndefinedStringArg);
    void voidMethodDefaultNullStringStringArg([Default=NullString] optional DOMString defaultNullStringStringArg);
    // [EnforceRange]
    void voidMethodEnforceRangeLongArg([EnforceRange] long enforceRangeLongArg);
    // [TreatNullAs], [TreatUndefinedAs]
    void voidMethodTreatNullAsNullStringStringArg([TreatNullAs=NullString] DOMString treatNullAsNullStringStringArg);
    void voidMethodTreatNullAsNullStringTreatUndefinedAsNullStringStringArg([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString treatNullAsNullStringStringArg);

    // Extended attributes for methods
    [LogActivity, LogAllWorlds] void activityLoggingAccessForAllWorldsMethod();
    [CallWith=ExecutionContext] void callWithExecutionContextVoidMethod();
    [CallWith=ScriptState] void callWithScriptStateVoidMethod();
    [CallWith=ScriptState] long callWithScriptStateLongMethod();
    [CallWith=ScriptState&ExecutionContext] void callWithScriptStateExecutionContextVoidMethod();
    [CallWith=ScriptState&ScriptArguments] void callWithScriptStateScriptArgumentsVoidMethod();
    [CallWith=ScriptState&ScriptArguments] void callWithScriptStateScriptArgumentsVoidMethodOptionalBooleanArg(optional boolean optionalBooleanArg);
    [CallWith=ActiveWindow] void callWithActiveWindow();
    [CallWith=ActiveWindow&FirstWindow] void callWithActiveWindowScriptWindow();
    [CheckSecurity=Node] void checkSecurityForNodeVoidMethod();
    [Conditional=CONDITION] void conditionalConditionVoidMethod();
    [Conditional=CONDITION_1&CONDITION_2] void conditionalCondition1AndCondition2VoidMethod();
    [Conditional=CONDITION] static void conditionalConditionStaticVoidMethod();
    [Custom] void customVoidMethod();
    [Conditional=CONDITION, Custom] void conditionalConditionCustomVoidMethod();
    [CustomElementCallbacks] void customElementCallbacksVoidMethod();
    [DeprecateAs=voidMethod] void deprecatedVoidMethod();
    [DoNotCheckSignature] void doNotCheckSignatureVoidMethod();
    [ImplementedAs=implementedAsMethodName] void implementedAsVoidMethod();
    [MeasureAs=TestFeature] void measureAsVoidMethod();
    [NotEnumerable] void notEnumerableVoidMethod();
    [PerContextEnabled=FeatureName] void perContextEnabledVoidMethod();
    [PerWorldBindings] void perWorldBindingsVoidMethod();
    [PerWorldBindings] void perWorldBindingsVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
    [LogActivity, LogAllWorlds, PerWorldBindings] void activityLoggingForAllWorldsPerWorldBindingsVoidMethod();
    [LogActivity, PerWorldBindings] void activityLoggingForIsolatedWorldsPerWorldBindingsVoidMethod();
    [RaisesException] void raisesExceptionVoidMethod();
    [RaisesException] DOMString raisesExceptionStringMethod();
    [RaisesException] void raisesExceptionVoidMethodOptionalLongArg(optional long optionalLongArg);
    [RaisesException] void raisesExceptionVoidMethodTestCallbackInterfaceArg(TestCallbackInterface testCallbackInterfaceArg);
    [RaisesException] void raisesExceptionVoidMethodOptionalTestCallbackInterfaceArg(optional TestCallbackInterface optionalTestCallbackInterfaceArg);
    [RaisesException] TestInterfaceEmpty raisesExceptionTestInterfaceEmptyVoidMethod();
    [CallWith=ExecutionContext, RaisesException] void callWithExecutionContextRaisesExceptionVoidMethodLongArg(long longArg);
    [ReadOnly] void readOnlyVoidMethod();
    [NotEnumerable, ReadOnly] void notEnumerableReadOnlyVoidMethod();
    [RuntimeEnabled=FeatureName] void runtimeEnabledVoidMethod();
    [PerWorldBindings, RuntimeEnabled=FeatureName] void perWorldBindingsRuntimeEnabledVoidMethod();
    [TreatReturnedNullStringAs=Null] DOMString treatReturnedNullStringAsNullStringMethod();
    [TreatReturnedNullStringAs=Undefined] DOMString treatReturnedNullStringAsUndefinedStringMethod();
    [TypeChecking=Interface] void typeCheckingInterfaceVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
    [TypeChecking=Nullable] void typeCheckingNullableVoidMethodTestInterfaceEmptyOrNullArg(TestInterfaceEmpty? testInterfaceEmptyOrNullArg);
    [TypeChecking=Interface|Nullable] void typeCheckingInterfaceNullableVoidMethodTestInterfaceEmptyOrNullArg(TestInterfaceEmpty? testInterfaceEmptyOrNullArg);
    [TypeChecking=Unrestricted] void typeCheckingUnrestrictedVoidMethodFloatArgDoubleArg(float floatArg, double doubleArg);
    [Unforgeable] void unforgeableVoidMethod();
    void voidMethodTestInterfaceGarbageCollectedSequenceArg(sequence<TestInterfaceGarbageCollected> testInterfaceGarbageCollectedSequenceArg);
    void voidMethodTestInterfaceGarbageCollectedArrayArg(TestInterfaceGarbageCollected[] testInterfaceGarbageCollectedArrayArg);
    void voidMethodTestInterfaceWillBeGarbageCollectedSequenceArg(sequence<TestInterfaceWillBeGarbageCollected> testInterfaceWillBeGarbageCollectedSequenceArg);
    void voidMethodTestInterfaceWillBeGarbageCollectedArrayArg(TestInterfaceWillBeGarbageCollected[] testInterfaceWillBeGarbageCollectedArrayArg);

    // Extended attributes on referenced interfaces
    // (not self; self-reference tests at interface themselves)
    attribute TestInterface testInterfaceAttribute; // [ImplementedAs]
    attribute TestInterfaceGarbageCollected testInterfaceGarbageCollectedAttribute; // [GarbageCollected]
    attribute TestInterfaceGarbageCollected? testInterfaceGarbageCollectedOrNullAttribute; // [GarbageCollected]
    attribute TestInterfaceWillBeGarbageCollected testInterfaceWillBeGarbageCollectedAttribute; // [WillBeGarbageCollected]
    attribute TestInterfaceWillBeGarbageCollected? testInterfaceWillBeGarbageCollectedOrNullAttribute; // [WillBeGarbageCollected]
};