LibWeb: Add a CustomHasProperty trait to WrapperGenerator

We immediately use this in CSSStyleDeclaration to fix that "background"
in element.style did not return true.
This is the mechanism used in css3test.com for detecting support of
features.
This commit is contained in:
davidot 2021-07-24 01:10:21 +02:00 committed by Linus Groh
parent 0b74cc4712
commit e42eaa5d95
Notes: sideshowbarker 2024-07-18 08:19:17 +09:00
3 changed files with 14 additions and 1 deletions

View File

@ -11,6 +11,13 @@
namespace Web::Bindings {
bool CSSStyleDeclarationWrapper::internal_has_property(JS::PropertyName const& name) const
{
// FIXME: These should actually use camelCase versions of the property names!
auto property_id = CSS::property_id_from_string(name.to_string());
return property_id != CSS::PropertyID::Invalid;
}
JS::Value CSSStyleDeclarationWrapper::internal_get(const JS::PropertyName& name, JS::Value receiver) const
{
// FIXME: These should actually use camelCase versions of the property names!

View File

@ -1,4 +1,4 @@
[CustomGet,CustomSet]
[CustomGet,CustomSet,CustomHasProperty]
interface CSSStyleDeclaration {
readonly attribute unsigned long length;

View File

@ -813,6 +813,12 @@ public:
)~~~");
}
if (interface.extended_attributes.contains("CustomHasProperty")) {
generator.append(R"~~~(
virtual bool internal_has_property(JS::PropertyName const&) const override;
)~~~");
}
if (interface.wrapper_base_class == "Wrapper") {
generator.append(R"~~~(
@fully_qualified_name@& impl() { return *m_impl; }