module test {
interface [
Constructor(in [Callback] TestCallback testCallback),
InterfaceName=TestObject
] TestObj {
readonly attribute long readOnlyIntAttr;
readonly attribute DOMString readOnlyStringAttr;
readonly attribute TestObj readOnlyTestObjAttr;
attribute short shortAttr;
attribute unsigned short unsignedShortAttr;
attribute long intAttr;
attribute long long longLongAttr;
attribute unsigned long long unsignedLongLongAttr;
attribute DOMString stringAttr;
attribute TestObj testObjAttr;
attribute sequence<ScriptProfile> sequenceAttr;
attribute sequence<int> intSequenceAttr;
attribute sequence<short> shortSequenceAttr;
attribute sequence<long> longSequenceAttr;
attribute sequence<long long> longLongSequenceAttr;
attribute sequence<unsigned int> unsignedIntSequenceAttr;
attribute sequence<unsigned short> unsignedShortSequenceAttr;
attribute sequence<unsigned long> unsignedLongSequenceAttr;
attribute sequence<unsigned long long> unsignedLongLongSequenceAttr;
attribute sequence<float> floatSequenceAttr;
attribute sequence<double> doubleSequenceAttr;
attribute sequence<boolean> booleanSequenceAttr;
attribute sequence<void> voidSequenceAttr;
attribute sequence<Date> dateSequenceAttr;
JS, V8
attribute TestObj XMLObjAttr;
attribute boolean create;
attribute [Reflect] DOMString reflectedStringAttr;
attribute [Reflect] long reflectedIntegralAttr;
attribute [Reflect] unsigned long reflectedUnsignedIntegralAttr;
attribute [Reflect] boolean reflectedBooleanAttr;
attribute [Reflect, URL] DOMString reflectedURLAttr;
attribute [Reflect=customContentStringAttr] DOMString reflectedStringAttr;
attribute [Reflect=customContentIntegralAttr] long reflectedCustomIntegralAttr;
attribute [Reflect=customContentBooleanAttr] boolean reflectedCustomBooleanAttr;
attribute [Reflect=customContentURLAttr, URL] DOMString reflectedCustomURLAttr;
void voidMethod();
void voidMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg);
long intMethod();
long intMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg);
TestObj objMethod();
TestObj objMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg);
void methodWithSequenceArg(in sequence<ScriptProfile> sequenceArg);
sequence<ScriptProfile> methodReturningSequence(in long intArg);
TestObj methodThatRequiresAllArgsAndThrows(in DOMString strArg, in TestObj objArg)
raises(DOMException);
void serializedValue(in SerializedScriptValue serializedArg);
void idbKey(in IDBKey key);
void optionsObject(in Dictionary oo, in [Optional] Dictionary ooo);
void methodWithException() raises(DOMException);
attribute long attrWithGetterException getter raises(DOMException);
attribute long attrWithSetterException setter raises(DOMException);
attribute DOMString stringAttrWithGetterException getter raises(DOMException);
attribute DOMString stringAttrWithSetterException setter raises(DOMException);
attribute [Custom] long customAttr;
[Custom] void customMethod();
[Custom] void customMethodWithArgs(in long intArg, in DOMString strArg, in TestObj objArg);
void addEventListener(in DOMString type,
in EventListener listener,
in [Optional] boolean useCapture);
void removeEventListener(in DOMString type,
in EventListener listener,
in [Optional] boolean useCapture);
[CallWith=ScriptState] void withScriptStateVoid();
[CallWith=ScriptState] TestObj withScriptStateObj();
[CallWith=ScriptState] void withScriptStateVoidException()
raises(DOMException);
[CallWith=ScriptState] TestObj withScriptStateObjException()
raises(DOMException);
[CallWith=ScriptExecutionContext] void withScriptExecutionContext();
[CallWith=ScriptExecutionContext|ScriptState] void withScriptExecutionContextAndScriptState();
[CallWith=ScriptExecutionContext|ScriptState] TestObj withScriptExecutionContextAndScriptStateObjException()
raises(DOMException);
[CallWith= ScriptExecutionContext | ScriptState ] TestObj withScriptExecutionContextAndScriptStateWithSpaces();
[CallWith=ScriptArguments|CallStack] void withScriptArgumentsAndCallStack();
attribute [CallWith=ScriptState] long withScriptStateAttribute;
attribute [CallWith=ScriptExecutionContext] TestObj withScriptExecutionContextAttribute;
attribute [CallWith=ScriptState] TestObj withScriptStateAttributeRaises
getter raises(DOMException);
attribute [CallWith=ScriptExecutionContext] TestObj withScriptExecutionContextAttributeRaises
getter raises(DOMException);
attribute [CallWith=ScriptExecutionContext|ScriptState] TestObj withScriptExecutionContextAndScriptStateAttribute;
attribute [CallWith=ScriptExecutionContext|ScriptState] TestObj withScriptExecutionContextAndScriptStateAttributeRaises
getter raises(DOMException);
attribute [CallWith= ScriptExecutionContext | ScriptState ] TestObj withScriptExecutionContextAndScriptStateWithSpacesAttribute;
attribute [CallWith=ScriptArguments|CallStack] TestObj withScriptArgumentsAndCallStackAttribute;
void methodWithOptionalArg(in [Optional] long opt);
void methodWithNonOptionalArgAndOptionalArg(in long nonOpt, in [Optional] long opt);
void methodWithNonOptionalArgAndTwoOptionalArgs(in long nonOpt, in [Optional] long opt1, in [Optional] long opt2);
void methodWithOptionalString(in [Optional] DOMString str);
void methodWithOptionalStringIsUndefined(in [Optional=DefaultIsUndefined] DOMString str);
void methodWithOptionalStringIsNullString(in [Optional=DefaultIsNullString] DOMString str);
#