blob: 28710f4d904ebdcfd9858e6f2c64e977ce1375e2 [file] [log] [blame]
/*
* Copyright (C) 2009 Google Inc. All rights reserved.
* Copyright (C) 2010 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary formstrArg, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
* 3. Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIEstrArg, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS 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.
*/
// This IDL file is for testing the bindings code generator and for tracking
// changes in its ouput.
enum TestEnumType { "", "EnumValue1", "EnumValue2", "EnumValue3" };
callback TestCallbackFunction = void (TestEnumType formal1, TestObject formal2);
[
Constructor(TestCallback testCallback),
ImplementedAs=TestObj
] interface TestObject : EventTarget {
// Attributes
readonly attribute long readOnlyLongAttr;
readonly attribute DOMString readOnlyStringAttr;
readonly attribute TestObject readOnlyTestObjectAttr;
static readonly attribute long staticReadOnlyLongAttr;
static attribute DOMString staticStringAttr;
static readonly attribute TestSubObjConstructor TestSubObj;
attribute TestEnumType enumAttr;
readonly attribute TestEnumType readOnlyEnumAttr;
attribute byte byteAttr;
attribute octet octetAttr;
attribute short shortAttr;
attribute unsigned short unsignedShortAttr;
attribute long longAttr;
attribute long long longLongAttr;
attribute unsigned long long unsignedLongLongAttr;
attribute DOMString stringAttr;
attribute EventHandler eventHandlerAttr;
[MeasureAs=TestFeature] attribute TestObject testObjAttr;
[ExposeJSAccessors] attribute DOMString attrWithJSGetterAndSetter;
// WK_ucfirst, WK_lcfirst exceptional cases.
attribute TestObject XMLObjAttr;
attribute boolean create;
// Reflected DOM attributes
[Reflect, TreatNullAs=NullString] attribute DOMString reflectedStringAttr;
[Reflect] attribute long reflectedIntegralAttr;
[Reflect] attribute unsigned long reflectedUnsignedIntegralAttr;
[Reflect] attribute boolean reflectedBooleanAttr;
[Reflect, TreatNullAs=NullString, URL] attribute DOMString reflectedURLAttr;
[Reflect=customContentStringAttr, TreatNullAs=NullString] attribute DOMString reflectedStringAttr;
[Reflect=customContentIntegralAttr] attribute long reflectedCustomIntegralAttr;
[Reflect=customContentBooleanAttr] attribute boolean reflectedCustomBooleanAttr;
[Reflect=customContentURLAttr, TreatNullAs=NullString, URL] attribute DOMString reflectedCustomURLAttr;
// TypedArray attribute
attribute Float32Array typedArrayAttr;
// Methods
void voidMethod();
void voidMethodWithArgs(long longArg, DOMString strArg, TestObject objArg);
long longMethod();
long longMethodWithArgs(long longArg, DOMString strArg, TestObject objArg);
[MeasureAs=TestFeature] TestObject objMethod();
TestObject objMethodWithArgs(long longArg, DOMString strArg, TestObject objArg);
void methodWithSequenceArg(sequence<TestInterface> sequenceArg);
sequence<TestInterface> methodReturningSequence(long longArg);
void methodWithEnumArg(TestEnumType enumArg);
[RaisesException] TestObject methodThatRequiresAllArgsAndThrows(DOMString strArg, TestObject objArg);
void methodQueryListListener(MediaQueryListListener listener);
void serializedValue(SerializedScriptValue serializedArg);
void optionsObject(Dictionary oo, optional Dictionary ooo);
void optionsObjectList(sequence<Dictionary> list);
// Indexed/named properties
[ImplementedAs=item] getter Node (unsigned long index);
[ImplementedAs=namedItem] getter DOMString (DOMString name);
// Exceptions
[RaisesException] void methodWithException();
[RaisesException=Getter] attribute long attrWithGetterException;
[RaisesException=Setter] attribute long attrWithSetterException;
[RaisesException=Getter] attribute DOMString stringAttrWithGetterException;
[RaisesException=Setter] attribute DOMString stringAttrWithSetterException;
// 'Custom' extended attribute
[Custom] attribute long customAttr;
[Custom, MeasureAs=CustomTestFeature] void customMethod();
[Custom] void customMethodWithArgs(long longArg, DOMString strArg, TestObject objArg);
void addEventListener(DOMString type,
EventListener listener,
optional boolean useCapture);
void removeEventListener(DOMString type,
EventListener listener,
optional boolean useCapture);
// 'CallWith' extended attribute
[CallWith=ScriptState] void withScriptStateVoid();
[CallWith=ScriptState] TestObject withScriptStateObj();
[CallWith=ScriptState, RaisesException] void withScriptStateVoidException();
[CallWith=ScriptState, RaisesException] TestObject withScriptStateObjException();
[CallWith=ExecutionContext] void withExecutionContext();
[CallWith=ExecutionContext&ScriptState] void withExecutionContextAndScriptState();
[CallWith=ExecutionContext&ScriptState, RaisesException] TestObject withExecutionContextAndScriptStateObjException();
[CallWith= ExecutionContext & ScriptState ] TestObject withExecutionContextAndScriptStateWithSpaces();
[CallWith=ActiveWindow&FirstWindow] void withActiveWindowAndFirstWindow();
[CallWith=ScriptState] attribute long withScriptStateAttribute;
[CallWith=ExecutionContext] attribute TestObject withExecutionContextAttribute;
[SetterCallWith=ActiveWindow&FirstWindow] attribute TestObject withActiveWindowAndFirstWindowAttribute;
[CallWith=ScriptState, RaisesException=Getter] attribute TestObject withScriptStateAttributeRaises;
[CallWith=ExecutionContext, RaisesException=Getter] attribute TestObject withExecutionContextAttributeRaises;
[CallWith=ExecutionContext&ScriptState] attribute TestObject withExecutionContextAndScriptStateAttribute;
[CallWith=ExecutionContext&ScriptState, RaisesException=Getter] attribute TestObject withExecutionContextAndScriptStateAttributeRaises;
[CallWith= ExecutionContext & ScriptState ] attribute TestObject withExecutionContextAndScriptStateWithSpacesAttribute;
// optional parameters
void methodWithOptionalArg(optional long opt);
void methodWithNonOptionalArgAndOptionalArg(long nonOpt, optional long opt);
void methodWithNonOptionalArgAndTwoOptionalArgs(long nonOpt, optional long opt1, optional long opt2);
void methodWithOptionalString(optional DOMString str);
void methodWithOptionalStringIsUndefined([Default=Undefined] optional DOMString str);
void methodWithOptionalStringIsNullString([Default=NullString] optional DOMString str);
// Callback parameters
void methodWithCallbackArg(TestCallback callback);
void methodWithNonCallbackArgAndCallbackArg(long nonCallback, TestCallback callback);
void methodWithCallbackAndOptionalArg(optional TestCallback callback);
void methodWithNullableCallbackArg(TestCallback? callback);
// static methods with Callback parameter
static void staticMethodWithCallbackAndOptionalArg(optional TestCallback callback);
static void staticMethodWithCallbackArg(TestCallback callback);
// 'EnforceRange' extended attribute
void methodWithEnforceRangeInt8([EnforceRange] byte value);
void methodWithEnforceRangeUInt8([EnforceRange] octet value);
void methodWithEnforceRangeInt16([EnforceRange] short value);
void methodWithEnforceRangeUInt16([EnforceRange] unsigned short value);
void methodWithEnforceRangeInt32([EnforceRange] long value);
void methodWithEnforceRangeUInt32([EnforceRange] unsigned long value);
void methodWithEnforceRangeInt64([EnforceRange] long long value);
void methodWithEnforceRangeUInt64([EnforceRange] unsigned long long value);
[EnforceRange] attribute byte enforcedRangeByteAttr;
[EnforceRange] attribute octet enforcedRangeOctetAttr;
[EnforceRange] attribute short enforcedRangeShortAttr;
[EnforceRange] attribute unsigned short enforcedRangeUnsignedShortAttr;
[EnforceRange] attribute long enforcedRangeLongAttr;
[EnforceRange] attribute unsigned long enforcedRangeUnsignedLongAttr;
[EnforceRange] attribute long long enforcedRangeLongLongAttr;
[EnforceRange] attribute unsigned long long enforcedRangeUnsignedLongLongAttr;
// 'Conditional' extended attribute
[Conditional=Condition1] attribute long conditionalAttr1;
[Conditional=Condition1&Condition2] attribute long conditionalAttr2;
[Conditional=Condition1|Condition2] attribute long conditionalAttr3;
// 'Conditional' extended method
[Conditional=Condition1] DOMString conditionalMethod1();
[Conditional=Condition1&Condition2] void conditionalMethod2();
[Conditional=Condition1|Condition2] void conditionalMethod3();
[Conditional=Condition1] attribute TestObjectectAConstructor conditionalAttr4;
[Conditional=Condition1&Condition2] attribute TestObjectectBConstructor conditionalAttr5;
[Conditional=Condition1|Condition2] attribute TestObjectectCConstructor conditionalAttr6;
readonly attribute any cachedAttribute1;
readonly attribute any cachedAttribute2;
[CachedAttribute=isValueDirty] readonly attribute any cachedDirtyableAttribute;
[RaisesException=Getter, CachedAttribute=isValueDirty] readonly attribute any cachedDirtyableAttributeRaises;
attribute any anyAttribute;
attribute TestCallbackFunction callbackFunctionAttribute;
TestCallbackFunction callbackFunctionReturnValue();
void callbackFunctionArgument(TestCallbackFunction function);
// Overloads
void overloadedMethod(long longArg);
void overloadedMethod(TestCallback callbackArg);
void overloadedMethod(TestObject objArg);
void overloadedMethod(DOMString[] arrayArg);
void overloadedMethod(sequence<unsigned long> sequenceArg);
void overloadedMethodA(TestObject? objArg, optional long longArg);
void overloadedMethodA(TestObject? objArg, DOMString strArg);
void overloadedMethodB(DOMString strArg);
void overloadedMethodB([StrictTypeChecking] DOMString strArg);
// Class methods within JavaScript (like what's used for IDBKeyRange).
static void classMethod();
static long classMethodWithOptional(optional long arg);
[Custom] static void classMethod2(long arg);
void classMethodWithClamp([Clamp] unsigned short objArgsShort, [Clamp] unsigned long objArgsLong);
// [RuntimeEnabled] methods and attributes.
[RuntimeEnabled=FeatureName] void enabledAtRuntimeMethod(long longArg);
[RuntimeEnabled=FeatureName] attribute long enabledAtRuntimeAttr;
// [PerContextEnabled] methods and attributes.
[PerContextEnabled=FeatureName] void enabledPerContextMethod(long longArg);
[PerContextEnabled=FeatureName] attribute long enabledPerContextAttr;
attribute float[] floatArray;
attribute double[] doubleArray;
attribute MessagePort[] messagePortArray;
void methodWithUnsignedLongSequence(sequence<unsigned long> unsignedLongSequence);
[RaisesException] DOMString[] stringArrayFunction(DOMString[] values);
[RaisesException] DOMStringList domStringListFunction(DOMStringList values);
[CheckSecurity=Node] readonly attribute Document contentDocument;
[CheckSecurity=Node, RaisesException] SVGDocument getSVGDocument();
void convert1([TreatNullAs=NullString] TestNode value);
void convert2([TreatNullAs=NullString, TreatUndefinedAs=NullString] TestNode value);
attribute SVGPoint mutablePoint;
[Immutable] attribute SVGPoint immutablePoint;
SVGPoint mutablePointFunction();
[Immutable] SVGPoint immutablePointFunction();
SVGPoint svgPointMethod(SVGPoint item, unsigned long index);
[StrictTypeChecking, RaisesException] SVGPoint strictSVGPointMethod(SVGPoint item, unsigned long index);
[ImplementedAs=banana] void orange();
[ImplementedAs=blueberry] attribute long strawberry;
[StrictTypeChecking] attribute float strictFloat;
[StrictTypeChecking, RaisesException] boolean strictFunction(DOMString str, float a, long b);
[Replaceable] readonly attribute long replaceableAttribute;
void variadicStringMethod(DOMString head, DOMString... tail);
void variadicDoubleMethod(double head, double... tail);
void variadicNodeMethod(Node head, Node... tail);
// Nullable attributes.
readonly attribute double? nullableDoubleAttribute;
readonly attribute long? nullableLongAttribute;
readonly attribute boolean? nullableBooleanAttribute;
readonly attribute DOMString? nullableStringAttribute;
attribute long? nullableLongSettableAttribute;
[RaisesException=Getter] attribute long? nullableStringValue;
// Nullable arguments.
void methodWithNullableArguments(DOMString? str, long? l, TestObject? obj, optional double? d);
[PerWorldBindings] readonly attribute TestObject perWorldReadOnlyAttribute;
[PerWorldBindings] attribute TestObject perWorldAttribute;
[PerWorldBindings] void perWorldMethod();
[PerWorldBindings] void overloadedPerWorldMethod(long longArg);
[PerWorldBindings] void overloadedPerWorldMethod(DOMString strArg, long longArg);
[ActivityLogging=ForAllWorlds] void activityLoggedMethod1(long longArg);
[PerWorldBindings, ActivityLogging=ForAllWorlds] void activityLoggedMethod2(long longArg);
[PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void activityLoggedInIsolatedWorldMethod(long longArg);
[PerWorldBindings, ActivityLogging=ForAllWorlds] void overloadedActivityLoggedMethod(long longArg);
[PerWorldBindings, ActivityLogging=ForAllWorlds] void overloadedActivityLoggedMethod(DOMString strArg, long longArg);
[ActivityLogging=ForAllWorlds] attribute long activityLoggedAttr1;
[PerWorldBindings, ActivityLogging=ForAllWorlds] attribute long activityLoggedAttr2;
[PerWorldBindings, ActivityLogging=ForIsolatedWorlds] attribute long activityLoggedInIsolatedWorldsAttr;
[ActivityLogging=SetterForAllWorlds] attribute long activityLoggedAttrSetter1;
[PerWorldBindings, ActivityLogging=SetterForAllWorlds] attribute long activityLoggedAttrSetter2;
[PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute long activityLoggedInIsolatedWorldsAttrSetter;
[ActivityLogging=GetterForAllWorlds] attribute long activityLoggedAttrGetter1;
[PerWorldBindings, ActivityLogging=GetterForAllWorlds] attribute long activityLoggedAttrGetter2;
[PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds] attribute long activityLoggedInIsolatedWorldsAttrGetter;
// DeprecateAs
[DeprecateAs=StaticReadonlyAttribute] static readonly attribute long deprecatedStaticReadOnlyAttr;
[DeprecateAs=StaticAttribute] static attribute long deprecatedStaticAttr;
[DeprecateAs=ReadonlyAttribute] readonly attribute long deprecatedReadonlyAttr;
[DeprecateAs=Attribute] attribute long deprecatedAttr;
[DeprecateAs=Method] void deprecatedMethod();
[DeprecateAs=StaticMethod] static void deprecatedStaticMethod();
[DeprecateAs=Constant] const unsigned short DEPRECATED_CONSTANT = 1;
// PutForwards
[PutForwards=href] readonly attribute TestNode location;
[PutForwards=hrefThrows] readonly attribute TestNode locationWithException;
};
// The following comment should not generate any code
// TestObject implements TestImplements;