diff --git a/Tests/LibWeb/Text/expected/css/keyframes-css-rules.txt b/Tests/LibWeb/Text/expected/css/keyframes-css-rules.txt index 3af11a131f..6e69d05b20 100644 --- a/Tests/LibWeb/Text/expected/css/keyframes-css-rules.txt +++ b/Tests/LibWeb/Text/expected/css/keyframes-css-rules.txt @@ -1,5 +1,7 @@ fooRule: [object CSSKeyframesRule] ~ @keyframes "foo" { 0% { color: rgb(0, 0, 0); } 100% { color: rgb(255, 255, 255); } } fooRule.cssRules: [object CSSRuleList] fooRule.cssRules[0]: [object CSSKeyframeRule] ~ 0% { color: rgb(0, 0, 0); } +fooRule.cssRules[0].parentRule: [object CSSKeyframesRule] +fooRule.cssRules[0].parentRule: [object CSSKeyframesRule] ~ @keyframes "foo" { 0% { color: rgb(0, 0, 0); } 100% { color: rgb(255, 255, 255); } } fooRule.cssRules[0].style.parentRule: [object CSSKeyframeRule] ~ 0% { color: rgb(0, 0, 0); } fooRule.cssRules[0].style.parentRule === fooRule.cssRules[0]: true diff --git a/Tests/LibWeb/Text/input/css/keyframes-css-rules.html b/Tests/LibWeb/Text/input/css/keyframes-css-rules.html index 249cace53f..d920b1cd6d 100644 --- a/Tests/LibWeb/Text/input/css/keyframes-css-rules.html +++ b/Tests/LibWeb/Text/input/css/keyframes-css-rules.html @@ -11,6 +11,8 @@ println("fooRule: " + fooRule + " ~ " + fooRule.cssText); println("fooRule.cssRules: " + fooRule.cssRules); println("fooRule.cssRules[0]: " + fooRule.cssRules[0] + " ~ " + fooRule.cssRules[0].cssText); + println("fooRule.cssRules[0].parentRule: " + fooRule.cssRules[0].parentRule); + println("fooRule.cssRules[0].parentRule: " + fooRule.cssRules[0].parentRule + " ~ " + fooRule.cssRules[0].parentRule.cssText); println("fooRule.cssRules[0].style.parentRule: " + fooRule.cssRules[0].style.parentRule + " ~ " + fooRule.cssRules[0].style.parentRule.cssText); println("fooRule.cssRules[0].style.parentRule === fooRule.cssRules[0]: " + (fooRule.cssRules[0].style.parentRule === fooRule.cssRules[0])); }); diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp index 3fff7ffc8c..1ec41ec8fa 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp @@ -19,6 +19,15 @@ JS::NonnullGCPtr CSSKeyframesRule::create(JS::Realm& realm, Fl return realm.heap().allocate(realm, realm, move(name), move(css_rules)); } +CSSKeyframesRule::CSSKeyframesRule(JS::Realm& realm, FlyString name, JS::NonnullGCPtr keyframes) + : CSSRule(realm) + , m_name(move(name)) + , m_rules(move(keyframes)) +{ + for (auto& rule : *m_rules) + rule->set_parent_rule(this); +} + void CSSKeyframesRule::visit_edges(Visitor& visitor) { Base::visit_edges(visitor); diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h index f1863d1154..7f66aa7e25 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h @@ -37,13 +37,7 @@ public: void set_name(String const& name) { m_name = name; } private: - CSSKeyframesRule(JS::Realm& realm, FlyString name, JS::NonnullGCPtr keyframes) - : CSSRule(realm) - , m_name(move(name)) - , m_rules(move(keyframes)) - { - } - + CSSKeyframesRule(JS::Realm&, FlyString name, JS::NonnullGCPtr keyframes); virtual void visit_edges(Visitor&) override; virtual void initialize(JS::Realm&) override;