/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef TestBindingHeader_h #define TestBindingHeader_h #include "nsWrapperCache.h" #include "mozilla/ErrorResult.h" #include "mozilla/dom/BindingUtils.h" #include "mozilla/dom/TypedArray.h" #include "nsCOMPtr.h" // We don't export TestCodeGenBinding.h, but it's right in our parent dir. #include "../TestCodeGenBinding.h" #include "mozilla/dom/UnionTypes.h" namespace mozilla { namespace dom { // IID for the TestNonCastableInterface #define NS_TEST_NONCASTABLE_INTERFACE_IID \ { 0x7c9f8ee2, 0xc9bf, 0x46ca, \ { 0xa0, 0xa9, 0x03, 0xa8, 0xd6, 0x30, 0x0e, 0xde } } class TestNonCastableInterface : public nsISupports, public nsWrapperCache { public: NS_DECLARE_STATIC_IID_ACCESSOR(NS_TEST_NONCASTABLE_INTERFACE_IID) NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); }; // IID for nsRenamedInterface #define NS_RENAMED_INTERFACE_IID \ { 0xd4b19ef3, 0xe68b, 0x4e3f, \ { 0x94, 0xbc, 0xc9, 0xde, 0x3a, 0x69, 0xb0, 0xe8 } } class nsRenamedInterface : public nsISupports, public nsWrapperCache { public: NS_DECLARE_STATIC_IID_ACCESSOR(NS_RENAMED_INTERFACE_IID) NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); }; // IID for the IndirectlyImplementedInterface #define NS_INDIRECTLY_IMPLEMENTED_INTERFACE_IID \ { 0xfed55b69, 0x7012, 0x4849, \ { 0xaf, 0x56, 0x4b, 0xa9, 0xee, 0x41, 0x30, 0x89 } } class IndirectlyImplementedInterface : public nsISupports, public nsWrapperCache { public: NS_DECLARE_STATIC_IID_ACCESSOR(NS_INDIRECTLY_IMPLEMENTED_INTERFACE_IID) NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); bool IndirectlyImplementedProperty(); void IndirectlyImplementedProperty(bool); void IndirectlyImplementedMethod(); }; // IID for the TestExternalInterface #define NS_TEST_EXTERNAL_INTERFACE_IID \ { 0xd5ba0c99, 0x9b1d, 0x4e71, \ { 0x8a, 0x94, 0x56, 0x38, 0x6c, 0xa3, 0xda, 0x3d } } class TestExternalInterface : public nsISupports { public: NS_DECLARE_STATIC_IID_ACCESSOR(NS_TEST_EXTERNAL_INTERFACE_IID) NS_DECL_ISUPPORTS }; class TestNonWrapperCacheInterface : public nsISupports { public: NS_DECL_ISUPPORTS virtual JSObject* WrapObject(JSContext* cx, JSObject* scope); }; class OnlyForUseInConstructor : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); }; class TestInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); // And now our actual WebIDL API // Constructors static already_AddRefed Constructor(const GlobalObject&, ErrorResult&); static already_AddRefed Constructor(const GlobalObject&, const nsAString&, ErrorResult&); static already_AddRefed Constructor(const GlobalObject&, uint32_t, const Nullable&, ErrorResult&); static already_AddRefed Constructor(const GlobalObject&, TestInterface*, ErrorResult&); static already_AddRefed Constructor(const GlobalObject&, TestNonCastableInterface&, ErrorResult&); /* static already_AddRefed Constructor(const GlobalObject&, uint32_t, uint32_t, const TestInterfaceOrOnlyForUseInConstructor&, ErrorResult&); */ // Integer types int8_t ReadonlyByte(); int8_t WritableByte(); void SetWritableByte(int8_t); void PassByte(int8_t); int8_t ReceiveByte(); void PassOptionalByte(const Optional&); void PassOptionalByteWithDefault(int8_t); void PassNullableByte(const Nullable&); void PassOptionalNullableByte(const Optional< Nullable >&); void PassVariadicByte(const Sequence&); int16_t ReadonlyShort(); int16_t WritableShort(); void SetWritableShort(int16_t); void PassShort(int16_t); int16_t ReceiveShort(); void PassOptionalShort(const Optional&); void PassOptionalShortWithDefault(int16_t); int32_t ReadonlyLong(); int32_t WritableLong(); void SetWritableLong(int32_t); void PassLong(int32_t); int16_t ReceiveLong(); void PassOptionalLong(const Optional&); void PassOptionalLongWithDefault(int32_t); int64_t ReadonlyLongLong(); int64_t WritableLongLong(); void SetWritableLongLong(int64_t); void PassLongLong(int64_t); int64_t ReceiveLongLong(); void PassOptionalLongLong(const Optional&); void PassOptionalLongLongWithDefault(int64_t); uint8_t ReadonlyOctet(); uint8_t WritableOctet(); void SetWritableOctet(uint8_t); void PassOctet(uint8_t); uint8_t ReceiveOctet(); void PassOptionalOctet(const Optional&); void PassOptionalOctetWithDefault(uint8_t); uint16_t ReadonlyUnsignedShort(); uint16_t WritableUnsignedShort(); void SetWritableUnsignedShort(uint16_t); void PassUnsignedShort(uint16_t); uint16_t ReceiveUnsignedShort(); void PassOptionalUnsignedShort(const Optional&); void PassOptionalUnsignedShortWithDefault(uint16_t); uint32_t ReadonlyUnsignedLong(); uint32_t WritableUnsignedLong(); void SetWritableUnsignedLong(uint32_t); void PassUnsignedLong(uint32_t); uint32_t ReceiveUnsignedLong(); void PassOptionalUnsignedLong(const Optional&); void PassOptionalUnsignedLongWithDefault(uint32_t); uint64_t ReadonlyUnsignedLongLong(); uint64_t WritableUnsignedLongLong(); void SetWritableUnsignedLongLong(uint64_t); void PassUnsignedLongLong(uint64_t); uint64_t ReceiveUnsignedLongLong(); void PassOptionalUnsignedLongLong(const Optional&); void PassOptionalUnsignedLongLongWithDefault(uint64_t); float WritableFloat() const; void SetWritableFloat(float); float WritableUnrestrictedFloat() const; void SetWritableUnrestrictedFloat(float); Nullable GetWritableNullableFloat() const; void SetWritableNullableFloat(Nullable); Nullable GetWritableNullableUnrestrictedFloat() const; void SetWritableNullableUnrestrictedFloat(Nullable); double WritableDouble() const; void SetWritableDouble(double); double WritableUnrestrictedDouble() const; void SetWritableUnrestrictedDouble(double); Nullable GetWritableNullableDouble() const; void SetWritableNullableDouble(Nullable); Nullable GetWritableNullableUnrestrictedDouble() const; void SetWritableNullableUnrestrictedDouble(Nullable); void PassFloat(float, float, Nullable, Nullable, double, double, Nullable, Nullable, const Sequence&, const Sequence&, const Sequence >&, const Sequence >&, const Sequence&, const Sequence&, const Sequence >&, const Sequence >&); void PassLenientFloat(float, float, Nullable, Nullable, double, double, Nullable, Nullable, const Sequence&, const Sequence&, const Sequence >&, const Sequence >&, const Sequence&, const Sequence&, const Sequence >&, const Sequence >&); float LenientFloatAttr() const; void SetLenientFloatAttr(float); double LenientDoubleAttr() const; void SetLenientDoubleAttr(double); // Interface types already_AddRefed ReceiveSelf(); already_AddRefed ReceiveNullableSelf(); TestInterface* ReceiveWeakSelf(); TestInterface* ReceiveWeakNullableSelf(); void PassSelf(TestInterface&); void PassSelf2(NonNull&); void PassNullableSelf(TestInterface*); already_AddRefed NonNullSelf(); void SetNonNullSelf(TestInterface&); already_AddRefed GetNullableSelf(); void SetNullableSelf(TestInterface*); void PassOptionalSelf(const Optional &); void PassOptionalNonNullSelf(const Optional >&); void PassOptionalSelfWithDefault(TestInterface*); already_AddRefed ReceiveNonWrapperCacheInterface(); already_AddRefed ReceiveNullableNonWrapperCacheInterface(); void ReceiveNonWrapperCacheInterfaceSequence(nsTArray >&); void ReceiveNullableNonWrapperCacheInterfaceSequence(nsTArray >&); void ReceiveNonWrapperCacheInterfaceNullableSequence(Nullable > >&); void ReceiveNullableNonWrapperCacheInterfaceNullableSequence(Nullable > >&); already_AddRefed ReceiveOther(); already_AddRefed ReceiveNullableOther(); TestNonCastableInterface* ReceiveWeakOther(); TestNonCastableInterface* ReceiveWeakNullableOther(); void PassOther(TestNonCastableInterface&); void PassOther2(NonNull&); void PassNullableOther(TestNonCastableInterface*); already_AddRefed NonNullOther(); void SetNonNullOther(TestNonCastableInterface&); already_AddRefed GetNullableOther(); void SetNullableOther(TestNonCastableInterface*); void PassOptionalOther(const Optional&); void PassOptionalNonNullOther(const Optional >&); void PassOptionalOtherWithDefault(TestNonCastableInterface*); already_AddRefed ReceiveExternal(); already_AddRefed ReceiveNullableExternal(); TestExternalInterface* ReceiveWeakExternal(); TestExternalInterface* ReceiveWeakNullableExternal(); void PassExternal(TestExternalInterface*); void PassExternal2(TestExternalInterface*); void PassNullableExternal(TestExternalInterface*); already_AddRefed NonNullExternal(); void SetNonNullExternal(TestExternalInterface*); already_AddRefed GetNullableExternal(); void SetNullableExternal(TestExternalInterface*); void PassOptionalExternal(const Optional&); void PassOptionalNonNullExternal(const Optional&); void PassOptionalExternalWithDefault(TestExternalInterface*); already_AddRefed ReceiveCallbackInterface(); already_AddRefed ReceiveNullableCallbackInterface(); TestCallbackInterface* ReceiveWeakCallbackInterface(); TestCallbackInterface* ReceiveWeakNullableCallbackInterface(); void PassCallbackInterface(TestCallbackInterface&); void PassCallbackInterface2(OwningNonNull); void PassNullableCallbackInterface(TestCallbackInterface*); already_AddRefed NonNullCallbackInterface(); void SetNonNullCallbackInterface(TestCallbackInterface&); already_AddRefed GetNullableCallbackInterface(); void SetNullableCallbackInterface(TestCallbackInterface*); void PassOptionalCallbackInterface(const Optional >&); void PassOptionalNonNullCallbackInterface(const Optional >&); void PassOptionalCallbackInterfaceWithDefault(TestCallbackInterface*); already_AddRefed ReceiveConsequentialInterface(); void PassConsequentialInterface(IndirectlyImplementedInterface&); // Sequence types void ReceiveSequence(nsTArray&); void ReceiveNullableSequence(Nullable< nsTArray >&); void ReceiveSequenceOfNullableInts(nsTArray< Nullable >&); void ReceiveNullableSequenceOfNullableInts(Nullable< nsTArray< Nullable > >&); void PassSequence(const Sequence &); void PassNullableSequence(const Nullable< Sequence >&); void PassSequenceOfNullableInts(const Sequence >&); void PassOptionalSequenceOfNullableInts(const Optional > > &); void PassOptionalNullableSequenceOfNullableInts(const Optional > > > &); void ReceiveCastableObjectSequence(nsTArray< nsRefPtr > &); void ReceiveCallbackObjectSequence(nsTArray< nsRefPtr > &); void ReceiveNullableCastableObjectSequence(nsTArray< nsRefPtr > &); void ReceiveNullableCallbackObjectSequence(nsTArray< nsRefPtr > &); void ReceiveCastableObjectNullableSequence(Nullable< nsTArray< nsRefPtr > >&); void ReceiveNullableCastableObjectNullableSequence(Nullable< nsTArray< nsRefPtr > >&); void ReceiveWeakCastableObjectSequence(nsTArray &); void ReceiveWeakNullableCastableObjectSequence(nsTArray &); void ReceiveWeakCastableObjectNullableSequence(Nullable< nsTArray >&); void ReceiveWeakNullableCastableObjectNullableSequence(Nullable< nsTArray >&); void PassCastableObjectSequence(const Sequence< OwningNonNull >&); void PassNullableCastableObjectSequence(const Sequence< nsRefPtr > &); void PassCastableObjectNullableSequence(const Nullable< Sequence< OwningNonNull > >&); void PassNullableCastableObjectNullableSequence(const Nullable< Sequence< nsRefPtr > >&); void PassOptionalSequence(const Optional >&); void PassOptionalNullableSequence(const Optional > >&); void PassOptionalNullableSequenceWithDefaultValue(const Nullable< Sequence >&); void PassOptionalObjectSequence(const Optional > >&); void PassExternalInterfaceSequence(const Sequence >&); void PassNullableExternalInterfaceSequence(const Sequence >&); void ReceiveStringSequence(nsTArray&); void PassStringSequence(const Sequence&); void ReceiveAnySequence(JSContext*, nsTArray&); void ReceiveNullableAnySequence(JSContext*, Nullable >); // Typed array types void PassArrayBuffer(ArrayBuffer&); void PassNullableArrayBuffer(ArrayBuffer*); void PassOptionalArrayBuffer(const Optional&); void PassOptionalNullableArrayBuffer(const Optional&); void PassOptionalNullableArrayBufferWithDefaultValue(ArrayBuffer*); void PassArrayBufferView(ArrayBufferView&); void PassInt8Array(Int8Array&); void PassInt16Array(Int16Array&); void PassInt32Array(Int32Array&); void PassUint8Array(Uint8Array&); void PassUint16Array(Uint16Array&); void PassUint32Array(Uint32Array&); void PassUint8ClampedArray(Uint8ClampedArray&); void PassFloat32Array(Float32Array&); void PassFloat64Array(Float64Array&); JSObject* ReceiveUint8Array(JSContext*); // String types void PassString(const nsAString&); void PassNullableString(const nsAString&); void PassOptionalString(const Optional&); void PassOptionalStringWithDefaultValue(const nsAString&); void PassOptionalNullableString(const Optional&); void PassOptionalNullableStringWithDefaultValue(const nsAString&); void PassVariadicString(const Sequence&); // Enumerated types void PassEnum(TestEnum); void PassOptionalEnum(const Optional&); void PassEnumWithDefault(TestEnum); TestEnum ReceiveEnum(); TestEnum EnumAttribute(); TestEnum ReadonlyEnumAttribute(); void SetEnumAttribute(TestEnum); // Callback types void PassCallback(TestCallback&); void PassNullableCallback(TestCallback*); void PassOptionalCallback(const Optional >&); void PassOptionalNullableCallback(const Optional >&); void PassOptionalNullableCallbackWithDefaultValue(TestCallback*); already_AddRefed ReceiveCallback(); already_AddRefed ReceiveNullableCallback(); void PassNullableTreatAsNullCallback(TestTreatAsNullCallback*); void PassOptionalNullableTreatAsNullCallback(const Optional >&); void PassOptionalNullableTreatAsNullCallbackWithDefaultValue(TestTreatAsNullCallback*); void SetTreatAsNullCallback(TestTreatAsNullCallback&); already_AddRefed TreatAsNullCallback(); void SetNullableTreatAsNullCallback(TestTreatAsNullCallback*); already_AddRefed GetNullableTreatAsNullCallback(); // Any types void PassAny(JSContext*, JS::Value); void PassOptionalAny(JSContext*, const Optional&); void PassAnyDefaultNull(JSContext*, JS::Value); JS::Value ReceiveAny(JSContext*); // object types void PassObject(JSContext*, JSObject&); void PassNullableObject(JSContext*, JSObject*); void PassOptionalObject(JSContext*, const Optional >&); void PassOptionalNullableObject(JSContext*, const Optional&); void PassOptionalNullableObjectWithDefaultValue(JSContext*, JSObject*); JSObject* ReceiveObject(JSContext*); JSObject* ReceiveNullableObject(JSContext*); // Union types void PassUnion(JSContext*, const ObjectOrLong& arg); void PassUnionWithNullable(JSContext*, const ObjectOrNullOrLong& arg) { ObjectOrLong returnValue; if (arg.IsNull()) { } else if (arg.IsObject()) { JSObject& obj = (JSObject&)arg.GetAsObject(); JS_GetClass(&obj); //returnValue.SetAsObject(&obj); } else { int32_t i = arg.GetAsLong(); i += 1; } } void PassNullableUnion(JSContext*, const Nullable&); void PassOptionalUnion(JSContext*, const Optional&); void PassOptionalNullableUnion(JSContext*, const Optional >&); void PassOptionalNullableUnionWithDefaultValue(JSContext*, const Nullable&); //void PassUnionWithInterfaces(const TestInterfaceOrTestExternalInterface& arg); //void PassUnionWithInterfacesAndNullable(const TestInterfaceOrNullOrTestExternalInterface& arg); void PassUnionWithArrayBuffer(const ArrayBufferOrLong&); void PassUnionWithString(JSContext*, const StringOrObject&); //void PassUnionWithEnum(JSContext*, const TestEnumOrObject&); //void PassUnionWithCallback(JSContext*, const TestCallbackOrLong&); void PassUnionWithObject(JSContext*, const ObjectOrLong&); // binaryNames tests void MethodRenamedTo(); void MethodRenamedTo(int8_t); int8_t AttributeGetterRenamedTo(); int8_t AttributeRenamedTo(); void SetAttributeRenamedTo(int8_t); // Dictionary tests void PassDictionary(const Dict&); void ReceiveDictionary(Dict&); void PassOtherDictionary(const GrandparentDict&); void PassSequenceOfDictionaries(const Sequence&); void PassDictionaryOrLong(const Dict&); void PassDictionaryOrLong(int32_t); void PassDictContainingDict(const DictContainingDict&); void PassDictContainingSequence(const DictContainingSequence&); void ReceiveDictContainingSequence(DictContainingSequence&); // Typedefs void ExerciseTypedefInterfaces1(TestInterface&); already_AddRefed ExerciseTypedefInterfaces2(TestInterface*); void ExerciseTypedefInterfaces3(TestInterface&); // Static methods and attributes static void StaticMethod(const GlobalObject&, bool); static void StaticMethodWithContext(const GlobalObject&, JSContext*, JS::Value); static bool StaticAttribute(const GlobalObject&); static void SetStaticAttribute(const GlobalObject&, bool); // Overload resolution tests bool Overload1(TestInterface&); TestInterface* Overload1(const nsAString&, TestInterface&); void Overload2(TestInterface&); void Overload2(const Dict&); void Overload2(const nsAString&); void Overload3(TestInterface&); void Overload3(const TestCallback&); void Overload3(const nsAString&); void Overload4(TestInterface&); void Overload4(TestCallbackInterface&); void Overload4(const nsAString&); // Variadic handling void PassVariadicThirdArg(const nsAString&, int32_t, const Sequence >&); // Miscellania int32_t AttrWithLenientThis(); void SetAttrWithLenientThis(int32_t); uint32_t UnforgeableAttr(); uint32_t UnforgeableAttr2(); void Stringify(nsString&); void PassRenamedInterface(nsRenamedInterface&); TestInterface* PutForwardsAttr(); TestInterface* PutForwardsAttr2(); TestInterface* PutForwardsAttr3(); void ThrowingMethod(ErrorResult& aRv); bool GetThrowingAttr(ErrorResult& aRv) const; void SetThrowingAttr(bool arg, ErrorResult& aRv); bool GetThrowingGetterAttr(ErrorResult& aRv) const; void SetThrowingGetterAttr(bool arg); bool ThrowingSetterAttr() const; void SetThrowingSetterAttr(bool arg, ErrorResult& aRv); // Methods and properties imported via "implements" bool ImplementedProperty(); void SetImplementedProperty(bool); void ImplementedMethod(); bool ImplementedParentProperty(); void SetImplementedParentProperty(bool); void ImplementedParentMethod(); bool IndirectlyImplementedProperty(); void SetIndirectlyImplementedProperty(bool); void IndirectlyImplementedMethod(); uint32_t DiamondImplementedProperty(); // Test EnforceRange/Clamp void DontEnforceRangeOrClamp(int8_t); void DoEnforceRange(int8_t); void DoClamp(int8_t); private: // We add signatures here that _could_ start matching if the codegen // got data types wrong. That way if it ever does we'll have a call // to these private deleted methods and compilation will fail. void SetReadonlyByte(int8_t) MOZ_DELETE; template void SetWritableByte(T) MOZ_DELETE; template void PassByte(T) MOZ_DELETE; void PassNullableByte(Nullable&) MOZ_DELETE; template void PassOptionalByte(const Optional&) MOZ_DELETE; template void PassOptionalByteWithDefault(T) MOZ_DELETE; void PassVariadicByte(Sequence&) MOZ_DELETE; void SetReadonlyShort(int16_t) MOZ_DELETE; template void SetWritableShort(T) MOZ_DELETE; template void PassShort(T) MOZ_DELETE; template void PassOptionalShort(const Optional&) MOZ_DELETE; template void PassOptionalShortWithDefault(T) MOZ_DELETE; void SetReadonlyLong(int32_t) MOZ_DELETE; template void SetWritableLong(T) MOZ_DELETE; template void PassLong(T) MOZ_DELETE; template void PassOptionalLong(const Optional&) MOZ_DELETE; template void PassOptionalLongWithDefault(T) MOZ_DELETE; void SetReadonlyLongLong(int64_t) MOZ_DELETE; template void SetWritableLongLong(T) MOZ_DELETE; template void PassLongLong(T) MOZ_DELETE; template void PassOptionalLongLong(const Optional&) MOZ_DELETE; template void PassOptionalLongLongWithDefault(T) MOZ_DELETE; void SetReadonlyOctet(uint8_t) MOZ_DELETE; template void SetWritableOctet(T) MOZ_DELETE; template void PassOctet(T) MOZ_DELETE; template void PassOptionalOctet(const Optional&) MOZ_DELETE; template void PassOptionalOctetWithDefault(T) MOZ_DELETE; void SetReadonlyUnsignedShort(uint16_t) MOZ_DELETE; template void SetWritableUnsignedShort(T) MOZ_DELETE; template void PassUnsignedShort(T) MOZ_DELETE; template void PassOptionalUnsignedShort(const Optional&) MOZ_DELETE; template void PassOptionalUnsignedShortWithDefault(T) MOZ_DELETE; void SetReadonlyUnsignedLong(uint32_t) MOZ_DELETE; template void SetWritableUnsignedLong(T) MOZ_DELETE; template void PassUnsignedLong(T) MOZ_DELETE; template void PassOptionalUnsignedLong(const Optional&) MOZ_DELETE; template void PassOptionalUnsignedLongWithDefault(T) MOZ_DELETE; void SetReadonlyUnsignedLongLong(uint64_t) MOZ_DELETE; template void SetWritableUnsignedLongLong(T) MOZ_DELETE; template void PassUnsignedLongLong(T) MOZ_DELETE; template void PassOptionalUnsignedLongLong(const Optional&) MOZ_DELETE; template void PassOptionalUnsignedLongLongWithDefault(T) MOZ_DELETE; // Enforce that only const things are passed for sequences void PassSequence(Sequence &) MOZ_DELETE; void PassNullableSequence(Nullable< Sequence >&) MOZ_DELETE; void PassOptionalNullableSequenceWithDefaultValue(Nullable< Sequence >&) MOZ_DELETE; // Enforce that only const things are passed for optional void PassOptionalByte(Optional&) MOZ_DELETE; void PassOptionalNullableByte(Optional >&) MOZ_DELETE; void PassOptionalShort(Optional&) MOZ_DELETE; void PassOptionalLong(Optional&) MOZ_DELETE; void PassOptionalLongLong(Optional&) MOZ_DELETE; void PassOptionalOctet(Optional&) MOZ_DELETE; void PassOptionalUnsignedShort(Optional&) MOZ_DELETE; void PassOptionalUnsignedLong(Optional&) MOZ_DELETE; void PassOptionalUnsignedLongLong(Optional&) MOZ_DELETE; void PassOptionalSelf(Optional &) MOZ_DELETE; void PassOptionalNonNullSelf(Optional >&) MOZ_DELETE; void PassOptionalOther(Optional&); void PassOptionalNonNullOther(Optional >&); void PassOptionalExternal(Optional&) MOZ_DELETE; void PassOptionalNonNullExternal(Optional&) MOZ_DELETE; void PassOptionalSequence(Optional >&) MOZ_DELETE; void PassOptionalNullableSequence(Optional > >&) MOZ_DELETE; void PassOptionalObjectSequence(Optional > >&) MOZ_DELETE; void PassOptionalArrayBuffer(Optional&) MOZ_DELETE; void PassOptionalNullableArrayBuffer(Optional&) MOZ_DELETE; void PassOptionalEnum(Optional&) MOZ_DELETE; void PassOptionalCallback(JSContext*, Optional&) MOZ_DELETE; void PassOptionalNullableCallback(JSContext*, Optional&) MOZ_DELETE; void PassOptionalAny(Optional&) MOZ_DELETE; // And test that string stuff is always const void PassString(nsAString&) MOZ_DELETE; void PassNullableString(nsAString&) MOZ_DELETE; void PassOptionalString(Optional&) MOZ_DELETE; void PassOptionalStringWithDefaultValue(nsAString&) MOZ_DELETE; void PassOptionalNullableString(Optional&) MOZ_DELETE; void PassOptionalNullableStringWithDefaultValue(nsAString&) MOZ_DELETE; void PassVariadicString(Sequence&) MOZ_DELETE; }; class TestIndexedGetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); uint32_t IndexedGetter(uint32_t, bool&); uint32_t IndexedGetter(uint32_t&) MOZ_DELETE; uint32_t Item(uint32_t&); uint32_t Item(uint32_t, bool&) MOZ_DELETE; uint32_t Length(); }; class TestNamedGetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void NamedGetter(const nsAString&, bool&, nsAString&); void GetSupportedNames(nsTArray&); }; class TestIndexedGetterAndSetterAndNamedGetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void NamedGetter(const nsAString&, bool&, nsAString&); void GetSupportedNames(nsTArray&); int32_t IndexedGetter(uint32_t, bool&); void IndexedSetter(uint32_t, int32_t); uint32_t Length(); }; class TestIndexedAndNamedGetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); uint32_t IndexedGetter(uint32_t, bool&); void NamedGetter(const nsAString&, bool&, nsAString&); void NamedItem(const nsAString&, nsAString&); uint32_t Length(); void GetSupportedNames(nsTArray&); }; class TestIndexedSetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void IndexedSetter(uint32_t, const nsAString&); void IndexedGetter(uint32_t, bool&, nsString&); uint32_t Length(); void SetItem(uint32_t, const nsAString&); }; class TestNamedSetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void NamedSetter(const nsAString&, TestIndexedSetterInterface&); TestIndexedSetterInterface* NamedGetter(const nsAString&, bool&); void GetSupportedNames(nsTArray&); }; class TestIndexedAndNamedSetterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void IndexedSetter(uint32_t, TestIndexedSetterInterface&); TestIndexedSetterInterface* IndexedGetter(uint32_t, bool&); uint32_t Length(); void NamedSetter(const nsAString&, TestIndexedSetterInterface&); TestIndexedSetterInterface* NamedGetter(const nsAString&, bool&); void SetNamedItem(const nsAString&, TestIndexedSetterInterface&); void GetSupportedNames(nsTArray&); }; class TestIndexedAndNamedGetterAndSetterInterface : public TestIndexedSetterInterface { public: uint32_t IndexedGetter(uint32_t, bool&); uint32_t Item(uint32_t); void NamedGetter(const nsAString&, bool&, nsAString&); void NamedItem(const nsAString&, nsAString&); void IndexedSetter(uint32_t, int32_t&); void IndexedSetter(uint32_t, const nsAString&) MOZ_DELETE; void NamedSetter(const nsAString&, const nsAString&); void Stringify(nsAString&); uint32_t Length(); void GetSupportedNames(nsTArray&); }; class TestCppKeywordNamedMethodsInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); bool Continue(); bool Delete(); int32_t Volatile(); }; class TestIndexedDeleterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void IndexedDeleter(uint32_t, bool&); void IndexedDeleter(uint32_t) MOZ_DELETE; long IndexedGetter(uint32_t, bool&); uint32_t Length(); void DelItem(uint32_t); void DelItem(uint32_t, bool&) MOZ_DELETE; }; class TestIndexedDeleterWithRetvalInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); bool IndexedDeleter(uint32_t, bool&); bool IndexedDeleter(uint32_t) MOZ_DELETE; long IndexedGetter(uint32_t, bool&); uint32_t Length(); bool DelItem(uint32_t); bool DelItem(uint32_t, bool&) MOZ_DELETE; }; class TestNamedDeleterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void NamedDeleter(const nsAString&, bool&); long NamedGetter(const nsAString&, bool&); void GetSupportedNames(nsTArray&); }; class TestNamedDeleterWithRetvalInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); bool NamedDeleter(const nsAString&, bool&); bool NamedDeleter(const nsAString&) MOZ_DELETE; long NamedGetter(const nsAString&, bool&); bool DelNamedItem(const nsAString&); bool DelNamedItem(const nsAString&, bool&) MOZ_DELETE; void GetSupportedNames(nsTArray&); }; class TestIndexedAndNamedDeleterInterface : public nsISupports, public nsWrapperCache { public: NS_DECL_ISUPPORTS // We need a GetParentObject to make binding codegen happy virtual nsISupports* GetParentObject(); void IndexedDeleter(uint32_t, bool&); long IndexedGetter(uint32_t, bool&); uint32_t Length(); void NamedDeleter(const nsAString&, bool&); void NamedDeleter(const nsAString&) MOZ_DELETE; long NamedGetter(const nsAString&, bool&); void DelNamedItem(const nsAString&); void DelNamedItem(const nsAString&, bool&) MOZ_DELETE; void GetSupportedNames(nsTArray&); }; class TestChildInterface : public TestInterface { public: NS_DECL_ISUPPORTS }; } // namespace dom } // namespace mozilla #endif /* TestBindingHeader_h */