[WebIDL] Add support for [ImplementedAs] for EventHandler attributes
[WebKit-https.git] / Source / WebCore / bindings / scripts / test / TestObj.idl
1 /*
2  * Copyright (C) 2009 Google Inc. All rights reserved.
3  * Copyright (C) 2010 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary formstrArg, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1.  Redistributions of source code must retain the above copyright
10  *     notice, this list of conditions and the following disclaimer.
11  * 2.  Redistributions in binary form must reproduce the above copyright
12  *     notice, this list of conditions and the following disclaimer in the
13  *     documentation and/or other materials provided with the distribution.
14  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
15  *     its contributors may be used to endorse or promote products derived
16  *     from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 // This IDL file is for testing the bindings code generator and for tracking
31 // changes in its ouput.
32
33 enum TestEnumType { "", "EnumValue1", "EnumValue2", "EnumValue3" };
34
35 // Leading underscore on an enum should be removed.
36 enum _optional { "", "OptionalValue1", "OptionalValue2", "OptionalValue3" };
37
38 [
39     Constructor(TestCallback testCallback, TestCallbackFunction testCallbackFunction),
40     InterfaceName=TestObject
41 ] interface TestObj {
42     // Attributes
43     readonly attribute long            readOnlyLongAttr;
44     readonly attribute DOMString       readOnlyStringAttr;
45     readonly attribute TestObj         readOnlyTestObjAttr;
46     static readonly attribute long     staticReadOnlyLongAttr;
47     static attribute DOMString         staticStringAttr;
48     static readonly attribute TestSubObjConstructor TestSubObj;
49     [EnabledBySetting=TestSetting] attribute TestSubObjConstructor TestSubObjEnabledBySetting;
50     attribute TestEnumType             enumAttr;
51     attribute byte                     byteAttr;
52     attribute octet                    octetAttr;
53     attribute short                    shortAttr;
54     attribute unsigned short           unsignedShortAttr;
55     attribute long                     longAttr;
56     attribute long long                longLongAttr;
57     attribute unsigned long long       unsignedLongLongAttr;
58     attribute DOMString                stringAttr;
59     attribute TestObj                  testObjAttr;
60     [LenientThis] attribute TestObj    lenientTestObjAttr;
61     [Unforgeable] readonly attribute DOMString unforgeableAttr;
62     [TreatNullAs=EmptyString] attribute DOMString stringAttrTreatingNullAsEmptyString;
63
64     // WK_ucfirst, WK_lcfirst exceptional cases.
65     attribute TestObj                  XMLObjAttr;
66     attribute boolean                  create;
67
68     // Readonly Symbol typed attributes.
69     readonly attribute Symbol readOnlySymbolAttr;
70     static readonly attribute Symbol staticReadOnlySymbolAttr;
71
72     // Reflected DOM attributes
73     [Reflect] attribute DOMString reflectedStringAttr;
74     [Reflect] attribute long reflectedIntegralAttr;
75     [Reflect] attribute unsigned long reflectedUnsignedIntegralAttr;
76     [Reflect] attribute boolean reflectedBooleanAttr;
77     [Reflect, URL] attribute DOMString reflectedURLAttr;
78     [Reflect=customContentStringAttr] attribute DOMString reflectedStringAttr;
79     [Reflect=customContentIntegralAttr] attribute long reflectedCustomIntegralAttr;
80     [Reflect=customContentBooleanAttr] attribute boolean reflectedCustomBooleanAttr;
81     [Reflect=customContentURLAttr, URL] attribute DOMString reflectedCustomURLAttr;
82
83     // [EnabledAtRuntime] attributes and operations.
84     [Conditional=TEST_FEATURE, EnabledAtRuntime=TestFeature] attribute DOMString enabledAtRuntimeAttribute;
85     [Conditional=TEST_FEATURE, EnabledAtRuntime=TestFeature] void enabledAtRuntimeOperation(DOMString testParam);
86     [Conditional=TEST_FEATURE, EnabledAtRuntime=TestFeature] void enabledAtRuntimeOperation(long testParam);
87
88     // TypedArray attribute
89     attribute Float32Array typedArrayAttr;
90
91     iterable<DOMString, TestObj>;
92
93     // Methods
94     void    voidMethod();
95     void    voidMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
96     byte    byteMethod();
97     byte    byteMethodWithArgs(byte byteArg, DOMString strArg, TestObj objArg);
98     octet   octetMethod();
99     octet   octetMethodWithArgs(octet octetArg, DOMString strArg, TestObj objArg);
100     long    longMethod();
101     long    longMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
102     TestObj objMethod();
103     TestObj objMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
104     [Unforgeable] long unforgeableMethod();
105     void methodWithArgTreatingNullAsEmptyString([TreatNullAs=EmptyString] DOMString arg);
106
107     // Nullable String return values.
108     DOMString? nullableStringMethod();
109     static DOMString? nullableStringStaticMethod();
110     getter DOMString? nullableStringSpecialMethod(unsigned long index);
111
112     void methodWithSequenceArg(sequence<ScriptProfile> sequenceArg);
113     sequence<ScriptProfile> methodReturningSequence(long longArg);
114
115     void methodWithEnumArg(TestEnumType enumArg);
116     void methodWithOptionalEnumArgAndDefaultValue(optional TestEnumType enumArg = "EnumValue1");
117     [RaisesException] TestObj methodThatRequiresAllArgsAndThrows(DOMString strArg, TestObj objArg);
118
119     void serializedValue(SerializedScriptValue serializedArg);
120     void optionsObject(Dictionary oo, optional Dictionary ooo);
121
122     // Exceptions
123     [RaisesException] void methodWithException();
124     [RaisesExceptionWithMessage] void methodWithExceptionWithMessage();
125     [GetterRaisesException] attribute long attrWithGetterException;
126     [GetterRaisesExceptionWithMessage] attribute long attrWithGetterExceptionWithMessage;
127     [SetterRaisesException] attribute long attrWithSetterException;
128     [SetterRaisesExceptionWithMessage] attribute long attrWithSetterExceptionWithMessage;
129     [GetterRaisesException] attribute DOMString stringAttrWithGetterException;
130     [SetterRaisesException] attribute DOMString stringAttrWithSetterException;
131
132     // Strict type checking.
133     [StrictTypeChecking] attribute TestObj strictTypeCheckingAttribute;
134
135     // 'Custom' extended attribute
136     [Custom] attribute long            customAttr;
137     [Custom] void customMethod();
138     [Custom] void customMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
139
140     // 'JSBuiltin' extended attribute
141     [Conditional=Condition3, JSBuiltin] void jsBuiltinMethod();
142     [Conditional=Condition3, JSBuiltin] void jsBuiltinMethodWithArgs(long longArg, DOMString strArg, TestObj objArg);
143     [Conditional=Condition4, JSBuiltin] attribute TestObj jsBuiltinAttribute;
144     [Conditional=Condition4, JSBuiltin] readonly attribute TestObj jsBuiltinReadOnlyAttribute;
145
146     // Private extended attribute
147     [Private] DOMString privateMethod(DOMString argument);
148
149     void addEventListener(DOMString type, EventListener listener, optional boolean useCapture);
150     void removeEventListener(DOMString type, EventListener listener, optional boolean useCapture);
151     attribute EventHandler onfoo;
152     [ImplementedAs=onfoo] attribute EventHandler onwebkitfoo;
153
154     // 'CallWith' extended attribute
155     [CallWith=ScriptState] void withScriptStateVoid();
156     [CallWith=ScriptState] TestObj withScriptStateObj();
157     [CallWith=ScriptState, RaisesException] void withScriptStateVoidException();
158     [CallWith=ScriptState, RaisesException] TestObj withScriptStateObjException();
159     [CallWith=ScriptExecutionContext] void withScriptExecutionContext();
160     [CallWith=ScriptExecutionContext&ScriptState] void withScriptExecutionContextAndScriptState();
161     [CallWith=ScriptExecutionContext&ScriptState, RaisesException] TestObj withScriptExecutionContextAndScriptStateObjException();
162     [CallWith=  ScriptExecutionContext  &  ScriptState  ] TestObj withScriptExecutionContextAndScriptStateWithSpaces();
163     [CallWith=ScriptArguments&CallStack] void withScriptArgumentsAndCallStack();
164     [CallWith=Document] void withDocumentArgument();
165
166     [CallWith=ScriptState] attribute long withScriptStateAttribute;
167     [CallWith=ScriptState, SetterCallWith=ActiveWindow&FirstWindow] attribute long withCallWithAndSetterCallWithAttribute;
168     [CallWith=ScriptExecutionContext] attribute TestObj withScriptExecutionContextAttribute;
169     [CallWith=ScriptState, GetterRaisesException] attribute TestObj withScriptStateAttributeRaises;
170     [CallWith=ScriptExecutionContext, GetterRaisesException] attribute TestObj withScriptExecutionContextAttributeRaises;
171     [CallWith=ScriptExecutionContext&ScriptState] attribute TestObj withScriptExecutionContextAndScriptStateAttribute;
172     [CallWith=ScriptExecutionContext&ScriptState,GetterRaisesException] attribute TestObj withScriptExecutionContextAndScriptStateAttributeRaises;
173     [CallWith=  ScriptExecutionContext  &  ScriptState  ] attribute TestObj withScriptExecutionContextAndScriptStateWithSpacesAttribute;
174     [CallWith=ScriptArguments&CallStack] attribute TestObj withScriptArgumentsAndCallStackAttribute;
175
176     // Optional parameters.
177     void    methodWithOptionalArg(optional long opt);
178     void    methodWithOptionalArgAndDefaultValue(optional long opt = 666);
179     void    methodWithNonOptionalArgAndOptionalArg(long nonOpt, optional long opt);
180     void    methodWithNonOptionalArgAndTwoOptionalArgs(long nonOpt, optional long opt1, optional long opt2);
181     void    methodWithOptionalString(optional DOMString str);
182     void    methodWithOptionalStringAndDefaultValue(optional DOMString str = "foo");
183     void    methodWithOptionalStringIsUndefined([Default=Undefined] optional DOMString str);
184     void    methodWithOptionalStringIsNullString([Default=NullString] optional DOMString str);
185
186 #if defined(TESTING_JS)
187     // Callback interface parameters.
188     void    methodWithCallbackArg(TestCallback callback);
189     void    methodWithNonCallbackArgAndCallbackArg(long nonCallback, TestCallback callback);
190     void    methodWithCallbackAndOptionalArg(optional TestCallback callback);
191
192     // Callback function parameters.
193     void    methodWithCallbackFunctionArg(TestCallbackFunction callback);
194     void    methodWithNonCallbackArgAndCallbackFunctionArg(long nonCallback, TestCallbackFunction callback);
195     void    methodWithCallbackFunctionAndOptionalArg(optional TestCallbackFunction callback);
196
197     // static methods with 'Callback' extended attribute
198     static void    staticMethodWithCallbackAndOptionalArg(optional TestCallback callback);
199     static void    staticMethodWithCallbackArg(TestCallback callback);
200 #endif
201
202     // 'Conditional' extended attribute
203     [Conditional=Condition1] attribute long conditionalAttr1;
204     [Conditional=Condition1&Condition2] attribute long conditionalAttr2;
205     [Conditional=Condition1|Condition2] attribute long conditionalAttr3;
206
207     // 'Conditional' extended method
208     [Conditional=Condition1] DOMString conditionalMethod1();
209     [Conditional=Condition1&Condition2] void conditionalMethod2();
210     [Conditional=Condition1|Condition2] void conditionalMethod3();
211
212     [Conditional=Condition1] attribute TestObjectAConstructor conditionalAttr4;
213     [Conditional=Condition1&Condition2] attribute TestObjectBConstructor conditionalAttr5;
214     [Conditional=Condition1|Condition2] attribute TestObjectCConstructor conditionalAttr6;
215
216     [Conditional=Condition1] const unsigned short CONDITIONAL_CONST = 0;
217
218 #if defined(TESTING_JS)
219     [CachedAttribute] readonly attribute any cachedAttribute1;
220     [CachedAttribute] readonly attribute any cachedAttribute2;
221 #endif
222     
223     attribute any anyAttribute;
224
225 #if defined(TESTING_JS)
226     // Overloads
227     void    overloadedMethod(TestObj? objArg, [StrictTypeChecking] DOMString strArg);
228     void    overloadedMethod(TestObj? objArg, optional long longArg);
229     void    overloadedMethod([StrictTypeChecking] DOMString strArg);
230     void    overloadedMethod(long longArg);
231     void    overloadedMethod(TestCallback callback);
232     void    overloadedMethod(DOMStringList? listArg);
233     void    overloadedMethod(DOMString[]? arrayArg);
234     void    overloadedMethod(TestObj objArg);
235     void    overloadedMethod(DOMString[] arrayArg);
236     void    overloadedMethod(sequence<unsigned long> arrayArg);
237     void    overloadedMethod(DOMString strArg);
238
239     // FIXME: Implement support for overloaded functions with variadic arguments.
240     void    overloadedMethod(Blob... blobArgs);
241
242     void overloadedMethodWithOptionalParameter(TestObj? objArg1, optional TestObj? objArg2);
243     void overloadedMethodWithOptionalParameter(TestObj? objArg, optional long longArg);
244 #endif
245
246     // Class methods within JavaScript (like what's used for IDBKeyRange).
247     static void classMethod();
248     static long classMethodWithOptional(optional long arg);
249     [Custom] static void classMethod2(long arg);
250
251     // Static method with conditional on overloaded methods
252     [Conditional=Condition1] static void overloadedMethod1(long arg);
253     [Conditional=Condition1] static void overloadedMethod1([StrictTypeChecking] DOMString type);
254
255     void classMethodWithClamp([Clamp] unsigned short objArgsShort, [Clamp] unsigned long objArgsLong);
256
257 #if defined(TESTING_JS)
258     void methodWithUnsignedLongSequence(sequence<unsigned long> unsignedLongSequence);
259     [RaisesException] DOMString[] stringArrayFunction(DOMString[] values);
260     [RaisesException] DOMStringList domStringListFunction(DOMStringList values);
261
262     void methodWithAndWithoutNullableSequence(sequence<unsigned long> arrayArg, sequence<unsigned long>? nullableArrayArg);
263     void methodWithAndWithoutNullableSequence2(unsigned long[] arrayArg, unsigned long[]? nullableArrayArg);
264 #endif
265
266     [CheckSecurityForNode] readonly attribute Document contentDocument;
267     [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
268
269     void convert1(TestNode value);
270     void convert2(TestNode? value);
271     void convert3(DOMString value);
272     void convert4(DOMString? value);
273
274     attribute SVGPoint mutablePoint;
275     [Immutable] attribute SVGPoint immutablePoint;
276     SVGPoint mutablePointFunction();
277     [Immutable] SVGPoint immutablePointFunction();
278
279     [ImplementedAs=banana] void orange();
280     [ImplementedAs=blueberry] attribute long strawberry;
281
282     [StrictTypeChecking] attribute unrestricted float strictFloat;
283     [StrictTypeChecking, RaisesException] bool strictFunction(DOMString str, unrestricted float a, long b);
284
285     [StrictTypeChecking, RaisesException] bool strictFunctionWithSequence(TestObj objArg, sequence<unsigned long> a);
286     [StrictTypeChecking, RaisesException] bool strictFunctionWithArray(TestObj objArg, long[] array);
287
288     // ObjectiveC reserved words.
289     readonly attribute long      description;
290     attribute long               id;
291     readonly attribute DOMString hash;
292
293     // Check constants and enums.
294     const unsigned short CONST_VALUE_0 = 0;
295     const unsigned short CONST_VALUE_1 = 1;
296     const unsigned short CONST_VALUE_2 = 2;
297     const unsigned short CONST_VALUE_4 = 4;
298     const unsigned short CONST_VALUE_8 = 8;
299     const short CONST_VALUE_9 = -1;
300     const unsigned short CONST_VALUE_11 = 0xffffffff;
301     const unsigned short CONST_VALUE_12 = 0x01;
302     const unsigned short CONST_VALUE_13 = 0X20;
303     const unsigned short CONST_VALUE_14 = 0x1abc;
304     [Reflect=CONST_IMPL] const unsigned short CONST_JAVASCRIPT = 15;
305
306     [Replaceable] readonly attribute long replaceableAttribute;
307
308     void variadicStringMethod(DOMString head, DOMString... tail);
309     void variadicDoubleMethod(unrestricted double head, unrestricted double... tail);
310     void variadicNodeMethod(Node head, Node... tail);
311
312     // Nullable attributes.
313     readonly attribute unrestricted double? nullableDoubleAttribute;
314     readonly attribute long? nullableLongAttribute;
315     readonly attribute boolean? nullableBooleanAttribute;
316     readonly attribute DOMString? nullableStringAttribute;
317
318     attribute long? nullableLongSettableAttribute;
319     attribute DOMString? nullableStringSettableAttribute;
320
321     [GetterRaisesException] attribute long? nullableStringValue;
322
323     // Identifiers with a leading underscore, which should be removed.
324     const unsigned short               _readonly = 0;
325     readonly attribute DOMString       _attribute;
326     attribute _optional                attributeWithReservedEnumType;
327     void _any(unrestricted float a, long b);
328
329     // Promise function
330     Promise testPromiseFunction();
331     Promise testPromiseFunctionWithFloatArgument(float a);
332     [RaisesException] Promise testPromiseFunctionWithException();
333     Promise testPromiseFunctionWithOptionalIntArgument(optional long a);
334     Promise testPromiseOverloadedFunction(float a);
335     Promise testPromiseOverloadedFunction(FetchRequest request);
336     static Promise testStaticPromiseFunction();
337     [RaisesException] static Promise testStaticPromiseFunctionWithException();
338
339     // PutForwards
340     [PutForwards=name] readonly attribute TestNode putForwardsAttribute;
341     [PutForwards=name] readonly attribute TestNode? putForwardsNullableAttribute;
342
343 #if defined(TESTING_JS)
344     [InvokesCustomElementLifecycleCallbacks] void methodWithNeedsLifecycleProcessingStack();
345 #endif
346 };
347
348 // The following comment should not generate any code.
349 // TestObj implements TestImplements;
350