From 4646a87eba9fb8d518e7641b2ecf6df5cc95545e Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Wed, 28 Feb 2024 18:00:25 +0000 Subject: [PATCH] LibWeb: Make `CSSConditionRule.conditionText` read-only Previously @media rule conditions could be updated by assigning to `conditionText`. This change aligns our implementation with the CSSOM specification, which says `CSSConditionRule.conditionText` should be read-only. --- ...SSConditionRule-conditionText-readonly.txt | 4 ++++ ...SConditionRule-conditionText-readonly.html | 24 +++++++++++++++++++ .../Libraries/LibWeb/CSS/CSSConditionRule.h | 1 - .../Libraries/LibWeb/CSS/CSSConditionRule.idl | 2 +- .../Libraries/LibWeb/CSS/CSSMediaRule.cpp | 5 ---- Userland/Libraries/LibWeb/CSS/CSSMediaRule.h | 1 - .../Libraries/LibWeb/CSS/CSSSupportsRule.cpp | 6 ----- .../Libraries/LibWeb/CSS/CSSSupportsRule.h | 1 - 8 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 Tests/LibWeb/Text/expected/css/CSSConditionRule-conditionText-readonly.txt create mode 100644 Tests/LibWeb/Text/input/css/CSSConditionRule-conditionText-readonly.html diff --git a/Tests/LibWeb/Text/expected/css/CSSConditionRule-conditionText-readonly.txt b/Tests/LibWeb/Text/expected/css/CSSConditionRule-conditionText-readonly.txt new file mode 100644 index 0000000000..ad30f7725f --- /dev/null +++ b/Tests/LibWeb/Text/expected/css/CSSConditionRule-conditionText-readonly.txt @@ -0,0 +1,4 @@ + @media rule conditionText initial value: not all +@media rule conditionText value after assignment: not all +@supports rule conditionText initial value: not (unsupported-property: unsupported-value) +@supports rule conditionText value after assignment: not (unsupported-property: unsupported-value) diff --git a/Tests/LibWeb/Text/input/css/CSSConditionRule-conditionText-readonly.html b/Tests/LibWeb/Text/input/css/CSSConditionRule-conditionText-readonly.html new file mode 100644 index 0000000000..75073a5f48 --- /dev/null +++ b/Tests/LibWeb/Text/input/css/CSSConditionRule-conditionText-readonly.html @@ -0,0 +1,24 @@ + + +
This text shouldn't be visible
+ + diff --git a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h index ebc7505f03..e292437007 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h @@ -19,7 +19,6 @@ public: virtual ~CSSConditionRule() = default; virtual String condition_text() const = 0; - virtual void set_condition_text(String const&) = 0; virtual bool condition_matches() const = 0; virtual void for_each_effective_style_rule(Function const& callback) const override; diff --git a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.idl b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.idl index c52e78582d..5dc19c87f3 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.idl +++ b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.idl @@ -3,5 +3,5 @@ // https://drafts.csswg.org/css-conditional-3/#the-cssconditionrule-interface [Exposed=Window] interface CSSConditionRule : CSSGroupingRule { - attribute CSSOMString conditionText; + readonly attribute CSSOMString conditionText; }; diff --git a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp index da212cf9ae..90a7c4418d 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp @@ -42,11 +42,6 @@ String CSSMediaRule::condition_text() const return m_media->media_text(); } -void CSSMediaRule::set_condition_text(String const& text) -{ - m_media->set_media_text(text); -} - // https://www.w3.org/TR/cssom-1/#serialize-a-css-rule String CSSMediaRule::serialized() const { diff --git a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h index c29a68f776..ad48924873 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h @@ -26,7 +26,6 @@ public: virtual Type type() const override { return Type::Media; } virtual String condition_text() const override; - virtual void set_condition_text(String const&) override; virtual bool condition_matches() const override { return m_media->matches(); } MediaList* media() const { return m_media; } diff --git a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp index b53c234f6b..ed1bb01155 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp @@ -35,12 +35,6 @@ String CSSSupportsRule::condition_text() const return m_supports->to_string(); } -void CSSSupportsRule::set_condition_text(String const& text) -{ - if (auto new_supports = parse_css_supports(Parser::ParsingContext { realm() }, text)) - m_supports = new_supports.release_nonnull(); -} - // https://www.w3.org/TR/cssom-1/#serialize-a-css-rule String CSSSupportsRule::serialized() const { diff --git a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h index b9b9238738..4a4a537d1f 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h @@ -27,7 +27,6 @@ public: virtual Type type() const override { return Type::Supports; } String condition_text() const override; - void set_condition_text(String const&) override; virtual bool condition_matches() const override { return m_supports->matches(); } private: