/* -*- 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 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 }; // IID for the TestCallbackInterface #define NS_TEST_CALLBACK_INTERFACE_IID \ { 0xbf711ba4, 0xc8f6, 0x46cf, \ { 0xba, 0x5b, 0xaa, 0xe2, 0x78, 0x18, 0xe6, 0x4a } } class TestCallbackInterface : public nsISupports { public: NS_DECLARE_STATIC_IID_ACCESSOR(NS_TEST_CALLBACK_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(nsISupports*, ErrorResult&); static already_AddRefed Constructor(nsISupports*, const nsAString&, ErrorResult&); static already_AddRefed Constructor(nsISupports*, uint32_t, Nullable&, ErrorResult&); static already_AddRefed Constructor(nsISupports*, TestInterface*, ErrorResult&); static already_AddRefed Constructor(nsISupports*, TestNonCastableInterface&, ErrorResult&); /* static already_AddRefed Constructor(nsISupports*, 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(Nullable&); void PassOptionalNullableByte(const Optional< Nullable >&); 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); // 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 ReceiveNullableCastableObjectSequence(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 ReceiveStringSequence(nsTArray&); void PassStringSequence(const Sequence&); // 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(); // 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&); // Enumarated types void PassEnum(TestEnum); void PassOptionalEnum(const Optional&); void PassEnumWithDefault(TestEnum); TestEnum ReceiveEnum(); TestEnum EnumAttribute(); TestEnum ReadonlyEnumAttribute(); void SetEnumAttribute(TestEnum); // Callback types void PassCallback(JSContext*, JSObject*); void PassNullableCallback(JSContext*, JSObject*); void PassOptionalCallback(JSContext*, const Optional&); void PassOptionalNullableCallback(JSContext*, const Optional&); void PassOptionalNullableCallbackWithDefaultValue(JSContext*, JSObject*); JSObject* ReceiveCallback(JSContext*); JSObject* ReceiveNullableCallback(JSContext*); // 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 PassOtherDictionary(const GrandparentDict&); void PassSequenceOfDictionaries(const Sequence&); void PassDictionaryOrLong(const Dict&); void PassDictionaryOrLong(int32_t); void PassDictContainingDict(const DictContainingDict&); // Typedefs void ExerciseTypedefInterfaces1(TestInterface&); already_AddRefed ExerciseTypedefInterfaces2(TestInterface*); void ExerciseTypedefInterfaces3(TestInterface&); // Miscellania int32_t AttrWithLenientThis(); void SetAttrWithLenientThis(int32_t); // 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; template void PassOptionalByte(const Optional&) MOZ_DELETE; template void PassOptionalByteWithDefault(T) 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; }; 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&); }; 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(); }; 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 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&); }; 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&); void NamedSetter(const nsAString&, TestIndexedSetterInterface&); void SetNamedItem(const nsAString&, TestIndexedSetterInterface&); }; 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(); }; } // namespace dom } // namespace mozilla #endif /* TestBindingHeader_h */