diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-05-05 15:28:35 +0200 |
---|---|---|
committer | Gulshan Singh <gulshan@umich.edu> | 2014-05-07 17:30:32 -0400 |
commit | 0ab3444af9f0a1c8f7265308c0bf7c20e18df9f5 (patch) | |
tree | 792c15664f1265305a335d17a2737d721d3e3bca | |
parent | d66197ae406e252c51bda48611ddfce78ecedb02 (diff) | |
download | servo-0ab3444af9f0a1c8f7265308c0bf7c20e18df9f5.tar.gz servo-0ab3444af9f0a1c8f7265308c0bf7c20e18df9f5.zip |
Add support for DOMString in unions (fixes #2324).
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 5 | ||||
-rw-r--r-- | src/components/script/dom/testbinding.rs | 7 | ||||
-rw-r--r-- | src/components/script/dom/webidls/TestBinding.webidl | 9 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 4429298f5a4..65dbe42b4cc 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -2699,6 +2699,9 @@ def getUnionTypeTemplateVars(type, descriptorProvider): name = str(type) #XXXjdm dunno about typeName here typeName = "/*" + type.name + "*/" + elif type.isDOMString(): + name = type.name + typeName = "DOMString" elif type.isPrimitive(): name = type.name typeName = builtinNames[type.tag()] @@ -5312,6 +5315,7 @@ class GlobalGenRoots(): 'dom::bindings::utils::unwrap_jsmanaged', 'dom::bindings::codegen::PrototypeList', 'dom::bindings::conversions::{FromJSValConvertible, ToJSValConvertible}', + 'dom::bindings::conversions::{Default, Empty}', 'dom::bindings::error::throw_not_in_union', 'dom::bindings::js::JS', 'dom::types::*', @@ -5337,6 +5341,7 @@ class GlobalGenRoots(): 'js::glue::{GetProxyPrivate, NewProxyObject, ProxyTraps}', 'js::glue::{RUST_FUNCTION_VALUE_TO_JITINFO}', 'js::glue::{RUST_JS_NumberValue, RUST_JSID_IS_STRING}', + 'servo_util::str::DOMString', ]) # Add the auto-generated comment. diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index ed22f34edf0..7fe109d0176 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -4,7 +4,7 @@ use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::codegen::BindingDeclarations::TestBindingBinding; -use dom::bindings::codegen::UnionTypes::HTMLElementOrLong; +use dom::bindings::codegen::UnionTypes::{HTMLElementOrLong, StringOrFormData}; use self::TestBindingBinding::TestEnum; use self::TestBindingBinding::TestEnumValues::_empty; use dom::bindings::str::ByteString; @@ -102,6 +102,7 @@ pub trait TestBindingMethods { fn PassEnum(&self, _: TestEnum) {} fn PassInterface(&self, _: &JSRef<Blob>) {} fn PassUnion(&self, _: HTMLElementOrLong) {} + fn PassUnion2(&self, _: StringOrFormData) {} fn PassAny(&self, _: *JSContext, _: JSVal) {} fn PassNullableBoolean(&self, _: Option<bool>) {} @@ -120,6 +121,7 @@ pub trait TestBindingMethods { // fn PassNullableEnum(&self, _: Option<TestEnum>) {} fn PassNullableInterface(&self, _: Option<JSRef<Blob>>) {} fn PassNullableUnion(&self, _: Option<HTMLElementOrLong>) {} + fn PassNullableUnion2(&self, _: Option<StringOrFormData>) {} fn PassNullableAny(&self, _: *JSContext, _: Option<JSVal>) {} fn PassOptionalBoolean(&self, _: Option<bool>) {} @@ -138,6 +140,7 @@ pub trait TestBindingMethods { fn PassOptionalEnum(&self, _: Option<TestEnum>) {} fn PassOptionalInterface(&self, _: Option<JSRef<Blob>>) {} fn PassOptionalUnion(&self, _: Option<HTMLElementOrLong>) {} + fn PassOptionalUnion2(&self, _: Option<StringOrFormData>) {} fn PassOptionalAny(&self, _: *JSContext, _: Option<JSVal>) {} fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>) {} @@ -156,6 +159,7 @@ pub trait TestBindingMethods { // fn PassOptionalNullableEnum(&self, _: Option<Option<TestEnum>>) {} fn PassOptionalNullableInterface(&self, _: Option<Option<JSRef<Blob>>>) {} fn PassOptionalNullableUnion(&self, _: Option<Option<HTMLElementOrLong>>) {} + fn PassOptionalNullableUnion2(&self, _: Option<Option<StringOrFormData>>) {} fn PassOptionalBooleanWithDefault(&self, _: bool) {} fn PassOptionalByteWithDefault(&self, _: i8) {} @@ -185,6 +189,7 @@ pub trait TestBindingMethods { // fn PassOptionalNullableEnumWithDefault(&self, _: Option<TestEnum>) {} fn PassOptionalNullableInterfaceWithDefault(&self, _: Option<JSRef<Blob>>) {} fn PassOptionalNullableUnionWithDefault(&self, _: Option<HTMLElementOrLong>) {} + fn PassOptionalNullableUnion2WithDefault(&self, _: Option<StringOrFormData>) {} fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal) {} fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option<bool>) {} diff --git a/src/components/script/dom/webidls/TestBinding.webidl b/src/components/script/dom/webidls/TestBinding.webidl index 89325125da2..15dc79bd2aa 100644 --- a/src/components/script/dom/webidls/TestBinding.webidl +++ b/src/components/script/dom/webidls/TestBinding.webidl @@ -70,6 +70,7 @@ interface TestBinding { attribute TestEnum enumAttribute; attribute Blob interfaceAttribute; // attribute (HTMLElement or long) unionAttribute; + // attribute (DOMString or FormData) union2Attribute; attribute any anyAttribute; attribute boolean? booleanAttributeNullable; @@ -88,6 +89,7 @@ interface TestBinding { readonly attribute TestEnum? enumAttributeNullable; attribute Blob? interfaceAttributeNullable; // attribute (HTMLElement or long)? unionAttributeNullable; + // attribute (DOMString or FormData)? union2AttributeNullable; void passBoolean(boolean arg); void passByte(byte arg); @@ -105,6 +107,7 @@ interface TestBinding { void passEnum(TestEnum arg); void passInterface(Blob arg); void passUnion((HTMLElement or long) arg); + void passUnion2((DOMString or FormData) data); void passAny(any arg); void passNullableBoolean(boolean? arg); @@ -123,6 +126,7 @@ interface TestBinding { // void passNullableEnum(TestEnum? arg); void passNullableInterface(Blob? arg); void passNullableUnion((HTMLElement or long)? arg); + void passNullableUnion2((DOMString or FormData)? data); void passOptionalBoolean(optional boolean arg); void passOptionalByte(optional byte arg); @@ -140,6 +144,7 @@ interface TestBinding { void passOptionalEnum(optional TestEnum arg); void passOptionalInterface(optional Blob arg); void passOptionalUnion(optional (HTMLElement or long) arg); + void passOptionalUnion2(optional (DOMString or FormData) data); void passOptionalAny(optional any arg); void passOptionalNullableBoolean(optional boolean? arg); @@ -158,6 +163,7 @@ interface TestBinding { // void passOptionalNullableEnum(optional TestEnum? arg); void passOptionalNullableInterface(optional Blob? arg); void passOptionalNullableUnion(optional (HTMLElement or long)? arg); + void passOptionalNullableUnion2(optional (DOMString or FormData)? data); void passOptionalBooleanWithDefault(optional boolean arg = false); void passOptionalByteWithDefault(optional byte arg = 0); @@ -171,6 +177,7 @@ interface TestBinding { void passOptionalStringWithDefault(optional DOMString arg = ""); void passOptionalEnumWithDefault(optional TestEnum arg = "foo"); // void passOptionalUnionWithDefault(optional (HTMLElement or long) arg = 9); + // void passOptionalUnion2WithDefault(optional(DOMString or FormData)? data = "foo"); void passOptionalNullableBooleanWithDefault(optional boolean? arg = null); void passOptionalNullableByteWithDefault(optional byte? arg = null); @@ -186,6 +193,7 @@ interface TestBinding { // void passOptionalNullableEnumWithDefault(optional TestEnum? arg = null); void passOptionalNullableInterfaceWithDefault(optional Blob? arg = null); void passOptionalNullableUnionWithDefault(optional (HTMLElement or long)? arg = null); + void passOptionalNullableUnion2WithDefault(optional (DOMString or FormData)? data = null); void passOptionalAnyWithDefault(optional any arg = null); void passOptionalNullableBooleanWithNonNullDefault(optional boolean? arg = false); @@ -202,4 +210,5 @@ interface TestBinding { void passOptionalNullableStringWithNonNullDefault(optional DOMString? arg = ""); // void passOptionalNullableEnumWithNonNullDefault(optional TestEnum? arg = "foo"); // void passOptionalNullableUnionWithNonNullDefault(optional (HTMLElement or long)? arg = 7); + // void passOptionalNullableUnion2WithNonNullDefault(optional (DOMString or FormData)? data = "foo"); }; |