diff --git a/Libraries/LibWeb/CSS/CSSRule.cpp b/Libraries/LibWeb/CSS/CSSRule.cpp index 51b7544399f..bd47d11e0c1 100644 --- a/Libraries/LibWeb/CSS/CSSRule.cpp +++ b/Libraries/LibWeb/CSS/CSSRule.cpp @@ -53,6 +53,11 @@ void CSSRule::set_css_text(StringView) void CSSRule::set_parent_rule(CSSRule* parent_rule) { m_parent_rule = parent_rule; + + if (parent_rule == nullptr) + set_parent_style_sheet(nullptr); + else + set_parent_style_sheet(parent_rule->parent_style_sheet()); clear_caches(); } diff --git a/Libraries/LibWeb/CSS/CSSRuleList.cpp b/Libraries/LibWeb/CSS/CSSRuleList.cpp index 025032f7aa3..de8a75d33f5 100644 --- a/Libraries/LibWeb/CSS/CSSRuleList.cpp +++ b/Libraries/LibWeb/CSS/CSSRuleList.cpp @@ -171,8 +171,8 @@ WebIDL::ExceptionOr CSSRuleList::remove_a_css_rule(u32 index) m_rules.remove(index); // 6. Set old rule’s parent CSS rule and parent CSS style sheet to null. + // NOTE: We set the parent stylesheet to null within set_parent_rule. old_rule.set_parent_rule(nullptr); - old_rule.set_parent_style_sheet(nullptr); if (on_change) on_change(); diff --git a/Tests/LibWeb/Text/expected/css/group-inserted-rule-stylesheet-parent.txt b/Tests/LibWeb/Text/expected/css/group-inserted-rule-stylesheet-parent.txt new file mode 100644 index 00000000000..c3a50ff4644 --- /dev/null +++ b/Tests/LibWeb/Text/expected/css/group-inserted-rule-stylesheet-parent.txt @@ -0,0 +1 @@ +Pass! diff --git a/Tests/LibWeb/Text/input/css/group-inserted-rule-stylesheet-parent.html b/Tests/LibWeb/Text/input/css/group-inserted-rule-stylesheet-parent.html new file mode 100644 index 00000000000..b55223ee802 --- /dev/null +++ b/Tests/LibWeb/Text/input/css/group-inserted-rule-stylesheet-parent.html @@ -0,0 +1,20 @@ + + + + + +