diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 851fff68ee..5453182e4f 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -14,6 +14,7 @@ set(SOURCES Bindings/Wrappable.cpp CSS/CSSImportRule.cpp CSS/CSSRule.cpp + CSS/CSSRuleList.cpp CSS/CSSStyleDeclaration.cpp CSS/CSSStyleRule.cpp CSS/CSSStyleSheet.cpp diff --git a/Userland/Libraries/LibWeb/CSS/CSSRuleList.cpp b/Userland/Libraries/LibWeb/CSS/CSSRuleList.cpp new file mode 100644 index 0000000000..10f7ba598c --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/CSSRuleList.cpp @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2021, Sam Atkins + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +namespace Web::CSS { + +CSSRuleList::CSSRuleList(NonnullRefPtrVector&& rules) + : m_rules(rules) +{ +} + +CSSRuleList::~CSSRuleList() +{ +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/CSSRuleList.h b/Userland/Libraries/LibWeb/CSS/CSSRuleList.h new file mode 100644 index 0000000000..4dd5426162 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/CSSRuleList.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2021, Sam Atkins + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace Web::CSS { + +class CSSRuleList { +public: + explicit CSSRuleList(NonnullRefPtrVector&&); + virtual ~CSSRuleList(); + + RefPtr item(size_t index) const + { + if (index >= length()) + return nullptr; + return m_rules[index]; + } + size_t length() const { return m_rules.size(); } + + using ConstIterator = AK::SimpleIterator> const, CSSRule const>; + using Iterator = AK::SimpleIterator>, CSSRule>; + + ConstIterator const begin() const { return m_rules.begin(); } + Iterator begin() { return m_rules.begin(); } + + ConstIterator const end() const { return m_rules.end(); } + Iterator end() { return m_rules.end(); } + +private: + NonnullRefPtrVector m_rules; +}; + +} diff --git a/Userland/Libraries/LibWeb/CSS/CSSRuleList.idl b/Userland/Libraries/LibWeb/CSS/CSSRuleList.idl new file mode 100644 index 0000000000..5973f711d3 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/CSSRuleList.idl @@ -0,0 +1,4 @@ +interface CSSRuleList { + getter CSSRule? item(unsigned long index); + readonly attribute unsigned long length; +};