From 881e9d1341a38dc81996a549fd37bd3871078416 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Wed, 29 Sep 2021 13:03:09 +0100 Subject: [PATCH] LibWeb: Make StyleSheetList.item an IDL getter --- .../Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp | 1 + Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp | 11 +++++++++++ Userland/Libraries/LibWeb/CSS/StyleSheetList.h | 2 ++ Userland/Libraries/LibWeb/CSS/StyleSheetList.idl | 4 ++-- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp index 9b21e63fee..21c074b0f5 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp @@ -1460,6 +1460,7 @@ void generate_implementation(IDL::Interface const& interface) #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp b/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp index 42e365df20..8337be16c3 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleSheetList.cpp @@ -18,4 +18,15 @@ StyleSheetList::StyleSheetList(DOM::Document& document) { } +// https://drafts.csswg.org/cssom/#ref-for-dfn-supported-property-indices%E2%91%A1 +bool StyleSheetList::is_supported_property_index(u32 index) const +{ + // The object’s supported property indices are the numbers in the range zero to one less than the number of CSS style sheets represented by the collection. + // If there are no such CSS style sheets, then there are no supported property indices. + if (m_sheets.is_empty()) + return false; + + return index < m_sheets.size(); +} + } diff --git a/Userland/Libraries/LibWeb/CSS/StyleSheetList.h b/Userland/Libraries/LibWeb/CSS/StyleSheetList.h index 5b52008f3a..04ccf51ebb 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleSheetList.h +++ b/Userland/Libraries/LibWeb/CSS/StyleSheetList.h @@ -37,6 +37,8 @@ public: size_t length() const { return m_sheets.size(); } + bool is_supported_property_index(u32) const; + private: explicit StyleSheetList(DOM::Document&); diff --git a/Userland/Libraries/LibWeb/CSS/StyleSheetList.idl b/Userland/Libraries/LibWeb/CSS/StyleSheetList.idl index 27460affa4..15dc0d41f6 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleSheetList.idl +++ b/Userland/Libraries/LibWeb/CSS/StyleSheetList.idl @@ -1,5 +1,5 @@ +[Exposed=Window] interface StyleSheetList { - // FIXME: item() should be a WebIDL "getter" - CSSStyleSheet? item(unsigned long index); + getter CSSStyleSheet? item(unsigned long index); readonly attribute unsigned long length; };