diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index af9a39313da..bbdd6b9420e 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1063,13 +1063,19 @@ for (uint32_t i = 0; i < length; ++i) { assert(type.nullable()) return handleDefault(conversionCode, "%s.SetNull()" % varName) - return handleDefault( - conversionCode, - ("static data: [u8, ..%s] = [ %s ];\n" - "%s = str::from_utf8(data).to_owned()" % - (len(defaultValue.value) + 1, - ", ".join(["'" + char + "' as u8" for char in defaultValue.value] + ["0"]), - varName))) + + value = "str::from_utf8(data).to_owned()" + if type.nullable(): + value = "Some(%s)" % value + + default = ( + "static data: [u8, ..%s] = [ %s ];\n" + "%s = %s" % + (len(defaultValue.value) + 1, + ", ".join(["'" + char + "' as u8" for char in defaultValue.value] + ["0"]), + varName, value)) + + return handleDefault(conversionCode, default) if isMember: # We have to make a copy, because our jsval may well not diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index 1df1f97e606..2d0d3fc58bb 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -134,7 +134,7 @@ impl TestBinding { pub fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option) {} // pub fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option) {} // pub fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option) {} - // pub fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option) {} + pub fn PassOptionalNullableStringWithNonNullDefault(&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 5c0420d5160..ae655949cde 100644 --- a/src/components/script/dom/webidls/TestBinding.webidl +++ b/src/components/script/dom/webidls/TestBinding.webidl @@ -94,5 +94,5 @@ interface TestBinding { void passOptionalNullableUnsignedLongLongWithNonNullDefault(optional unsigned long long? arg = 7); // void passOptionalNullableFloatWithNonNullDefault(optional float? arg = 0.0); // void passOptionalNullableDoubleWithNonNullDefault(optional double? arg = 0.0); - // void passOptionalNullableStringWithNonNullDefault(optional DOMString? arg = ""); + void passOptionalNullableStringWithNonNullDefault(optional DOMString? arg = ""); };