aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/testbinding.rs
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-05-03 14:25:22 -0400
committerbors-servo <release+servo@mozilla.com>2014-05-03 14:25:22 -0400
commit731e66ff132e41cdc49bc5324c0e15be19c46ec2 (patch)
treeccce9b42e8a6c54245e53620082efe0b9840eae1 /src/components/script/dom/testbinding.rs
parent4051a8096d7ba7e7f9c86e76d0b4bffd83e85805 (diff)
parent91278da9dd55582401154e07f9eea34425a332c2 (diff)
downloadservo-731e66ff132e41cdc49bc5324c0e15be19c46ec2.tar.gz
servo-731e66ff132e41cdc49bc5324c0e15be19c46ec2.zip
auto merge of #2101 : jdm/servo/newroot_rebase, r=Ms2ger
As described in #1764, this strategy uses the following properties: * DOM members are `JS<T>` types. These cannot be used with being explicitly rooted, but they are required for compiler-derived trace hooks. * Methods that take DOM type arguments receive `&[mut] JSRef<T>`. These are rooted value references that are cloneable but cannot escape. * Methods that return DOM values use `Unrooted<T>`. These are values that may or may not be rooted elsewhere, but callers must root them in order to interact with them in any way. One unsoundness hole exists - `Unrooted` values must be rooted ASAP, or there exists the danger that JSAPI calls could be made that could cause the underlying JS value to be GCed. * All methods are implemented on `JSRef<T>`, enforcing the requirement that all DOM values are rooted for the duration of a method call (with a few exceptions for layout-related code, which cannot root values and therefore interacts with `JS<T>` and `&T` values - this is safe under the assumption that layout code interacts with DOM nodes that are in the tree, therefore rooted, and does not run concurrently with content code)
Diffstat (limited to 'src/components/script/dom/testbinding.rs')
-rw-r--r--src/components/script/dom/testbinding.rs544
1 files changed, 365 insertions, 179 deletions
diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs
index 6283b5a350e..a860d1c3d0f 100644
--- a/src/components/script/dom/testbinding.rs
+++ b/src/components/script/dom/testbinding.rs
@@ -2,7 +2,7 @@
* 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;
+use dom::bindings::js::{JS, JSRef, Temporary};
use dom::bindings::codegen::BindingDeclarations::TestBindingBinding;
use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
use self::TestBindingBinding::TestEnum;
@@ -22,184 +22,370 @@ pub struct TestBinding {
pub window: JS<Window>,
}
-impl TestBinding {
- pub fn BooleanAttribute(&self) -> bool { false }
- pub fn SetBooleanAttribute(&self, _: bool) {}
- pub fn ByteAttribute(&self) -> i8 { 0 }
- pub fn SetByteAttribute(&self, _: i8) {}
- pub fn OctetAttribute(&self) -> u8 { 0 }
- pub fn SetOctetAttribute(&self, _: u8) {}
- pub fn ShortAttribute(&self) -> i16 { 0 }
- pub fn SetShortAttribute(&self, _: i16) {}
- pub fn UnsignedShortAttribute(&self) -> u16 { 0 }
- pub fn SetUnsignedShortAttribute(&self, _: u16) {}
- pub fn LongAttribute(&self) -> i32 { 0 }
- pub fn SetLongAttribute(&self, _: i32) {}
- pub fn UnsignedLongAttribute(&self) -> u32 { 0 }
- pub fn SetUnsignedLongAttribute(&self, _: u32) {}
- pub fn LongLongAttribute(&self) -> i64 { 0 }
- pub fn SetLongLongAttribute(&self, _: i64) {}
- pub fn UnsignedLongLongAttribute(&self) -> u64 { 0 }
- pub fn SetUnsignedLongLongAttribute(&self, _: u64) {}
- pub fn FloatAttribute(&self) -> f32 { 0. }
- pub fn SetFloatAttribute(&self, _: f32) {}
- pub fn DoubleAttribute(&self) -> f64 { 0. }
- pub fn SetDoubleAttribute(&self, _: f64) {}
- pub fn StringAttribute(&self) -> DOMString { ~"" }
- pub fn SetStringAttribute(&self, _: DOMString) {}
- pub fn ByteStringAttribute(&self) -> ByteString { ByteString::new(vec!()) }
- pub fn SetByteStringAttribute(&self, _: ByteString) {}
- pub fn EnumAttribute(&self) -> TestEnum { _empty }
- pub fn SetEnumAttribute(&self, _: TestEnum) {}
- pub fn InterfaceAttribute(&self) -> JS<Blob> { Blob::new(&self.window) }
- pub fn SetInterfaceAttribute(&self, _: &JS<Blob>) {}
- pub fn AnyAttribute(&self, _: *JSContext) -> JSVal { NullValue() }
- pub fn SetAnyAttribute(&self, _: *JSContext, _: JSVal) {}
-
- pub fn GetBooleanAttributeNullable(&self) -> Option<bool> { Some(false) }
- pub fn SetBooleanAttributeNullable(&self, _: Option<bool>) {}
- pub fn GetByteAttributeNullable(&self) -> Option<i8> { Some(0) }
- pub fn SetByteAttributeNullable(&self, _: Option<i8>) {}
- pub fn GetOctetAttributeNullable(&self) -> Option<u8> { Some(0) }
- pub fn SetOctetAttributeNullable(&self, _: Option<u8>) {}
- pub fn GetShortAttributeNullable(&self) -> Option<i16> { Some(0) }
- pub fn SetShortAttributeNullable(&self, _: Option<i16>) {}
- pub fn GetUnsignedShortAttributeNullable(&self) -> Option<u16> { Some(0) }
- pub fn SetUnsignedShortAttributeNullable(&self, _: Option<u16>) {}
- pub fn GetLongAttributeNullable(&self) -> Option<i32> { Some(0) }
- pub fn SetLongAttributeNullable(&self, _: Option<i32>) {}
- pub fn GetUnsignedLongAttributeNullable(&self) -> Option<u32> { Some(0) }
- pub fn SetUnsignedLongAttributeNullable(&self, _: Option<u32>) {}
- pub fn GetLongLongAttributeNullable(&self) -> Option<i64> { Some(0) }
- pub fn SetLongLongAttributeNullable(&self, _: Option<i64>) {}
- pub fn GetUnsignedLongLongAttributeNullable(&self) -> Option<u64> { Some(0) }
- pub fn SetUnsignedLongLongAttributeNullable(&self, _: Option<u64>) {}
- pub fn GetFloatAttributeNullable(&self) -> Option<f32> { Some(0.) }
- pub fn SetFloatAttributeNullable(&self, _: Option<f32>) {}
- pub fn GetDoubleAttributeNullable(&self) -> Option<f64> { Some(0.) }
- pub fn SetDoubleAttributeNullable(&self, _: Option<f64>) {}
- pub fn GetByteStringAttributeNullable(&self) -> Option<ByteString> { Some(ByteString::new(vec!())) }
- pub fn SetByteStringAttributeNullable(&self, _: Option<ByteString>) {}
- pub fn GetStringAttributeNullable(&self) -> Option<DOMString> { Some(~"") }
- pub fn SetStringAttributeNullable(&self, _: Option<DOMString>) {}
- pub fn GetEnumAttributeNullable(&self) -> Option<TestEnum> { Some(_empty) }
- pub fn GetInterfaceAttributeNullable(&self) -> Option<JS<Blob>> { Some(Blob::new(&self.window)) }
- pub fn SetInterfaceAttributeNullable(&self, _: Option<JS<Blob>>) {}
-
- pub fn PassBoolean(&self, _: bool) {}
- pub fn PassByte(&self, _: i8) {}
- pub fn PassOctet(&self, _: u8) {}
- pub fn PassShort(&self, _: i16) {}
- pub fn PassUnsignedShort(&self, _: u16) {}
- pub fn PassLong(&self, _: i32) {}
- pub fn PassUnsignedLong(&self, _: u32) {}
- pub fn PassLongLong(&self, _: i64) {}
- pub fn PassUnsignedLongLong(&self, _: u64) {}
- pub fn PassFloat(&self, _: f32) {}
- pub fn PassDouble(&self, _: f64) {}
- pub fn PassString(&self, _: DOMString) {}
- pub fn PassByteString(&self, _: ByteString) {}
- pub fn PassEnum(&self, _: TestEnum) {}
- pub fn PassInterface(&self, _: &JS<Blob>) {}
- pub fn PassUnion(&self, _: HTMLElementOrLong) {}
- pub fn PassAny(&self, _: *JSContext, _: JSVal) {}
-
- pub fn PassNullableBoolean(&self, _: Option<bool>) {}
- pub fn PassNullableByte(&self, _: Option<i8>) {}
- pub fn PassNullableOctet(&self, _: Option<u8>) {}
- pub fn PassNullableShort(&self, _: Option<i16>) {}
- pub fn PassNullableUnsignedShort(&self, _: Option<u16>) {}
- pub fn PassNullableLong(&self, _: Option<i32>) {}
- pub fn PassNullableUnsignedLong(&self, _: Option<u32>) {}
- pub fn PassNullableLongLong(&self, _: Option<i64>) {}
- pub fn PassNullableUnsignedLongLong(&self, _: Option<u64>) {}
- pub fn PassNullableFloat(&self, _: Option<f32>) {}
- pub fn PassNullableDouble(&self, _: Option<f64>) {}
- pub fn PassNullableString(&self, _: Option<DOMString>) {}
- pub fn PassNullableByteString(&self, _: Option<ByteString>) {}
- // pub fn PassNullableEnum(&self, _: Option<TestEnum>) {}
- pub fn PassNullableInterface(&self, _: Option<JS<Blob>>) {}
- pub fn PassNullableUnion(&self, _: Option<HTMLElementOrLong>) {}
- pub fn PassNullableAny(&self, _: *JSContext, _: Option<JSVal>) {}
-
- pub fn PassOptionalBoolean(&self, _: Option<bool>) {}
- pub fn PassOptionalByte(&self, _: Option<i8>) {}
- pub fn PassOptionalOctet(&self, _: Option<u8>) {}
- pub fn PassOptionalShort(&self, _: Option<i16>) {}
- pub fn PassOptionalUnsignedShort(&self, _: Option<u16>) {}
- pub fn PassOptionalLong(&self, _: Option<i32>) {}
- pub fn PassOptionalUnsignedLong(&self, _: Option<u32>) {}
- pub fn PassOptionalLongLong(&self, _: Option<i64>) {}
- pub fn PassOptionalUnsignedLongLong(&self, _: Option<u64>) {}
- pub fn PassOptionalFloat(&self, _: Option<f32>) {}
- pub fn PassOptionalDouble(&self, _: Option<f64>) {}
- pub fn PassOptionalString(&self, _: Option<DOMString>) {}
- pub fn PassOptionalByteString(&self, _: Option<ByteString>) {}
- pub fn PassOptionalEnum(&self, _: Option<TestEnum>) {}
- pub fn PassOptionalInterface(&self, _: Option<JS<Blob>>) {}
- pub fn PassOptionalUnion(&self, _: Option<HTMLElementOrLong>) {}
- pub fn PassOptionalAny(&self, _: *JSContext, _: Option<JSVal>) {}
-
- pub fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>) {}
- pub fn PassOptionalNullableByte(&self, _: Option<Option<i8>>) {}
- pub fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>) {}
- pub fn PassOptionalNullableShort(&self, _: Option<Option<i16>>) {}
- pub fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>) {}
- pub fn PassOptionalNullableLong(&self, _: Option<Option<i32>>) {}
- pub fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>) {}
- pub fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>) {}
- pub fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>) {}
- pub fn PassOptionalNullableFloat(&self, _: Option<Option<f32>>) {}
- pub fn PassOptionalNullableDouble(&self, _: Option<Option<f64>>) {}
- pub fn PassOptionalNullableString(&self, _: Option<Option<DOMString>>) {}
- pub fn PassOptionalNullableByteString(&self, _: Option<Option<ByteString>>) {}
- // pub fn PassOptionalNullableEnum(&self, _: Option<Option<TestEnum>>) {}
- pub fn PassOptionalNullableInterface(&self, _: Option<Option<JS<Blob>>>) {}
- pub fn PassOptionalNullableUnion(&self, _: Option<Option<HTMLElementOrLong>>) {}
-
- pub fn PassOptionalBooleanWithDefault(&self, _: bool) {}
- pub fn PassOptionalByteWithDefault(&self, _: i8) {}
- pub fn PassOptionalOctetWithDefault(&self, _: u8) {}
- pub fn PassOptionalShortWithDefault(&self, _: i16) {}
- pub fn PassOptionalUnsignedShortWithDefault(&self, _: u16) {}
- pub fn PassOptionalLongWithDefault(&self, _: i32) {}
- pub fn PassOptionalUnsignedLongWithDefault(&self, _: u32) {}
- pub fn PassOptionalLongLongWithDefault(&self, _: i64) {}
- pub fn PassOptionalUnsignedLongLongWithDefault(&self, _: u64) {}
- pub fn PassOptionalStringWithDefault(&self, _: DOMString) {}
- pub fn PassOptionalEnumWithDefault(&self, _: TestEnum) {}
-
- pub fn PassOptionalNullableBooleanWithDefault(&self, _: Option<bool>) {}
- pub fn PassOptionalNullableByteWithDefault(&self, _: Option<i8>) {}
- pub fn PassOptionalNullableOctetWithDefault(&self, _: Option<u8>) {}
- pub fn PassOptionalNullableShortWithDefault(&self, _: Option<i16>) {}
- pub fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option<u16>) {}
- pub fn PassOptionalNullableLongWithDefault(&self, _: Option<i32>) {}
- pub fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option<u32>) {}
- pub fn PassOptionalNullableLongLongWithDefault(&self, _: Option<i64>) {}
- pub fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option<u64>) {}
- pub fn PassOptionalNullableFloatWithDefault(&self, _: Option<f32>) {}
- pub fn PassOptionalNullableDoubleWithDefault(&self, _: Option<f64>) {}
- pub fn PassOptionalNullableStringWithDefault(&self, _: Option<DOMString>) {}
- pub fn PassOptionalNullableByteStringWithDefault(&self, _: Option<ByteString>) {}
- // pub fn PassOptionalNullableEnumWithDefault(&self, _: Option<TestEnum>) {}
- pub fn PassOptionalNullableInterfaceWithDefault(&self, _: Option<JS<Blob>>) {}
- pub fn PassOptionalNullableUnionWithDefault(&self, _: Option<HTMLElementOrLong>) {}
- pub fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal) {}
-
- pub fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option<bool>) {}
- pub fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option<i8>) {}
- pub fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option<u8>) {}
- pub fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option<i16>) {}
- pub fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option<u16>) {}
- pub fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option<i32>) {}
- pub fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option<u32>) {}
- pub fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option<i64>) {}
- pub fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option<u64>) {}
- // pub fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option<f32>) {}
- // pub fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option<f64>) {}
- pub fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option<DOMString>) {}
- // pub fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option<TestEnum>) {}
+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<Blob>;
+ fn SetInterfaceAttribute(&self, _: &JSRef<Blob>);
+ fn AnyAttribute(&self, _: *JSContext) -> JSVal;
+ fn SetAnyAttribute(&self, _: *JSContext, _: JSVal);
+
+ fn GetBooleanAttributeNullable(&self) -> Option<bool>;
+ fn SetBooleanAttributeNullable(&self, _: Option<bool>);
+ fn GetByteAttributeNullable(&self) -> Option<i8>;
+ fn SetByteAttributeNullable(&self, _: Option<i8>);
+ fn GetOctetAttributeNullable(&self) -> Option<u8>;
+ fn SetOctetAttributeNullable(&self, _: Option<u8>);
+ fn GetShortAttributeNullable(&self) -> Option<i16>;
+ fn SetShortAttributeNullable(&self, _: Option<i16>);
+ fn GetUnsignedShortAttributeNullable(&self) -> Option<u16>;
+ fn SetUnsignedShortAttributeNullable(&self, _: Option<u16>);
+ fn GetLongAttributeNullable(&self) -> Option<i32>;
+ fn SetLongAttributeNullable(&self, _: Option<i32>);
+ fn GetUnsignedLongAttributeNullable(&self) -> Option<u32>;
+ fn SetUnsignedLongAttributeNullable(&self, _: Option<u32>);
+ fn GetLongLongAttributeNullable(&self) -> Option<i64>;
+ fn SetLongLongAttributeNullable(&self, _: Option<i64>);
+ fn GetUnsignedLongLongAttributeNullable(&self) -> Option<u64>;
+ fn SetUnsignedLongLongAttributeNullable(&self, _: Option<u64>);
+ fn GetFloatAttributeNullable(&self) -> Option<f32>;
+ fn SetFloatAttributeNullable(&self, _: Option<f32>);
+ fn GetDoubleAttributeNullable(&self) -> Option<f64>;
+ fn SetDoubleAttributeNullable(&self, _: Option<f64>);
+ fn GetByteStringAttributeNullable(&self) -> Option<ByteString>;
+ fn SetByteStringAttributeNullable(&self, _: Option<ByteString>);
+ fn GetStringAttributeNullable(&self) -> Option<DOMString>;
+ fn SetStringAttributeNullable(&self, _: Option<DOMString>);
+ fn GetEnumAttributeNullable(&self) -> Option<TestEnum>;
+ fn GetInterfaceAttributeNullable(&self) -> Option<Temporary<Blob>>;
+ fn SetInterfaceAttributeNullable(&self, _: Option<JSRef<Blob>>);
+
+ 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<Blob>);
+ fn PassUnion(&self, _: HTMLElementOrLong);
+ fn PassAny(&self, _: *JSContext, _: JSVal);
+
+ fn PassNullableBoolean(&self, _: Option<bool>);
+ fn PassNullableByte(&self, _: Option<i8>);
+ fn PassNullableOctet(&self, _: Option<u8>);
+ fn PassNullableShort(&self, _: Option<i16>);
+ fn PassNullableUnsignedShort(&self, _: Option<u16>);
+ fn PassNullableLong(&self, _: Option<i32>);
+ fn PassNullableUnsignedLong(&self, _: Option<u32>);
+ fn PassNullableLongLong(&self, _: Option<i64>);
+ fn PassNullableUnsignedLongLong(&self, _: Option<u64>);
+ fn PassNullableFloat(&self, _: Option<f32>);
+ fn PassNullableDouble(&self, _: Option<f64>);
+ fn PassNullableString(&self, _: Option<DOMString>);
+ fn PassNullableByteString(&self, _: Option<ByteString>) {}
+ // fn PassNullableEnum(&self, _: Option<TestEnum>);
+ fn PassNullableInterface(&self, _: Option<JSRef<Blob>>);
+ fn PassNullableUnion(&self, _: Option<HTMLElementOrLong>);
+ fn PassNullableAny(&self, _: *JSContext, _: Option<JSVal>);
+
+ fn PassOptionalBoolean(&self, _: Option<bool>);
+ fn PassOptionalByte(&self, _: Option<i8>);
+ fn PassOptionalOctet(&self, _: Option<u8>);
+ fn PassOptionalShort(&self, _: Option<i16>);
+ fn PassOptionalUnsignedShort(&self, _: Option<u16>);
+ fn PassOptionalLong(&self, _: Option<i32>);
+ fn PassOptionalUnsignedLong(&self, _: Option<u32>);
+ fn PassOptionalLongLong(&self, _: Option<i64>);
+ fn PassOptionalUnsignedLongLong(&self, _: Option<u64>);
+ fn PassOptionalFloat(&self, _: Option<f32>);
+ fn PassOptionalDouble(&self, _: Option<f64>);
+ fn PassOptionalString(&self, _: Option<DOMString>);
+ fn PassOptionalByteString(&self, _: Option<ByteString>) {}
+ fn PassOptionalEnum(&self, _: Option<TestEnum>);
+ fn PassOptionalInterface(&self, _: Option<JSRef<Blob>>);
+ fn PassOptionalUnion(&self, _: Option<HTMLElementOrLong>);
+ fn PassOptionalAny(&self, _: *JSContext, _: Option<JSVal>);
+
+ fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>);
+ fn PassOptionalNullableByte(&self, _: Option<Option<i8>>);
+ fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>);
+ fn PassOptionalNullableShort(&self, _: Option<Option<i16>>);
+ fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>);
+ fn PassOptionalNullableLong(&self, _: Option<Option<i32>>);
+ fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>);
+ fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>);
+ fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>);
+ fn PassOptionalNullableFloat(&self, _: Option<Option<f32>>);
+ fn PassOptionalNullableDouble(&self, _: Option<Option<f64>>);
+ fn PassOptionalNullableString(&self, _: Option<Option<DOMString>>);
+ fn PassOptionalNullableByteString(&self, _: Option<Option<ByteString>>) {}
+ // fn PassOptionalNullableEnum(&self, _: Option<Option<TestEnum>>);
+ fn PassOptionalNullableInterface(&self, _: Option<Option<JSRef<Blob>>>);
+ fn PassOptionalNullableUnion(&self, _: Option<Option<HTMLElementOrLong>>);
+
+ 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<bool>);
+ fn PassOptionalNullableByteWithDefault(&self, _: Option<i8>);
+ fn PassOptionalNullableOctetWithDefault(&self, _: Option<u8>);
+ fn PassOptionalNullableShortWithDefault(&self, _: Option<i16>);
+ fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option<u16>);
+ fn PassOptionalNullableLongWithDefault(&self, _: Option<i32>);
+ fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option<u32>);
+ fn PassOptionalNullableLongLongWithDefault(&self, _: Option<i64>);
+ fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option<u64>);
+ fn PassOptionalNullableFloatWithDefault(&self, _: Option<f32>);
+ fn PassOptionalNullableDoubleWithDefault(&self, _: Option<f64>);
+ fn PassOptionalNullableStringWithDefault(&self, _: Option<DOMString>);
+ fn PassOptionalNullableByteStringWithDefault(&self, _: Option<ByteString>) {}
+ // fn PassOptionalNullableEnumWithDefault(&self, _: Option<TestEnum>);
+ fn PassOptionalNullableInterfaceWithDefault(&self, _: Option<JSRef<Blob>>);
+ fn PassOptionalNullableUnionWithDefault(&self, _: Option<HTMLElementOrLong>);
+ fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal);
+
+ fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option<bool>);
+ fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option<i8>);
+ fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option<u8>);
+ fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option<i16>);
+ fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option<u16>);
+ fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option<i32>);
+ fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option<u32>);
+ fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option<i64>);
+ fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option<u64>);
+ // fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option<f32>);
+ // fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option<f64>);
+ fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option<DOMString>);
+ // fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option<TestEnum>);
+}
+
+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<Blob> {
+ let window = self.window.root();
+ Blob::new(&*window)
+ }
+ fn SetInterfaceAttribute(&self, _: &JSRef<Blob>) {}
+ fn AnyAttribute(&self, _: *JSContext) -> JSVal { NullValue() }
+ fn SetAnyAttribute(&self, _: *JSContext, _: JSVal) {}
+
+ fn GetBooleanAttributeNullable(&self) -> Option<bool> { Some(false) }
+ fn SetBooleanAttributeNullable(&self, _: Option<bool>) {}
+ fn GetByteAttributeNullable(&self) -> Option<i8> { Some(0) }
+ fn SetByteAttributeNullable(&self, _: Option<i8>) {}
+ fn GetOctetAttributeNullable(&self) -> Option<u8> { Some(0) }
+ fn SetOctetAttributeNullable(&self, _: Option<u8>) {}
+ fn GetShortAttributeNullable(&self) -> Option<i16> { Some(0) }
+ fn SetShortAttributeNullable(&self, _: Option<i16>) {}
+ fn GetUnsignedShortAttributeNullable(&self) -> Option<u16> { Some(0) }
+ fn SetUnsignedShortAttributeNullable(&self, _: Option<u16>) {}
+ fn GetLongAttributeNullable(&self) -> Option<i32> { Some(0) }
+ fn SetLongAttributeNullable(&self, _: Option<i32>) {}
+ fn GetUnsignedLongAttributeNullable(&self) -> Option<u32> { Some(0) }
+ fn SetUnsignedLongAttributeNullable(&self, _: Option<u32>) {}
+ fn GetLongLongAttributeNullable(&self) -> Option<i64> { Some(0) }
+ fn SetLongLongAttributeNullable(&self, _: Option<i64>) {}
+ fn GetUnsignedLongLongAttributeNullable(&self) -> Option<u64> { Some(0) }
+ fn SetUnsignedLongLongAttributeNullable(&self, _: Option<u64>) {}
+ fn GetFloatAttributeNullable(&self) -> Option<f32> { Some(0.) }
+ fn SetFloatAttributeNullable(&self, _: Option<f32>) {}
+ fn GetDoubleAttributeNullable(&self) -> Option<f64> { Some(0.) }
+ fn SetDoubleAttributeNullable(&self, _: Option<f64>) {}
+ fn GetByteStringAttributeNullable(&self) -> Option<ByteString> { Some(ByteString::new(vec!())) }
+ fn SetByteStringAttributeNullable(&self, _: Option<ByteString>) {}
+ fn GetStringAttributeNullable(&self) -> Option<DOMString> { Some(~"") }
+ fn SetStringAttributeNullable(&self, _: Option<DOMString>) {}
+ fn GetEnumAttributeNullable(&self) -> Option<TestEnum> { Some(_empty) }
+ fn GetInterfaceAttributeNullable(&self) -> Option<Temporary<Blob>> {
+ let window = self.window.root();
+ Some(Blob::new(&*window))
+ }
+ fn SetInterfaceAttributeNullable(&self, _: Option<JSRef<Blob>>) {}
+
+ 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<Blob>) {}
+ fn PassUnion(&self, _: HTMLElementOrLong) {}
+ fn PassAny(&self, _: *JSContext, _: JSVal) {}
+
+ fn PassNullableBoolean(&self, _: Option<bool>) {}
+ fn PassNullableByte(&self, _: Option<i8>) {}
+ fn PassNullableOctet(&self, _: Option<u8>) {}
+ fn PassNullableShort(&self, _: Option<i16>) {}
+ fn PassNullableUnsignedShort(&self, _: Option<u16>) {}
+ fn PassNullableLong(&self, _: Option<i32>) {}
+ fn PassNullableUnsignedLong(&self, _: Option<u32>) {}
+ fn PassNullableLongLong(&self, _: Option<i64>) {}
+ fn PassNullableUnsignedLongLong(&self, _: Option<u64>) {}
+ fn PassNullableFloat(&self, _: Option<f32>) {}
+ fn PassNullableDouble(&self, _: Option<f64>) {}
+ fn PassNullableString(&self, _: Option<DOMString>) {}
+ fn PassNullableByteString(&self, _: Option<ByteString>) {}
+ // fn PassNullableEnum(&self, _: Option<TestEnum>) {}
+ fn PassNullableInterface(&self, _: Option<JSRef<Blob>>) {}
+ fn PassNullableUnion(&self, _: Option<HTMLElementOrLong>) {}
+ fn PassNullableAny(&self, _: *JSContext, _: Option<JSVal>) {}
+
+ fn PassOptionalBoolean(&self, _: Option<bool>) {}
+ fn PassOptionalByte(&self, _: Option<i8>) {}
+ fn PassOptionalOctet(&self, _: Option<u8>) {}
+ fn PassOptionalShort(&self, _: Option<i16>) {}
+ fn PassOptionalUnsignedShort(&self, _: Option<u16>) {}
+ fn PassOptionalLong(&self, _: Option<i32>) {}
+ fn PassOptionalUnsignedLong(&self, _: Option<u32>) {}
+ fn PassOptionalLongLong(&self, _: Option<i64>) {}
+ fn PassOptionalUnsignedLongLong(&self, _: Option<u64>) {}
+ fn PassOptionalFloat(&self, _: Option<f32>) {}
+ fn PassOptionalDouble(&self, _: Option<f64>) {}
+ fn PassOptionalString(&self, _: Option<DOMString>) {}
+ fn PassOptionalByteString(&self, _: Option<ByteString>) {}
+ fn PassOptionalEnum(&self, _: Option<TestEnum>) {}
+ fn PassOptionalInterface(&self, _: Option<JSRef<Blob>>) {}
+ fn PassOptionalUnion(&self, _: Option<HTMLElementOrLong>) {}
+ fn PassOptionalAny(&self, _: *JSContext, _: Option<JSVal>) {}
+
+ fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>) {}
+ fn PassOptionalNullableByte(&self, _: Option<Option<i8>>) {}
+ fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>) {}
+ fn PassOptionalNullableShort(&self, _: Option<Option<i16>>) {}
+ fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>) {}
+ fn PassOptionalNullableLong(&self, _: Option<Option<i32>>) {}
+ fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>) {}
+ fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>) {}
+ fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>) {}
+ fn PassOptionalNullableFloat(&self, _: Option<Option<f32>>) {}
+ fn PassOptionalNullableDouble(&self, _: Option<Option<f64>>) {}
+ fn PassOptionalNullableString(&self, _: Option<Option<DOMString>>) {}
+ fn PassOptionalNullableByteString(&self, _: Option<Option<ByteString>>) {}
+ // fn PassOptionalNullableEnum(&self, _: Option<Option<TestEnum>>) {}
+ fn PassOptionalNullableInterface(&self, _: Option<Option<JSRef<Blob>>>) {}
+ fn PassOptionalNullableUnion(&self, _: Option<Option<HTMLElementOrLong>>) {}
+
+ 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<bool>) {}
+ fn PassOptionalNullableByteWithDefault(&self, _: Option<i8>) {}
+ fn PassOptionalNullableOctetWithDefault(&self, _: Option<u8>) {}
+ fn PassOptionalNullableShortWithDefault(&self, _: Option<i16>) {}
+ fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option<u16>) {}
+ fn PassOptionalNullableLongWithDefault(&self, _: Option<i32>) {}
+ fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option<u32>) {}
+ fn PassOptionalNullableLongLongWithDefault(&self, _: Option<i64>) {}
+ fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option<u64>) {}
+ fn PassOptionalNullableFloatWithDefault(&self, _: Option<f32>) {}
+ fn PassOptionalNullableDoubleWithDefault(&self, _: Option<f64>) {}
+ fn PassOptionalNullableStringWithDefault(&self, _: Option<DOMString>) {}
+ fn PassOptionalNullableByteStringWithDefault(&self, _: Option<ByteString>) {}
+ // fn PassOptionalNullableEnumWithDefault(&self, _: Option<TestEnum>) {}
+ fn PassOptionalNullableInterfaceWithDefault(&self, _: Option<JSRef<Blob>>) {}
+ fn PassOptionalNullableUnionWithDefault(&self, _: Option<HTMLElementOrLong>) {}
+ fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal) {}
+
+ fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option<bool>) {}
+ fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option<i8>) {}
+ fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option<u8>) {}
+ fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option<i16>) {}
+ fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option<u16>) {}
+ fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option<i32>) {}
+ fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option<u32>) {}
+ fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option<i64>) {}
+ fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option<u64>) {}
+ // fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option<f32>) {}
+ // fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option<f64>) {}
+ fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option<DOMString>) {}
+ // fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option<TestEnum>) {}
}
impl Reflectable for TestBinding {