LibWeb: Correct attributes on IDL interface 'operations'

This fixes four tests for the IDL harness for URL under:

https://wpt.live/url/idlharness.any.html
and https://wpt.live/url/idlharness.any.worker.html

But probably some tests in other places too :^)
This commit is contained in:
Shannon Booth 2024-10-05 14:43:57 +13:00 committed by Andreas Kling
parent fb2b78620d
commit e9dd05b2b5
Notes: github-actions[bot] 2024-10-05 08:48:01 +00:00
3 changed files with 21 additions and 1 deletions

View file

@ -4415,8 +4415,14 @@ static void define_the_operations(SourceGenerator& generator, HashMap<ByteString
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(operation.key.to_snakecase()));
function_generator.set("function.length", ByteString::number(get_shortest_function_length(operation.value)));
// NOTE: This assumes that every function in the overload set has the same attribute set.
if (operation.value[0].extended_attributes.contains("LegacyUnforgable"sv))
function_generator.set("function.attributes", "JS::Attribute::Enumerable");
else
function_generator.set("function.attributes", "JS::Attribute::Writable | JS::Attribute::Enumerable | JS::Attribute::Configurable");
function_generator.append(R"~~~(
define_native_function(realm, "@function.name@", @function.name:snakecase@, @function.length@, default_attributes);
define_native_function(realm, "@function.name@", @function.name:snakecase@, @function.length@, @function.attributes@);
)~~~");
}
}

View file

@ -0,0 +1,4 @@
writable: true
configurable: true
enumerable: true
value (the function itself): function canParse() { [native code] }

View file

@ -0,0 +1,10 @@
<script src="../include.js"></script>
<script>
test(() => {
const descriptor = Object.getOwnPropertyDescriptor(URL, "canParse");
println(`writable: ${descriptor.writable}`);
println(`configurable: ${descriptor.configurable}`);
println(`enumerable: ${descriptor.enumerable}`);
println(`value (the function itself): ${descriptor.value}`);
});
</script>