mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 11:24:58 +00:00

This change allows IDL interfaces to be compiled using new AK String which have a attribute in the interface that may return null. Without this change we would run into a compile error from code such as the following example: ``` auto retval = impl->deprecated_attribute(HTML::AttributeNames::ref); if (!retval.has_value()) { return JS::js_null(); } return JS::PrimitiveString::create(vm, retval.release_value()); ``` As `deprecated_attribute` returns a `DeprecatedString` instead of an `Optional<String>`. Fix that by using the non-deprecated attribute implementation, and falling back to the empty string for where we cannot return null. Also add a test here to cover a regression I almost introduced here which was not previously covered by our test suite. Ideally, all of this should actually just be calling Element::get_attribute_value, but I'm not entirely sure at this stage what the behavioral change would be to test for here. Since this implementation preserves the previous behavior, stick with it, and add a FIXME for now.
9 lines
284 B
HTML
9 lines
284 B
HTML
<script src="include.js"></script>
|
|
<script id="script-element">
|
|
test(() => {
|
|
let s = document.getElementById("script-element");
|
|
println(`initial type = '${s.type}'`);
|
|
s.type = null;
|
|
println(`after setting to null = '${s.type}'`);
|
|
});
|
|
</script>
|