/* * Copyright (C) 2009 Google Inc. All rights reserved. * Copyright (C) 2010 Apple 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: * * 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 WARRANTIES, 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); // No extended attributes on the interface; those go in TestInterface.idl 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; 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; [TreatNullAs=NullString] attribute DOMString treatNullAsNullStringStringAttr; [TreatNullAs=NullString, TreatUndefinedAs=NullString] attribute DOMString treatNullAsNullStringTreatUndefinedAsNullStringStringAttr; attribute EventHandler eventHandlerAttr; [MeasureAs=TestFeature] attribute TestObject testObjAttr; [ExposeJSAccessors] attribute DOMString attrWithJSGetterAndSetter; [MeasureAs=TestFeature] attribute TestSubObjConstructor TestSubObjMeasured; // Name starting with an acronym attribute TestObject XMLObjAttr; // Reflected DOM attributes [Reflect] attribute DOMString reflectedStringAttr; [Reflect, TreatNullAs=NullString] attribute DOMString reflectedTreatNullAsNullStringStringAttr; [Reflect, TreatNullAs=NullString, TreatUndefinedAs=NullString] attribute DOMString reflectedTreatNullAsNullStringTreatUndefinedAsNullStringStringAttr; [Reflect] attribute long reflectedIntegralAttr; [Reflect] attribute unsigned long reflectedUnsignedIntegralAttr; [Reflect] attribute boolean reflectedBooleanAttr; [Reflect, URL] attribute DOMString reflectedURLAttr; [Reflect, TreatNullAs=NullString, URL] attribute DOMString reflectedTreatNullAsNullStringURLAttr; [Reflect, TreatNullAs=NullString, TreatUndefinedAs=NullString, URL] attribute DOMString reflectedTreatNullAsNullStringTreatUndefinedAsNullStringURLAttr; [Reflect=customContentStringAttr] attribute DOMString reflectedCustomStringAttr; [Reflect=customContentStringAttr, TreatNullAs=NullString] attribute DOMString reflectedTreatNullAsNullStringCustomStringAttr; [Reflect=customContentStringAttr, TreatNullAs=NullString, TreatUndefinedAs=NullString] attribute DOMString reflectedTreatNullAsNullStringTreatUndefinedAsNullStringCustomStringAttr; [Reflect=customContentIntegralAttr] attribute long reflectedCustomIntegralAttr; [Reflect=customContentBooleanAttr] attribute boolean reflectedCustomBooleanAttr; [Reflect=customContentURLAttr, URL] attribute DOMString reflectedCustomURLAttr; [Reflect=customContentURLAttr, TreatNullAs=NullString, URL] attribute DOMString reflectedTreatNullAsNullStringCustomURLAttr; [Reflect=customContentURLAttr, TreatNullAs=NullString, TreatUndefinedAs=NullString, URL] attribute DOMString reflectedTreatNullAsNullStringTreatUndefinedAsNullStringCustomURLAttr; [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="left" | "right", ReflectMissing="left", ReflectInvalid="left"] attribute DOMString limitedWithInvalidAndMissingDefaultAttribute; [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; // 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 sequenceArg); sequence 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 list); // Indexed/named properties getter Node (unsigned long index); 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; void overloadedMethodJ(long longArg); void overloadedMethodJ([Default=Null] TestInterfaceEmpty? testInterfaceEmptyNullableArg); // 'Custom' extended attribute [Custom] attribute long customAttr; [Custom, MeasureAs=CustomTestFeature] void customMethod(); [Custom] void customMethodWithArgs(long longArg, DOMString strArg, TestObject objArg); // '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=ExecutionContext] attribute TestObject withExecutionContextAttribute; [SetterCallWith=ActiveWindow&FirstWindow] attribute TestObject withActiveWindowAndFirstWindowAttribute; [RaisesException=Getter] attribute TestObject withScriptStateAttributeRaises; // 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 interface parameters void methodWithCallbackInterfaceArg(TestCallbackInterface callbackInterface); void methodWithNonCallbackArgAndCallbackInterfaceArg(long nonCallback, TestCallbackInterface callbackInterface); void methodWithCallbackInterfaceAndOptionalArg(optional TestCallbackInterface callbackInterface); void methodWithNullableCallbackInterfaceArg(TestCallbackInterface? callbackInterface); // static methods with callback interface parameter static void staticMethodWithCallbackAndOptionalArg(optional TestCallbackInterface callbackInterface); static void staticMethodWithCallbackArg(TestCallbackInterface callbackInterface); // '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|Condition3] 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(TestCallbackInterface callbackInterfaceArg); void overloadedMethod(TestObject objArg); void overloadedMethod(DOMString[] arrayArg); void overloadedMethod(sequence sequenceArg); void overloadedMethodA(TestObject? objArg, optional long longArg); void overloadedMethodA(TestObject? objArg, DOMString strArg); void overloadedMethodB(DOMString strArg); void overloadedMethodB([StrictTypeChecking] DOMString strArg); void overloadedMethodC(Dictionary dictionaryArg); // Non-wrapper type void overloadedMethodC(double doubleArg); // 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 unsignedLongSequence); [RaisesException] DOMString[] stringArrayFunction(DOMString[] values); [RaisesException] DOMStringList domStringListFunction(DOMStringList values); [CheckSecurity=Node] readonly attribute Document contentDocument; void convert1([TreatNullAs=NullString] TestNode value); void convert2([TreatNullAs=NullString, TreatUndefinedAs=NullString] TestNode value); [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; [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=ConstructorAttribute] attribute TestSubObjConstructor deprecatedConstructor; [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;