/* 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/. */ use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::codegen::BindingDeclarations::TestBindingBinding; use dom::bindings::codegen::UnionTypes::HTMLElementOrLong; use self::TestBindingBinding::TestEnum; use self::TestBindingBinding::TestEnumValues::_empty; use dom::bindings::str::ByteString; use dom::bindings::utils::{Reflector, Reflectable}; use dom::blob::Blob; use dom::window::Window; use servo_util::str::DOMString; use js::jsapi::JSContext; use js::jsval::{JSVal, NullValue}; #[deriving(Encodable)] pub struct TestBinding { pub reflector: Reflector, pub window: JS, } pub trait TestBindingMethods { fn BooleanAttribute(&self) -> bool; fn SetBooleanAttribute(&self, _: bool); fn ByteAttribute(&self) -> i8; fn SetByteAttribute(&self, _: i8); fn OctetAttribute(&self) -> u8; fn SetOctetAttribute(&self, _: u8); fn ShortAttribute(&self) -> i16; fn SetShortAttribute(&self, _: i16); fn UnsignedShortAttribute(&self) -> u16; fn SetUnsignedShortAttribute(&self, _: u16); fn LongAttribute(&self) -> i32; fn SetLongAttribute(&self, _: i32); fn UnsignedLongAttribute(&self) -> u32; fn SetUnsignedLongAttribute(&self, _: u32); fn LongLongAttribute(&self) -> i64; fn SetLongLongAttribute(&self, _: i64); fn UnsignedLongLongAttribute(&self) -> u64; fn SetUnsignedLongLongAttribute(&self, _: u64); fn FloatAttribute(&self) -> f32; fn SetFloatAttribute(&self, _: f32); fn DoubleAttribute(&self) -> f64; fn SetDoubleAttribute(&self, _: f64); fn StringAttribute(&self) -> DOMString; fn SetStringAttribute(&self, _: DOMString); fn ByteStringAttribute(&self) -> ByteString; fn SetByteStringAttribute(&self, _: ByteString); fn EnumAttribute(&self) -> TestEnum; fn SetEnumAttribute(&self, _: TestEnum); fn InterfaceAttribute(&self) -> Temporary; fn SetInterfaceAttribute(&self, _: &JSRef); fn AnyAttribute(&self, _: *JSContext) -> JSVal; fn SetAnyAttribute(&self, _: *JSContext, _: JSVal); fn GetBooleanAttributeNullable(&self) -> Option; fn SetBooleanAttributeNullable(&self, _: Option); fn GetByteAttributeNullable(&self) -> Option; fn SetByteAttributeNullable(&self, _: Option); fn GetOctetAttributeNullable(&self) -> Option; fn SetOctetAttributeNullable(&self, _: Option); fn GetShortAttributeNullable(&self) -> Option; fn SetShortAttributeNullable(&self, _: Option); fn GetUnsignedShortAttributeNullable(&self) -> Option; fn SetUnsignedShortAttributeNullable(&self, _: Option); fn GetLongAttributeNullable(&self) -> Option; fn SetLongAttributeNullable(&self, _: Option); fn GetUnsignedLongAttributeNullable(&self) -> Option; fn SetUnsignedLongAttributeNullable(&self, _: Option); fn GetLongLongAttributeNullable(&self) -> Option; fn SetLongLongAttributeNullable(&self, _: Option); fn GetUnsignedLongLongAttributeNullable(&self) -> Option; fn SetUnsignedLongLongAttributeNullable(&self, _: Option); fn GetFloatAttributeNullable(&self) -> Option; fn SetFloatAttributeNullable(&self, _: Option); fn GetDoubleAttributeNullable(&self) -> Option; fn SetDoubleAttributeNullable(&self, _: Option); fn GetByteStringAttributeNullable(&self) -> Option; fn SetByteStringAttributeNullable(&self, _: Option); fn GetStringAttributeNullable(&self) -> Option; fn SetStringAttributeNullable(&self, _: Option); fn GetEnumAttributeNullable(&self) -> Option; fn GetInterfaceAttributeNullable(&self) -> Option>; fn SetInterfaceAttributeNullable(&self, _: Option>); fn PassBoolean(&self, _: bool); fn PassByte(&self, _: i8); fn PassOctet(&self, _: u8); fn PassShort(&self, _: i16); fn PassUnsignedShort(&self, _: u16); fn PassLong(&self, _: i32); fn PassUnsignedLong(&self, _: u32); fn PassLongLong(&self, _: i64); fn PassUnsignedLongLong(&self, _: u64); fn PassFloat(&self, _: f32); fn PassDouble(&self, _: f64); fn PassString(&self, _: DOMString); fn PassByteString(&self, _: ByteString); fn PassEnum(&self, _: TestEnum); fn PassInterface(&self, _: &JSRef); fn PassUnion(&self, _: HTMLElementOrLong); fn PassAny(&self, _: *JSContext, _: JSVal); fn PassNullableBoolean(&self, _: Option); fn PassNullableByte(&self, _: Option); fn PassNullableOctet(&self, _: Option); fn PassNullableShort(&self, _: Option); fn PassNullableUnsignedShort(&self, _: Option); fn PassNullableLong(&self, _: Option); fn PassNullableUnsignedLong(&self, _: Option); fn PassNullableLongLong(&self, _: Option); fn PassNullableUnsignedLongLong(&self, _: Option); fn PassNullableFloat(&self, _: Option); fn PassNullableDouble(&self, _: Option); fn PassNullableString(&self, _: Option); fn PassNullableByteString(&self, _: Option) {} // fn PassNullableEnum(&self, _: Option); fn PassNullableInterface(&self, _: Option>); fn PassNullableUnion(&self, _: Option); fn PassNullableAny(&self, _: *JSContext, _: Option); fn PassOptionalBoolean(&self, _: Option); fn PassOptionalByte(&self, _: Option); fn PassOptionalOctet(&self, _: Option); fn PassOptionalShort(&self, _: Option); fn PassOptionalUnsignedShort(&self, _: Option); fn PassOptionalLong(&self, _: Option); fn PassOptionalUnsignedLong(&self, _: Option); fn PassOptionalLongLong(&self, _: Option); fn PassOptionalUnsignedLongLong(&self, _: Option); fn PassOptionalFloat(&self, _: Option); fn PassOptionalDouble(&self, _: Option); fn PassOptionalString(&self, _: Option); fn PassOptionalByteString(&self, _: Option) {} fn PassOptionalEnum(&self, _: Option); fn PassOptionalInterface(&self, _: Option>); fn PassOptionalUnion(&self, _: Option); fn PassOptionalAny(&self, _: *JSContext, _: Option); fn PassOptionalNullableBoolean(&self, _: Option>); fn PassOptionalNullableByte(&self, _: Option>); fn PassOptionalNullableOctet(&self, _: Option>); fn PassOptionalNullableShort(&self, _: Option>); fn PassOptionalNullableUnsignedShort(&self, _: Option>); fn PassOptionalNullableLong(&self, _: Option>); fn PassOptionalNullableUnsignedLong(&self, _: Option>); fn PassOptionalNullableLongLong(&self, _: Option>); fn PassOptionalNullableUnsignedLongLong(&self, _: Option>); fn PassOptionalNullableFloat(&self, _: Option>); fn PassOptionalNullableDouble(&self, _: Option>); fn PassOptionalNullableString(&self, _: Option>); fn PassOptionalNullableByteString(&self, _: Option>) {} // fn PassOptionalNullableEnum(&self, _: Option>); fn PassOptionalNullableInterface(&self, _: Option>>); fn PassOptionalNullableUnion(&self, _: Option>); fn PassOptionalBooleanWithDefault(&self, _: bool); fn PassOptionalByteWithDefault(&self, _: i8); fn PassOptionalOctetWithDefault(&self, _: u8); fn PassOptionalShortWithDefault(&self, _: i16); fn PassOptionalUnsignedShortWithDefault(&self, _: u16); fn PassOptionalLongWithDefault(&self, _: i32); fn PassOptionalUnsignedLongWithDefault(&self, _: u32); fn PassOptionalLongLongWithDefault(&self, _: i64); fn PassOptionalUnsignedLongLongWithDefault(&self, _: u64); fn PassOptionalStringWithDefault(&self, _: DOMString); fn PassOptionalEnumWithDefault(&self, _: TestEnum); fn PassOptionalNullableBooleanWithDefault(&self, _: Option); fn PassOptionalNullableByteWithDefault(&self, _: Option); fn PassOptionalNullableOctetWithDefault(&self, _: Option); fn PassOptionalNullableShortWithDefault(&self, _: Option); fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option); fn PassOptionalNullableLongWithDefault(&self, _: Option); fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option); fn PassOptionalNullableLongLongWithDefault(&self, _: Option); fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option); fn PassOptionalNullableFloatWithDefault(&self, _: Option); fn PassOptionalNullableDoubleWithDefault(&self, _: Option); fn PassOptionalNullableStringWithDefault(&self, _: Option); fn PassOptionalNullableByteStringWithDefault(&self, _: Option) {} // fn PassOptionalNullableEnumWithDefault(&self, _: Option); fn PassOptionalNullableInterfaceWithDefault(&self, _: Option>); fn PassOptionalNullableUnionWithDefault(&self, _: Option); fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal); fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option); fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option); fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option); fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option); fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option); fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option); fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option); fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option); fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option); // fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option); // fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option); fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option); // fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option); } impl<'a> TestBindingMethods for JSRef<'a, TestBinding> { fn BooleanAttribute(&self) -> bool { false } fn SetBooleanAttribute(&self, _: bool) {} fn ByteAttribute(&self) -> i8 { 0 } fn SetByteAttribute(&self, _: i8) {} fn OctetAttribute(&self) -> u8 { 0 } fn SetOctetAttribute(&self, _: u8) {} fn ShortAttribute(&self) -> i16 { 0 } fn SetShortAttribute(&self, _: i16) {} fn UnsignedShortAttribute(&self) -> u16 { 0 } fn SetUnsignedShortAttribute(&self, _: u16) {} fn LongAttribute(&self) -> i32 { 0 } fn SetLongAttribute(&self, _: i32) {} fn UnsignedLongAttribute(&self) -> u32 { 0 } fn SetUnsignedLongAttribute(&self, _: u32) {} fn LongLongAttribute(&self) -> i64 { 0 } fn SetLongLongAttribute(&self, _: i64) {} fn UnsignedLongLongAttribute(&self) -> u64 { 0 } fn SetUnsignedLongLongAttribute(&self, _: u64) {} fn FloatAttribute(&self) -> f32 { 0. } fn SetFloatAttribute(&self, _: f32) {} fn DoubleAttribute(&self) -> f64 { 0. } fn SetDoubleAttribute(&self, _: f64) {} fn StringAttribute(&self) -> DOMString { ~"" } fn SetStringAttribute(&self, _: DOMString) {} fn ByteStringAttribute(&self) -> ByteString { ByteString::new(vec!()) } fn SetByteStringAttribute(&self, _: ByteString) {} fn EnumAttribute(&self) -> TestEnum { _empty } fn SetEnumAttribute(&self, _: TestEnum) {} fn InterfaceAttribute(&self) -> Temporary { let window = self.window.root(); Blob::new(&*window) } fn SetInterfaceAttribute(&self, _: &JSRef) {} fn AnyAttribute(&self, _: *JSContext) -> JSVal { NullValue() } fn SetAnyAttribute(&self, _: *JSContext, _: JSVal) {} fn GetBooleanAttributeNullable(&self) -> Option { Some(false) } fn SetBooleanAttributeNullable(&self, _: Option) {} fn GetByteAttributeNullable(&self) -> Option { Some(0) } fn SetByteAttributeNullable(&self, _: Option) {} fn GetOctetAttributeNullable(&self) -> Option { Some(0) } fn SetOctetAttributeNullable(&self, _: Option) {} fn GetShortAttributeNullable(&self) -> Option { Some(0) } fn SetShortAttributeNullable(&self, _: Option) {} fn GetUnsignedShortAttributeNullable(&self) -> Option { Some(0) } fn SetUnsignedShortAttributeNullable(&self, _: Option) {} fn GetLongAttributeNullable(&self) -> Option { Some(0) } fn SetLongAttributeNullable(&self, _: Option) {} fn GetUnsignedLongAttributeNullable(&self) -> Option { Some(0) } fn SetUnsignedLongAttributeNullable(&self, _: Option) {} fn GetLongLongAttributeNullable(&self) -> Option { Some(0) } fn SetLongLongAttributeNullable(&self, _: Option) {} fn GetUnsignedLongLongAttributeNullable(&self) -> Option { Some(0) } fn SetUnsignedLongLongAttributeNullable(&self, _: Option) {} fn GetFloatAttributeNullable(&self) -> Option { Some(0.) } fn SetFloatAttributeNullable(&self, _: Option) {} fn GetDoubleAttributeNullable(&self) -> Option { Some(0.) } fn SetDoubleAttributeNullable(&self, _: Option) {} fn GetByteStringAttributeNullable(&self) -> Option { Some(ByteString::new(vec!())) } fn SetByteStringAttributeNullable(&self, _: Option) {} fn GetStringAttributeNullable(&self) -> Option { Some(~"") } fn SetStringAttributeNullable(&self, _: Option) {} fn GetEnumAttributeNullable(&self) -> Option { Some(_empty) } fn GetInterfaceAttributeNullable(&self) -> Option> { let window = self.window.root(); Some(Blob::new(&*window)) } fn SetInterfaceAttributeNullable(&self, _: Option>) {} fn PassBoolean(&self, _: bool) {} fn PassByte(&self, _: i8) {} fn PassOctet(&self, _: u8) {} fn PassShort(&self, _: i16) {} fn PassUnsignedShort(&self, _: u16) {} fn PassLong(&self, _: i32) {} fn PassUnsignedLong(&self, _: u32) {} fn PassLongLong(&self, _: i64) {} fn PassUnsignedLongLong(&self, _: u64) {} fn PassFloat(&self, _: f32) {} fn PassDouble(&self, _: f64) {} fn PassString(&self, _: DOMString) {} fn PassByteString(&self, _: ByteString) {} fn PassEnum(&self, _: TestEnum) {} fn PassInterface(&self, _: &JSRef) {} fn PassUnion(&self, _: HTMLElementOrLong) {} fn PassAny(&self, _: *JSContext, _: JSVal) {} fn PassNullableBoolean(&self, _: Option) {} fn PassNullableByte(&self, _: Option) {} fn PassNullableOctet(&self, _: Option) {} fn PassNullableShort(&self, _: Option) {} fn PassNullableUnsignedShort(&self, _: Option) {} fn PassNullableLong(&self, _: Option) {} fn PassNullableUnsignedLong(&self, _: Option) {} fn PassNullableLongLong(&self, _: Option) {} fn PassNullableUnsignedLongLong(&self, _: Option) {} fn PassNullableFloat(&self, _: Option) {} fn PassNullableDouble(&self, _: Option) {} fn PassNullableString(&self, _: Option) {} fn PassNullableByteString(&self, _: Option) {} // fn PassNullableEnum(&self, _: Option) {} fn PassNullableInterface(&self, _: Option>) {} fn PassNullableUnion(&self, _: Option) {} fn PassNullableAny(&self, _: *JSContext, _: Option) {} fn PassOptionalBoolean(&self, _: Option) {} fn PassOptionalByte(&self, _: Option) {} fn PassOptionalOctet(&self, _: Option) {} fn PassOptionalShort(&self, _: Option) {} fn PassOptionalUnsignedShort(&self, _: Option) {} fn PassOptionalLong(&self, _: Option) {} fn PassOptionalUnsignedLong(&self, _: Option) {} fn PassOptionalLongLong(&self, _: Option) {} fn PassOptionalUnsignedLongLong(&self, _: Option) {} fn PassOptionalFloat(&self, _: Option) {} fn PassOptionalDouble(&self, _: Option) {} fn PassOptionalString(&self, _: Option) {} fn PassOptionalByteString(&self, _: Option) {} fn PassOptionalEnum(&self, _: Option) {} fn PassOptionalInterface(&self, _: Option>) {} fn PassOptionalUnion(&self, _: Option) {} fn PassOptionalAny(&self, _: *JSContext, _: Option) {} fn PassOptionalNullableBoolean(&self, _: Option>) {} fn PassOptionalNullableByte(&self, _: Option>) {} fn PassOptionalNullableOctet(&self, _: Option>) {} fn PassOptionalNullableShort(&self, _: Option>) {} fn PassOptionalNullableUnsignedShort(&self, _: Option>) {} fn PassOptionalNullableLong(&self, _: Option>) {} fn PassOptionalNullableUnsignedLong(&self, _: Option>) {} fn PassOptionalNullableLongLong(&self, _: Option>) {} fn PassOptionalNullableUnsignedLongLong(&self, _: Option>) {} fn PassOptionalNullableFloat(&self, _: Option>) {} fn PassOptionalNullableDouble(&self, _: Option>) {} fn PassOptionalNullableString(&self, _: Option>) {} fn PassOptionalNullableByteString(&self, _: Option>) {} // fn PassOptionalNullableEnum(&self, _: Option>) {} fn PassOptionalNullableInterface(&self, _: Option>>) {} fn PassOptionalNullableUnion(&self, _: Option>) {} fn PassOptionalBooleanWithDefault(&self, _: bool) {} fn PassOptionalByteWithDefault(&self, _: i8) {} fn PassOptionalOctetWithDefault(&self, _: u8) {} fn PassOptionalShortWithDefault(&self, _: i16) {} fn PassOptionalUnsignedShortWithDefault(&self, _: u16) {} fn PassOptionalLongWithDefault(&self, _: i32) {} fn PassOptionalUnsignedLongWithDefault(&self, _: u32) {} fn PassOptionalLongLongWithDefault(&self, _: i64) {} fn PassOptionalUnsignedLongLongWithDefault(&self, _: u64) {} fn PassOptionalStringWithDefault(&self, _: DOMString) {} fn PassOptionalEnumWithDefault(&self, _: TestEnum) {} fn PassOptionalNullableBooleanWithDefault(&self, _: Option) {} fn PassOptionalNullableByteWithDefault(&self, _: Option) {} fn PassOptionalNullableOctetWithDefault(&self, _: Option) {} fn PassOptionalNullableShortWithDefault(&self, _: Option) {} fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option) {} fn PassOptionalNullableLongWithDefault(&self, _: Option) {} fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option) {} fn PassOptionalNullableLongLongWithDefault(&self, _: Option) {} fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option) {} fn PassOptionalNullableFloatWithDefault(&self, _: Option) {} fn PassOptionalNullableDoubleWithDefault(&self, _: Option) {} fn PassOptionalNullableStringWithDefault(&self, _: Option) {} fn PassOptionalNullableByteStringWithDefault(&self, _: Option) {} // fn PassOptionalNullableEnumWithDefault(&self, _: Option) {} fn PassOptionalNullableInterfaceWithDefault(&self, _: Option>) {} fn PassOptionalNullableUnionWithDefault(&self, _: Option) {} fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal) {} fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option) {} // fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option) {} // fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option) {} fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option) {} // fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option) {} } impl Reflectable for TestBinding { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector } fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { &mut self.reflector } }