From 77f1224b24e6eb1503c9eb83f13043bc2e99835a Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 6 Mar 2014 16:40:10 +0100 Subject: [PATCH 1/3] Add some tests for string codegen. --- src/components/script/dom/testbinding.rs | 8 ++++++++ src/components/script/dom/webidls/TestBinding.webidl | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index b26fc90fb47..e8ca19c3be4 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -3,6 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::utils::{Reflector, Reflectable}; +use servo_util::str::DOMString; #[deriving(Encodable)] pub struct TestBinding { @@ -32,6 +33,8 @@ impl TestBinding { 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 GetBooleanAttributeNullable(&self) -> Option { Some(false) } pub fn SetBooleanAttributeNullable(&self, _: Option) {} @@ -55,6 +58,8 @@ impl TestBinding { pub fn SetFloatAttributeNullable(&self, _: Option) {} pub fn GetDoubleAttributeNullable(&self) -> Option { Some(0.) } pub fn SetDoubleAttributeNullable(&self, _: Option) {} + pub fn GetStringAttributeNullable(&self) -> Option { Some(~"") } + pub fn SetStringAttributeNullable(&self, _: Option) {} // FIXME (issue #1813) Doesn't currently compile. // pub fn PassOptionalBoolean(&self, _: Option) {} @@ -68,6 +73,7 @@ impl TestBinding { // pub fn PassOptionalUnsignedLongLong(&self, _: Option) {} // pub fn PassOptionalFloat(&self, _: Option) {} // pub fn PassOptionalDouble(&self, _: Option) {} + pub fn PassOptionalString(&self, _: Option) {} pub fn PassOptionalBooleanWithDefault(&self, _: bool) {} pub fn PassOptionalByteWithDefault(&self, _: i8) {} @@ -78,6 +84,7 @@ impl TestBinding { pub fn PassOptionalUnsignedLongWithDefault(&self, _: u32) {} pub fn PassOptionalLongLongWithDefault(&self, _: i64) {} pub fn PassOptionalUnsignedLongLongWithDefault(&self, _: u64) {} + pub fn PassOptionalStringWithDefault(&self, _: DOMString) {} pub fn PassOptionalNullableBooleanWithDefault(&self, _: Option) {} pub fn PassOptionalNullableByteWithDefault(&self, _: Option) {} @@ -90,6 +97,7 @@ impl TestBinding { pub fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option) {} pub fn PassOptionalNullableFloatWithDefault(&self, _: Option) {} pub fn PassOptionalNullableDoubleWithDefault(&self, _: Option) {} + // pub fn PassOptionalNullableStringWithDefault(&self, _: Option) {} } impl Reflectable for TestBinding { diff --git a/src/components/script/dom/webidls/TestBinding.webidl b/src/components/script/dom/webidls/TestBinding.webidl index 94530b6cf1d..54987293746 100644 --- a/src/components/script/dom/webidls/TestBinding.webidl +++ b/src/components/script/dom/webidls/TestBinding.webidl @@ -14,6 +14,7 @@ interface TestBinding { attribute unsigned long long unsignedLongLongAttribute; attribute float floatAttribute; attribute double doubleAttribute; + attribute DOMString stringAttribute; attribute boolean? booleanAttributeNullable; attribute byte? byteAttributeNullable; @@ -26,6 +27,7 @@ interface TestBinding { attribute unsigned long long? unsignedLongLongAttributeNullable; attribute float? floatAttributeNullable; attribute double? doubleAttributeNullable; + attribute DOMString? stringAttributeNullable; // FIXME (issue #1813) Doesn't currently compile. // void passOptionalBoolean(optional boolean arg); @@ -39,6 +41,7 @@ interface TestBinding { // void passOptionalUnsignedLongLong(optional unsigned long long arg); // void passOptionalFloat(optional float arg); // void passOptionalDouble(optional double arg); + void passOptionalString(optional DOMString arg); void passOptionalBooleanWithDefault(optional boolean arg = false); void passOptionalByteWithDefault(optional byte arg = 0); @@ -49,6 +52,7 @@ interface TestBinding { void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6); void passOptionalLongLongWithDefault(optional long long arg = -12); void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17); + void passOptionalStringWithDefault(optional DOMString arg = ""); void passOptionalNullableBooleanWithDefault(optional boolean? arg = null); void passOptionalNullableByteWithDefault(optional byte? arg = null); @@ -59,4 +63,5 @@ interface TestBinding { void passOptionalNullableUnsignedLongWithDefault(optional unsigned long? arg = null); void passOptionalNullableLongLongWithDefault(optional long long? arg = null); void passOptionalNullableUnsignedLongLongWithDefault(optional unsigned long long? arg = null); + // void passOptionalNullableStringWithDefault(optional DOMString? arg = null); }; From 48ebd2a5e304a0e48e01b1cfcbaa8ccc865e437d Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 6 Mar 2014 18:45:58 +0100 Subject: [PATCH 2/3] Add tests for optional nullable arguments without default values. --- src/components/script/dom/testbinding.rs | 13 +++++++++++++ .../script/dom/webidls/TestBinding.webidl | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index e8ca19c3be4..694ff1050c3 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -75,6 +75,19 @@ impl TestBinding { // pub fn PassOptionalDouble(&self, _: Option) {} pub fn PassOptionalString(&self, _: Option) {} + // pub fn PassOptionalNullableBoolean(&self, _: Option>) {} + // pub fn PassOptionalNullableByte(&self, _: Option>) {} + // pub fn PassOptionalNullableOctet(&self, _: Option>) {} + // pub fn PassOptionalNullableShort(&self, _: Option>) {} + // pub fn PassOptionalNullableUnsignedShort(&self, _: Option>) {} + // pub fn PassOptionalNullableLong(&self, _: Option>) {} + // pub fn PassOptionalNullableUnsignedLong(&self, _: Option>) {} + // pub fn PassOptionalNullableLongLong(&self, _: Option>) {} + // pub fn PassOptionalNullableUnsignedLongLong(&self, _: Option>) {} + // pub fn PassOptionalNullableFloat(&self, _: Option>) {} + // pub fn PassOptionalNullableDouble(&self, _: Option>) {} + pub fn PassOptionalNullableString(&self, _: Option>) {} + pub fn PassOptionalBooleanWithDefault(&self, _: bool) {} pub fn PassOptionalByteWithDefault(&self, _: i8) {} pub fn PassOptionalOctetWithDefault(&self, _: u8) {} diff --git a/src/components/script/dom/webidls/TestBinding.webidl b/src/components/script/dom/webidls/TestBinding.webidl index 54987293746..bb3a7dd486e 100644 --- a/src/components/script/dom/webidls/TestBinding.webidl +++ b/src/components/script/dom/webidls/TestBinding.webidl @@ -43,6 +43,19 @@ interface TestBinding { // void passOptionalDouble(optional double arg); void passOptionalString(optional DOMString arg); + // void passOptionalNullableBoolean(optional boolean? arg); + // void passOptionalNullableByte(optional byte? arg); + // void passOptionalNullableOctet(optional octet? arg); + // void passOptionalNullableShort(optional short? arg); + // void passOptionalNullableUnsignedShort(optional unsigned short? arg); + // void passOptionalNullableLong(optional long? arg); + // void passOptionalNullableUnsignedLong(optional unsigned long? arg); + // void passOptionalNullableLongLong(optional long long? arg); + // void passOptionalNullableUnsignedLongLong(optional unsigned long long? arg); + // void passOptionalNullableFloat(optional float? arg); + // void passOptionalNullableDouble(optional double? arg); + void passOptionalNullableString(optional DOMString? arg); + void passOptionalBooleanWithDefault(optional boolean arg = false); void passOptionalByteWithDefault(optional byte arg = 0); void passOptionalOctetWithDefault(optional octet arg = 19); From 9fe72eb37993bbe56802da30ade9d7c984e7b23d Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 6 Mar 2014 19:05:14 +0100 Subject: [PATCH 3/3] Add interface codegen tests. --- src/components/script/dom/testbinding.rs | 11 +++++++++++ src/components/script/dom/webidls/TestBinding.webidl | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index 694ff1050c3..8173a9829aa 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -2,12 +2,16 @@ * 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::utils::{Reflector, Reflectable}; +use dom::blob::Blob; +use dom::window::Window; use servo_util::str::DOMString; #[deriving(Encodable)] pub struct TestBinding { reflector: Reflector, + window: JS, } impl TestBinding { @@ -35,6 +39,8 @@ impl TestBinding { pub fn SetDoubleAttribute(&self, _: f64) {} pub fn StringAttribute(&self) -> DOMString { ~"" } pub fn SetStringAttribute(&self, _: DOMString) {} + pub fn InterfaceAttribute(&self) -> JS { Blob::new(&self.window) } + pub fn SetInterfaceAttribute(&self, _: &JS) {} pub fn GetBooleanAttributeNullable(&self) -> Option { Some(false) } pub fn SetBooleanAttributeNullable(&self, _: Option) {} @@ -60,6 +66,8 @@ impl TestBinding { pub fn SetDoubleAttributeNullable(&self, _: Option) {} pub fn GetStringAttributeNullable(&self) -> Option { Some(~"") } pub fn SetStringAttributeNullable(&self, _: Option) {} + pub fn GetInterfaceAttributeNullable(&self) -> Option> { Some(Blob::new(&self.window)) } + pub fn SetInterfaceAttributeNullable(&self, _: Option>) {} // FIXME (issue #1813) Doesn't currently compile. // pub fn PassOptionalBoolean(&self, _: Option) {} @@ -74,6 +82,7 @@ impl TestBinding { // pub fn PassOptionalFloat(&self, _: Option) {} // pub fn PassOptionalDouble(&self, _: Option) {} pub fn PassOptionalString(&self, _: Option) {} + pub fn PassOptionalInterface(&self, _: Option>) {} // pub fn PassOptionalNullableBoolean(&self, _: Option>) {} // pub fn PassOptionalNullableByte(&self, _: Option>) {} @@ -87,6 +96,7 @@ impl TestBinding { // pub fn PassOptionalNullableFloat(&self, _: Option>) {} // pub fn PassOptionalNullableDouble(&self, _: Option>) {} pub fn PassOptionalNullableString(&self, _: Option>) {} + // pub fn PassOptionalNullableInterface(&self, _: Option>>) {} pub fn PassOptionalBooleanWithDefault(&self, _: bool) {} pub fn PassOptionalByteWithDefault(&self, _: i8) {} @@ -111,6 +121,7 @@ impl TestBinding { pub fn PassOptionalNullableFloatWithDefault(&self, _: Option) {} pub fn PassOptionalNullableDoubleWithDefault(&self, _: Option) {} // pub fn PassOptionalNullableStringWithDefault(&self, _: Option) {} + pub fn PassOptionalNullableInterfaceWithDefault(&self, _: Option>) {} } impl Reflectable for TestBinding { diff --git a/src/components/script/dom/webidls/TestBinding.webidl b/src/components/script/dom/webidls/TestBinding.webidl index bb3a7dd486e..5cb5a20a02e 100644 --- a/src/components/script/dom/webidls/TestBinding.webidl +++ b/src/components/script/dom/webidls/TestBinding.webidl @@ -15,6 +15,7 @@ interface TestBinding { attribute float floatAttribute; attribute double doubleAttribute; attribute DOMString stringAttribute; + attribute Blob interfaceAttribute; attribute boolean? booleanAttributeNullable; attribute byte? byteAttributeNullable; @@ -28,6 +29,7 @@ interface TestBinding { attribute float? floatAttributeNullable; attribute double? doubleAttributeNullable; attribute DOMString? stringAttributeNullable; + attribute Blob? interfaceAttributeNullable; // FIXME (issue #1813) Doesn't currently compile. // void passOptionalBoolean(optional boolean arg); @@ -42,6 +44,7 @@ interface TestBinding { // void passOptionalFloat(optional float arg); // void passOptionalDouble(optional double arg); void passOptionalString(optional DOMString arg); + void passOptionalInterface(optional Blob arg); // void passOptionalNullableBoolean(optional boolean? arg); // void passOptionalNullableByte(optional byte? arg); @@ -55,6 +58,7 @@ interface TestBinding { // void passOptionalNullableFloat(optional float? arg); // void passOptionalNullableDouble(optional double? arg); void passOptionalNullableString(optional DOMString? arg); + // void passOptionalNullableInterface(optional Blob? arg); void passOptionalBooleanWithDefault(optional boolean arg = false); void passOptionalByteWithDefault(optional byte arg = 0); @@ -77,4 +81,5 @@ interface TestBinding { void passOptionalNullableLongLongWithDefault(optional long long? arg = null); void passOptionalNullableUnsignedLongLongWithDefault(optional unsigned long long? arg = null); // void passOptionalNullableStringWithDefault(optional DOMString? arg = null); + void passOptionalNullableInterfaceWithDefault(optional Blob? arg = null); };