CSSGroupingRule.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibWeb/CSS/CSSGroupingRule.h>
  7. #include <LibWeb/CSS/CSSRuleList.h>
  8. namespace Web::CSS {
  9. CSSGroupingRule::CSSGroupingRule(NonnullRefPtrVector<CSSRule>&& rules)
  10. : m_rules(CSSRuleList::create(move(rules)))
  11. {
  12. for (auto& rule : *m_rules)
  13. rule.set_parent_rule(this);
  14. }
  15. DOM::ExceptionOr<u32> CSSGroupingRule::insert_rule(StringView rule, u32 index)
  16. {
  17. TRY(m_rules->insert_a_css_rule(rule, index));
  18. // NOTE: The spec doesn't say where to set the parent rule, so we'll do it here.
  19. m_rules->item(index)->set_parent_rule(this);
  20. return index;
  21. }
  22. DOM::ExceptionOr<void> CSSGroupingRule::delete_rule(u32 index)
  23. {
  24. return m_rules->remove_a_css_rule(index);
  25. }
  26. void CSSGroupingRule::for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const
  27. {
  28. m_rules->for_each_effective_style_rule(callback);
  29. }
  30. void CSSGroupingRule::set_parent_style_sheet(CSSStyleSheet* parent_style_sheet)
  31. {
  32. CSSRule::set_parent_style_sheet(parent_style_sheet);
  33. for (auto& rule : *m_rules)
  34. rule.set_parent_style_sheet(parent_style_sheet);
  35. }
  36. }