From 3e4cec4ec3ec6de8ed44786ef240e6dae64c8d3b Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Mon, 5 May 2014 15:58:10 -0400 Subject: [PATCH] servo: Merge #2325 - Use default methods to reduce code duplication for TestBinding (from Ms2ger:testbinding-default); r=jdm Source-Repo: https://github.com/servo/servo Source-Revision: b14b2eca372ea91dc40af66b1f8a9cd510c37abf --- .../src/components/script/dom/testbinding.rs | 201 ++---------------- 1 file changed, 13 insertions(+), 188 deletions(-) diff --git a/servo/src/components/script/dom/testbinding.rs b/servo/src/components/script/dom/testbinding.rs index f003c1c6c342..ed22f34edf09 100644 --- a/servo/src/components/script/dom/testbinding.rs +++ b/servo/src/components/script/dom/testbinding.rs @@ -23,186 +23,6 @@ pub struct TestBinding { } 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 } @@ -231,10 +51,7 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> { 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 InterfaceAttribute(&self) -> Temporary; fn SetInterfaceAttribute(&self, _: &JSRef) {} fn AnyAttribute(&self, _: *JSContext) -> JSVal { NullValue() } fn SetAnyAttribute(&self, _: *JSContext, _: JSVal) {} @@ -266,10 +83,7 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> { fn GetStringAttributeNullable(&self) -> Option { Some("".to_owned()) } fn SetStringAttributeNullable(&self, _: Option) {} fn GetEnumAttributeNullable(&self) -> Option { Some(_empty) } - fn GetInterfaceAttributeNullable(&self) -> Option> { - let window = self.window.root(); - Some(Blob::new(&*window)) - } + fn GetInterfaceAttributeNullable(&self) -> Option>; fn SetInterfaceAttributeNullable(&self, _: Option>) {} fn PassBoolean(&self, _: bool) {} @@ -388,6 +202,17 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> { // fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option) {} } +impl<'a> TestBindingMethods for JSRef<'a, TestBinding> { + fn InterfaceAttribute(&self) -> Temporary { + let window = self.window.root(); + Blob::new(&*window) + } + fn GetInterfaceAttributeNullable(&self) -> Option> { + let window = self.window.root(); + Some(Blob::new(&*window)) + } +} + impl Reflectable for TestBinding { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector