From 08cf35cf9a10eae68354b7a6654e00361b8ed747 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 29 Sep 2023 16:48:28 +0100 Subject: [PATCH] LibWeb: Allow indexing into CSSStyleDeclaration by number The `item(unsigned long index)` method is marked as a getter in IDL, so let's treat it as such. --- Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp | 2 ++ Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.idl | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp index 693299f573..4410b685a5 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.cpp @@ -407,6 +407,8 @@ JS::ThrowCompletionOr CSSStyleDeclaration::internal_has_property(JS::Prope JS::ThrowCompletionOr CSSStyleDeclaration::internal_get(JS::PropertyKey const& name, JS::Value receiver, JS::CacheablePropertyMetadata* cacheable_metadata) const { + if (name.is_number()) + return { JS::PrimitiveString::create(vm(), item(name.as_number())) }; if (!name.is_string()) return Base::internal_get(name, receiver, cacheable_metadata); auto property_id = property_id_from_name(name.to_string()); diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.idl b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.idl index 725ca646bc..66078eb20a 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.idl +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.idl @@ -5,7 +5,7 @@ interface CSSStyleDeclaration { [CEReactions] attribute CSSOMString cssText; readonly attribute unsigned long length; - CSSOMString item(unsigned long index); + getter CSSOMString item(unsigned long index); CSSOMString getPropertyValue(CSSOMString property); CSSOMString getPropertyPriority(CSSOMString property); @@ -13,4 +13,6 @@ interface CSSStyleDeclaration { [CEReactions] undefined setProperty(CSSOMString property, [LegacyNullToEmptyString] CSSOMString value, optional [LegacyNullToEmptyString] CSSOMString priority = ""); [CEReactions] CSSOMString removeProperty(CSSOMString property); + // FIXME: readonly attribute CSSRule? parentRule; + // FIXME: [CEReactions] attribute [LegacyNullToEmptyString] CSSOMString cssFloat; };