1/*
2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 *     * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *     * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 *     * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31enum TestEnum {"", "EnumValue1", "EnumValue2", "EnumValue3"};
32
33interface TestObjectPython {
34    // Constants
35    const unsigned short CONST_VALUE_0 = 0;
36    const unsigned short CONST_VALUE_1 = 1;
37    const unsigned short CONST_VALUE_2 = 2;
38    const unsigned short CONST_VALUE_4 = 4;
39    const unsigned short CONST_VALUE_8 = 8;
40    const short CONST_VALUE_9 = -1;
41    const DOMString CONST_VALUE_10 = "my constant string";
42    const unsigned short CONST_VALUE_11 = 0xffffffff;
43    const unsigned short CONST_VALUE_12 = 0x01;
44    const unsigned short CONST_VALUE_13 = 0X20;
45    const unsigned short CONST_VALUE_14 = 0x1abc;
46    const unsigned short CONST_VALUE_15 = 010;
47    const unsigned short CONST_VALUE_16 = -010;
48    const unsigned short CONST_VALUE_16 = -0x1A;
49    const unsigned short CONST_VALUE_17 = -0X1a;
50
51    // Extended attributes
52    [DeprecateAs=Constant] const short DEPRECATED_CONSTANT = 1;
53    [RuntimeEnabled=FeatureName] const short FEATURE_ENABLED_CONST = 1;
54    [Reflect=CONST_IMPL] const short CONST_JAVASCRIPT = 1;
55
56
57    // Attributes
58    // TestInterfaceEmpty is used as a stub interface type, for testing behavior
59    // that should not depend on particular type (beyond "interface or not").
60    // read only
61    readonly attribute DOMString readonlyStringAttribute;
62    readonly attribute TestInterfaceEmpty readonlyTestInterfaceEmptyAttribute;
63    readonly attribute long readonlyLongAttribute;
64    // Basic types
65    attribute Date dateAttribute;
66    attribute DOMString stringAttribute;
67    readonly attribute DOMTimeStamp readonlyDOMTimeStampAttribute;  // FIXME: Perl CG doesn't translate typedef DOMTimeStamp -> unsigned long long; remove readonly once moved to Python-only
68    attribute boolean booleanAttribute;
69    attribute byte byteAttribute;
70    attribute double doubleAttribute;
71    attribute float floatAttribute;
72    attribute long longAttribute;
73    attribute long long longLongAttribute;
74    attribute octet octetAttribute;
75    attribute short shortAttribute;
76    attribute unsigned long unsignedLongAttribute;
77    attribute unsigned long long unsignedLongLongAttribute;
78    attribute unsigned short unsignedShortAttribute;
79    // Names that with an acronym
80    attribute long cssAttribute;
81    attribute long imeAttribute;
82    attribute long svgAttribute;
83    attribute long xmlAttribute;
84    // Non-wrapper types
85    attribute NodeFilter nodeFilterAttribute;
86    attribute SerializedScriptValue serializedScriptValueAttribute;
87    attribute any anyAttribute;
88    // Custom type conversions
89    attribute Promise promiseAttribute;
90    // DOM Node types
91    attribute Document documentAttribute;
92    attribute DocumentFragment documentFragmentAttribute;
93    attribute DocumentType documentTypeAttribute;
94    attribute Element elementAttribute;
95    attribute Entity entityAttribute;
96    attribute Node nodeAttribute;
97    attribute ShadowRoot shadowRootAttribute;
98    // Typed arrays
99    attribute ArrayBuffer arrayBufferAttribute;
100    attribute Float32Array float32ArrayAttribute;
101    attribute Uint8Array uint8ArrayAttribute;
102    // Usual case for is_keep_alive_for_gc
103    attribute TestInterfaceEmpty testInterfaceEmptyAttribute;
104    // Exceptions for is_keep_alive_for_gc
105    attribute TestInterfaceEmpty self;
106    readonly attribute Window readonlyWindowAttribute;  // FIXME: support [ImplementedAs] on interface
107    attribute HTMLCollection htmlCollectionAttribute;
108    attribute HTMLElement htmlElementAttribute;
109    // Arrays
110    attribute DOMString[] stringArrayAttribute;
111    attribute TestInterfaceEmpty[] testInterfaceEmptyArrayAttribute;
112    attribute float[] floatArrayAttribute;
113    // Nullable attributes
114    attribute DOMString? nullableStringAttribute;
115    attribute long? nullableLongAttribute;
116    // Enumerations
117    attribute TestEnum testEnumAttribute;
118    // Static attributes
119    static attribute DOMString staticStringAttribute;
120    static attribute long staticLongAttribute;
121    // Constructors
122    // attribute attribute TestSubObjConstructor TestSubObj;
123    attribute TestObjectAConstructor testObjectAConstructorAttribute;
124    // Exceptional type
125    attribute EventHandler eventHandlerAttribute;
126
127    // Extended attributes
128    [ActivityLogging=ForAllWorlds] attribute long activityLoggingAccessForAllWorldsLongAttribute;
129    [ActivityLogging=GetterForAllWorlds] attribute long activityLoggingGetterForAllWorldsLongAttribute;
130    [ActivityLogging=SetterForAllWorlds] attribute long activityLoggingSetterForAllWorldsLongAttribute;
131    [CachedAttribute=isValueDirty] attribute any cachedAttributeAnyAttribute;
132    [CallWith=ExecutionContext] attribute any callWithExecutionContextAnyAttribute;
133    [CheckSecurity=Node] readonly attribute Document checkSecurityForNodeReadonlyDocumentAttribute;  // All uses are read only
134    [Conditional=CONDITION] attribute long conditionalLongAttribute;
135    [Conditional=CONDITION_1&CONDITION_2] attribute long conditionalAndLongAttribute;
136    [Conditional=CONDITION_1|CONDITION_2] attribute long conditionalOrLongAttribute;
137    [Custom] attribute object customObjectAttribute;
138    [Custom=Getter] attribute long customGetterLongAttribute;
139    [Custom=Getter] readonly attribute object customGetterReadonlyObjectAttribute;
140    [Custom=Setter] attribute long customSetterLongAttribute;
141    [Conditional=CONDITION, Custom] attribute long customLongAttribute;
142    [CustomElementCallbacks] readonly attribute long customElementsCallbacksReadonlyLongAttribute;
143    [DeprecateAs=LongAttribute] attribute long deprecatedLongAttribute;
144    [EnforceRange] attribute long enforceRangeLongAttribute;
145    [ExposeJSAccessors] attribute long exposeJSAccessorsLongAttribute;
146    [RaisesException=Getter] attribute long getterRaisesExceptionLongAttribute;
147    [ImplementedAs=implementedAsName] attribute long implementedAsLongAttribute;
148    [Custom, ImplementedAs=implementedAsNameWithCustom] attribute long customImplementedAsLongAttribute;
149    [Custom=Getter, ImplementedAs=implementedAsNameWithCustomGetter] attribute long customGetterImplementedAsLongAttribute;
150    [Custom=Setter, ImplementedAs=implementedAsNameWithCustomGetter] attribute long customSetterImplementedAsLongAttribute;
151    [MeasureAs=TestFeature] attribute long measureAsLongAttribute;
152    [NotEnumerable] attribute long notEnumerableLongAttribute;
153    [PerContextEnabled=FeatureName] attribute long perContextEnabledLongAttribute;
154    [PerWorldBindings] attribute long perWorldBindingsLongAttribute;
155    [PerWorldBindings] readonly attribute long perWorldBindingsReadonlyLongAttribute;  // Separate read only attribute to check attribute configuration
156    [ActivityLogging=ForAllWorlds, PerWorldBindings] attribute long activityLoggingAccessPerWorldBindingsLongAttribute;
157    [ActivityLogging=ForIsolatedWorlds, PerWorldBindings] attribute long activityLoggingAccessForIsolatedWorldsPerWorldBindingsLongAttribute;
158    [ActivityLogging=GetterForAllWorlds, PerWorldBindings] attribute long activityLoggingGetterPerWorldBindingsLongAttribute;
159    [ActivityLogging=GetterForIsolatedWorlds, PerWorldBindings] attribute long activityLoggingGetterForIsolatedWorldsPerWorldBindingsLongAttribute;
160    [RaisesException] attribute long raisesExceptionLongAttribute;
161    [Reflect] attribute TestInterface reflectTestInterfaceAttribute;
162    [Reflect=reflectedNameAttribute] attribute TestInterface reflectReflectedNameAttributeTestAttribute;
163    // [Reflect] exceptional types: exceptional getters, exceptional setters,
164    // or range checking for unsigned
165    [Reflect] attribute boolean reflectBooleanAttribute;
166    [Reflect] attribute long reflectLongAttribute;
167    [Reflect] attribute unsigned short reflectUnsignedShortAttribute;
168    [Reflect] attribute unsigned long reflectUnsignedLongAttribute;
169    // [Reflect] exceptional names
170    [Reflect] attribute DOMString id;
171    [Reflect] attribute DOMString name;
172    [Reflect] attribute DOMString class;
173    [Reflect=id] attribute DOMString reflectedId;
174    [Reflect=name] attribute DOMString reflectedName;
175    [Reflect=class] attribute DOMString reflectedClass;
176    [Replaceable] readonly attribute long replaceableReadonlyLongAttribute;
177    [RuntimeEnabled=FeatureName] attribute long runtimeEnabledLongAttribute;
178    [Conditional=CONDITION, RuntimeEnabled=FeatureName] attribute long conditionalRuntimeEnabledLongAttribute;
179    [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString setterCallWithActiveWindowAndFirstWindowStringAttribute;
180    [RaisesException=Setter] attribute long setterRaisesExceptionLongAttribute;
181    [StrictTypeChecking] attribute float strictTypeCheckingFloatAttribute;  // nop for non-interface types
182    [StrictTypeChecking] attribute TestInterface strictTypeCheckingTestInterfaceAttribute;
183    [TreatNullAs=NullString] attribute DOMString treatNullAsNullStringStringAttribute;
184    [TreatReturnedNullStringAs=Null] attribute DOMString treatReturnedNullStringAsNullStringAttribute;
185    [TreatReturnedNullStringAs=Undefined] attribute DOMString treatReturnedNullStringAsUndefinedStringAttribute;
186    [Reflect, URL] attribute DOMString urlStringAttribute;
187    [Reflect=ReflectUrlAttribute, URL] attribute DOMString urlStringAttribute;
188    [Unforgeable] attribute long unforgeableLongAttribute;
189
190
191    // Methods
192    void voidMethod();
193    static void staticVoidMethod();
194
195    // Types
196    // Basic types
197    Date dateMethod();
198    DOMString stringMethod();
199    DOMTimeStamp readonlyDOMTimeStampMethod();
200    boolean booleanMethod();
201    byte byteMethod();
202    double doubleMethod();
203    float floatMethod();
204    long longMethod();
205    long long longLongMethod();
206    octet octetMethod();
207    short shortMethod();
208    unsigned long unsignedLongMethod();
209    unsigned long long unsignedLongLongMethod();
210    unsigned short unsignedShortMethod();
211
212    void voidMethodDateArg(Date dateArg);
213    void voidMethodStringArg(DOMString stringArg);
214    // void voidMethodDOMTimeStampArg(DOMTimeStamp domTimeStampArg);  // FIXME: Perl CG doesn't translate typedef DOMTimeStamp -> unsigned long long; uncomment once moved to Python-only
215    void voidMethodBooleanArg(boolean booleanArg);
216    void voidMethodByteArg(byte byteArg);
217    void voidMethodDoubleArg(double doubleArg);
218    void voidMethodFloatArg(float floatArg);
219    void voidMethodLongArg(long longArg);
220    void voidMethodLongLongArg(long long longLongArg);
221    void voidMethodOctetArg(octet octetArg);
222    void voidMethodShortArg(short shortArg);
223    void voidMethodUnsignedLongArg(unsigned long unsignedLongArg);
224    void voidMethodUnsignedLongLongArg(unsigned long long unsignedLongLongArg);
225    void voidMethodUnsignedShortArg(unsigned short unsignedShortArg);
226    // Interface types
227    TestInterfaceEmpty testInterfaceEmptyMethod();
228    void voidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
229    void voidMethodLongArgTestInterfaceEmptyArg(long longArg, TestInterfaceEmpty testInterfaceEmptyArg);
230    // Custom type conversions
231    CompareHow compareHowMethod();
232    any anyMethod();
233    void voidMethodMediaQueryListListenerArg(MediaQueryListListener mediaQueryListListenerArg);
234    void voidMethodCompareHowArg(CompareHow compareHowArg);
235    void voidMethodAnyArg(any anyArg);
236    // DOM node types
237    void voidMethodAttrArg(Attr attrArg);
238    void voidMethodDocumentArg(Document documentArg);
239    void voidMethodDocumentTypeArg(DocumentType documentTypeArg);
240    void voidMethodElementArg(Element elementArg);
241    void voidMethodNodeArg(Node nodeArg);
242    // Typed arrays
243    ArrayBuffer arrayBufferMethod();
244    ArrayBufferView arrayBufferViewMethod();
245    Float32Array float32ArrayMethod();
246    Int32Array int32ArrayMethod();
247    Uint8Array uint8ArrayMethod();
248    void voidMethodArrayBufferArg(ArrayBuffer arrayBufferArg);
249    void voidMethodArrayBufferViewArg(ArrayBufferView arrayBufferViewArg);
250    void voidMethodFloat32ArrayArg(Float32Array float32ArrayArg);
251    void voidMethodInt32ArrayArg(Int32Array int32ArrayArg);
252    void voidMethodUint8ArrayArg(Uint8Array uint8ArrayArg);
253    // Arrays
254    long[] longArrayMethod();
255    DOMString[] stringArrayMethod();
256    TestInterfaceEmpty[] testInterfaceEmptyArrayMethod();
257    void voidMethodArrayLongArg(long[] arrayLongArg);
258    void voidMethodArrayStringArg(DOMString[] arrayStringArg);
259    void voidMethodArrayTestInterfaceEmptyArg(TestInterfaceEmpty[] arrayTestInterfaceEmptyArg);
260    // Sequences
261    sequence<long> sequenceLongMethod();
262    sequence<DOMString> sequenceStringMethod();
263    sequence<TestInterfaceEmpty> sequenceTestInterfaceEmptyMethod();
264    void voidMethodSequenceLongArg(sequence<long> sequenceLongArg);
265    void voidMethodSequenceStringArg(sequence<DOMString> sequenceStringArg);
266    void voidMethodSequenceTestInterfaceEmptyArg(sequence<TestInterfaceEmpty> sequenceTestInterfaceEmptyArg);
267    // Nullable types
268    // Currently only used on interface type arguments
269    void voidMethodNullableStringArg(TestInterfaceEmpty? nullableTestInterfaceEmptyArg);
270    // Enumerations
271    TestEnum testEnumMethod();
272    void voidMethodTestEnumArg(TestEnum testEnumTypeArg);
273    // Exceptional types
274    Dictionary dictionaryMethod();
275    NodeFilter nodeFilterMethod();
276    Promise promiseMethod();
277    SerializedScriptValue serializedScriptValueMethod();
278    XPathNSResolver xPathNSResolverMethod();
279    void voidMethodDictionaryArg(Dictionary dictionaryArg);
280    void voidMethodNodeFilterArg(NodeFilter nodeFilterArg);
281    void voidMethodPromiseArg(Promise promiseArg);
282    void voidMethodSerializedScriptValueArg(SerializedScriptValue serializedScriptValueArg);
283    void voidMethodXPathNSResolverArg(XPathNSResolver xPathNSResolverArg);
284    void voidMethodSequenceDictionaryArg(sequence<Dictionary> sequenceDictionaryArg);
285
286    // Arguments
287    void voidMethodStringArgLongArg(DOMString stringArg, long longArg);
288    // Optional arguments
289    void voidMethodOptionalStringArg(optional DOMString optionalStringArg);
290    void voidMethodOptionalTestInterfaceEmptyArg(optional TestInterfaceEmpty optionalTestInterfaceEmptyArg);
291    void voidMethodOptionalLongArg(optional long optionalLongArg);
292    DOMString stringMethodOptionalLongArg(optional long optionalLongArg);
293    TestInterfaceEmpty testInterfaceEmptyMethodOptionalLongArg(optional long optionalLongArg);
294    long longMethodOptionalLongArg(optional long optionalLongArg);
295    void voidMethodLongArgOptionalLongArg(long longArg, optional long optionalLongArg);
296    void voidMethodLongArgOptionalLongArgOptionalLongArg(long longArg, optional long optionalLongArg1, optional long optionalLongArg2);
297    void voidMethodLongArgOptionalTestInterfaceEmptyArg(long longArg, optional TestInterfaceEmpty optionalTestInterfaceEmpty);
298    void voidMethodTestInterfaceEmptyArgOptionalLongArg(TestInterfaceEmpty optionalTestInterfaceEmpty, optional long longArg);
299    // Optional arguments: exceptional case
300    void voidMethodOptionalDictionaryArg(optional Dictionary optionalDictionaryArg);
301
302    // Variadic operations
303    void voidMethodVariadicStringArg(DOMString... variadicStringArgs);
304    void voidMethodStringArgVariadicStringArg(DOMString stringArg, DOMString... variadicStringArgs);
305    void voidMethodVariadicTestInterfaceEmptyArg(TestInterfaceEmpty... variadicTestInterfaceEmptyArgs);
306    void voidMethodTestInterfaceEmptyArgVariadicTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg, TestInterfaceEmpty... variadicTestInterfaceEmptyArgs);
307
308    // Overloaded methods
309    void overloadedMethodA(long longArg);
310    void overloadedMethodA(long longArg1, long longArg2);
311    void overloadedMethodB(long longArg);
312    void overloadedMethodB(long longArg1, optional long longArg2);
313    void overloadedMethodC(long longArg);
314    void overloadedMethodC(long longArg, long... longArgs);
315    void overloadedMethodD(long longArg);
316    void overloadedMethodD(TestInterfaceEmpty testInterfaceEmptyArg);
317    void overloadedMethodE(long longArg);
318    void overloadedMethodE(long[] longArrayArg);
319    void overloadedMethodF(long longArg);
320    void overloadedMethodF(TestInterfaceEmpty? testInterfaceEmptyNullableArg);
321    void overloadedMethodG();
322    void overloadedMethodG([StrictTypeChecking] DOMString strictTypeCheckingStringArg);
323
324    [PerWorldBindings] void overloadedPerWorldBindingsMethod();
325    [PerWorldBindings] void overloadedPerWorldBindingsMethod(long longArg);
326
327    static void overloadedStaticMethod(long longArg);
328    static void overloadedStaticMethod(long longArg1, long longArg2);
329
330    // Exceptional methods for EventListener
331    void addEventListener(DOMString type,
332                          EventListener listener,
333                          optional boolean useCapture);
334    void removeEventListener(DOMString type,
335                             EventListener listener,
336                             optional boolean useCapture);
337
338    // Extended attributes for arguments
339    // [Clamp]
340    void voidMethodClampUnsignedShortArg([Clamp] unsigned short clampUnsignedShortArg);
341    void voidMethodClampUnsignedLongArg([Clamp] unsigned long clampUnsignedLongArg);
342    // [Default]
343    void voidMethodDefaultUndefinedTestInterfaceEmptyArg([Default=Undefined] optional TestInterfaceEmpty defaultUndefinedTestInterfaceEmptyArg);
344    void voidMethodDefaultUndefinedLongArg([Default=Undefined] optional long defaultUndefinedLongArg);
345    void voidMethodDefaultUndefinedStringArg([Default=Undefined] optional DOMString defaultUndefinedStringArg);
346    void voidMethodDefaultNullStringStringArg([Default=NullString] optional DOMString defaultNullStringStringArg);
347    // [EnforceRange]
348    void voidMethodEnforceRangeLongArg([EnforceRange] long enforceRangeLongArg);
349    // [TreatNullAs], [TreatUndefinedAs]
350    void voidMethodTreatNullAsNullStringStringArg([TreatNullAs=NullString] DOMString treatNullAsNullStringStringArg);
351    void voidMethodTreatNullAsNullStringTreatUndefinedAsNullStringStringArg([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString treatNullAsNullStringStringArg);
352
353    // Extended attributes for methods
354    [ActivityLogging=ForAllWorlds] void activityLoggingAccessForAllWorldsMethod();
355    [CallWith=ScriptState] void callWithScriptStateVoidMethod();
356    [CallWith=ScriptState] long callWithScriptStateLongMethod();
357    [CallWith=ExecutionContext] void callWithExecutionContextVoidMethod();
358    [CallWith=ScriptState&ExecutionContext] void callWithScriptStateExecutionContextVoidMethod();
359    [CallWith=ScriptState&ScriptArguments] void callWithScriptStateScriptArgumentsVoidMethod();
360    [CallWith=ScriptState&ScriptArguments] void callWithScriptStateScriptArgumentsVoidMethodOptionalBooleanArg(optional boolean optionalBooleanArg);
361    [CallWith=ActiveWindow] void callWithActiveWindow();
362    [CallWith=ActiveWindow&FirstWindow] void callWithActiveWindowScriptWindow();
363    [CheckSecurity=Node] void checkSecurityForNodeVoidMethod();
364    [Conditional=CONDITION] void conditionalConditionVoidMethod();
365    [Conditional=CONDITION_1&CONDITION_2] void conditionalCondition1AndCondition2VoidMethod();
366    [Conditional=CONDITION] static void conditionalConditionStaticVoidMethod();
367    [Custom] void customVoidMethod();
368    [Conditional=CONDITION, Custom] void conditionalConditionCustomVoidMethod();
369    [CustomElementCallbacks] void customElementCallbacksVoidMethod();
370    [DeprecateAs=voidMethod] void deprecatedVoidMethod();
371    [DoNotCheckSignature] void doNotCheckSignatureVoidMethod();
372    [ImplementedAs=implementedAsMethodName] void implementedAsVoidMethod();
373    [MeasureAs=TestFeature] void measureAsVoidMethod();
374    [NotEnumerable] void notEnumerableVoidMethod();
375    [PerContextEnabled=FeatureName] void perContextEnabledVoidMethod();
376    [PerWorldBindings] void perWorldBindingsVoidMethod();
377    [ActivityLogging=ForAllWorlds, PerWorldBindings] void activityLoggingForAllWorldsPerWorldBindingsVoidMethod();
378    [ActivityLogging=ForIsolatedWorlds, PerWorldBindings] void activityLoggingForIsolatedWorldsPerWorldBindingsVoidMethod();
379    [PerWorldBindings] void perWorldBindingsVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
380    [RaisesException] void raisesExceptionVoidMethod();
381    [RaisesException] void raisesExceptionVoidMethodOptionalLongArg(optional long optionalLongArg);
382    [ReadOnly] void readOnlyVoidMethod();
383    [NotEnumerable, ReadOnly] void notEnumerableReadOnlyVoidMethod();
384    [RuntimeEnabled=FeatureName] void runtimeEnabledVoidMethod();
385    [PerWorldBindings, RuntimeEnabled=FeatureName] void perWorldBindingsRuntimeEnabledVoidMethod();
386    [StrictTypeChecking] void strictTypeCheckingVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
387    [TreatReturnedNullStringAs=Null] DOMString treatReturnedNullStringAsNullStringMethod();
388    [TreatReturnedNullStringAs=Undefined] DOMString treatReturnedNullStringAsUndefinedStringMethod();
389    [Unforgeable] void unforgeableVoidMethod();
390};
391