Bläddra i källkod

LibWeb: Make the custom CSSDeclaration methods only work on strings

Otherwise it will try to convert it to a string later anyway. And as far
as I'm aware there are no style properties with just a number or
JavaScript symbol as name.
davidot 4 år sedan
förälder
incheckning
a67f0cbfa2

+ 8 - 2
Userland/Libraries/LibWeb/Bindings/CSSStyleDeclarationWrapperCustom.cpp

@@ -13,13 +13,17 @@ namespace Web::Bindings {
 
 bool CSSStyleDeclarationWrapper::internal_has_property(JS::PropertyName const& name) const
 {
+    if (!name.is_string())
+        return Base::internal_has_property(name);
     // 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
+JS::Value CSSStyleDeclarationWrapper::internal_get(JS::PropertyName const& name, JS::Value receiver) const
 {
+    if (!name.is_string())
+        return Base::internal_get(name, receiver);
     // FIXME: These should actually use camelCase versions of the property names!
     auto property_id = CSS::property_id_from_string(name.to_string());
     if (property_id == CSS::PropertyID::Invalid)
@@ -31,8 +35,10 @@ JS::Value CSSStyleDeclarationWrapper::internal_get(const JS::PropertyName& name,
     return js_string(vm(), String::empty());
 }
 
-bool CSSStyleDeclarationWrapper::internal_set(const JS::PropertyName& name, JS::Value value, JS::Value receiver)
+bool CSSStyleDeclarationWrapper::internal_set(JS::PropertyName const& name, JS::Value value, JS::Value receiver)
 {
+    if (!name.is_string())
+        return Base::internal_set(name, value, receiver);
     // FIXME: These should actually use camelCase versions of the property names!
     auto property_id = CSS::property_id_from_string(name.to_string());
     if (property_id == CSS::PropertyID::Invalid)