mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:07:35 +00:00
LibWeb: Add CSSMediaRule
This is the class corresponding to a `@media` rule. It contains a list of media queries and a list of child css rules.
This commit is contained in:
parent
8ac622f056
commit
3e74c194f9
6 changed files with 114 additions and 10 deletions
45
Userland/Libraries/LibWeb/CSS/CSSMediaRule.h
Normal file
45
Userland/Libraries/LibWeb/CSS/CSSMediaRule.h
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/CSS/CSSConditionRule.h>
|
||||
#include <LibWeb/CSS/MediaList.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
|
||||
namespace Web::CSS {
|
||||
|
||||
// https://www.w3.org/TR/css-conditional-3/#the-cssmediarule-interface
|
||||
class CSSMediaRule final : public CSSConditionRule {
|
||||
AK_MAKE_NONCOPYABLE(CSSMediaRule);
|
||||
AK_MAKE_NONMOVABLE(CSSMediaRule);
|
||||
|
||||
public:
|
||||
static NonnullRefPtr<CSSMediaRule> create(NonnullRefPtr<MediaList>&& media_queries, NonnullRefPtrVector<CSSRule>&& rules)
|
||||
{
|
||||
return adopt_ref(*new CSSMediaRule(move(media_queries), move(rules)));
|
||||
}
|
||||
|
||||
~CSSMediaRule();
|
||||
|
||||
virtual StringView class_name() const override { return "CSSMediaRule"; };
|
||||
virtual Type type() const override { return Type::Media; };
|
||||
|
||||
virtual String condition_text() const override;
|
||||
virtual void set_condition_text(String) override;
|
||||
|
||||
NonnullRefPtr<MediaList> const& media() const { return m_media; }
|
||||
|
||||
private:
|
||||
explicit CSSMediaRule(NonnullRefPtr<MediaList>&&, NonnullRefPtrVector<CSSRule>&&);
|
||||
|
||||
NonnullRefPtr<MediaList> m_media;
|
||||
};
|
||||
|
||||
template<>
|
||||
inline bool CSSRule::fast_is<CSSMediaRule>() const { return type() == CSSRule::Type::Media; }
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue