CSSMediaRule.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) 2021, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/CSS/CSSConditionRule.h>
  8. #include <LibWeb/CSS/MediaList.h>
  9. #include <LibWeb/Forward.h>
  10. namespace Web::CSS {
  11. // https://www.w3.org/TR/css-conditional-3/#the-cssmediarule-interface
  12. class CSSMediaRule final : public CSSConditionRule {
  13. AK_MAKE_NONCOPYABLE(CSSMediaRule);
  14. AK_MAKE_NONMOVABLE(CSSMediaRule);
  15. public:
  16. static NonnullRefPtr<CSSMediaRule> create(NonnullRefPtr<MediaList>&& media_queries, NonnullRefPtrVector<CSSRule>&& rules)
  17. {
  18. return adopt_ref(*new CSSMediaRule(move(media_queries), move(rules)));
  19. }
  20. ~CSSMediaRule();
  21. virtual StringView class_name() const override { return "CSSMediaRule"; };
  22. virtual Type type() const override { return Type::Media; };
  23. virtual String condition_text() const override;
  24. virtual void set_condition_text(String) override;
  25. NonnullRefPtr<MediaList> const& media() const { return m_media; }
  26. private:
  27. explicit CSSMediaRule(NonnullRefPtr<MediaList>&&, NonnullRefPtrVector<CSSRule>&&);
  28. NonnullRefPtr<MediaList> m_media;
  29. };
  30. template<>
  31. inline bool CSSRule::fast_is<CSSMediaRule>() const { return type() == CSSRule::Type::Media; }
  32. }