mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:17:34 +00:00
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.
This commit is contained in:
parent
b08fd1b9ae
commit
4646a87eba
8 changed files with 29 additions and 15 deletions
|
@ -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)
|
|
@ -0,0 +1,24 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
@media not all {
|
||||||
|
div { color: red; }
|
||||||
|
}
|
||||||
|
@supports not (unsupported-property: unsupported-value) {
|
||||||
|
div { display: none; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div>This text shouldn't be visible</div>
|
||||||
|
<script src="../include.js"></script>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const mediaRule = document.styleSheets[0].cssRules[0];
|
||||||
|
println(`@media rule conditionText initial value: ${mediaRule.conditionText}`);
|
||||||
|
mediaRule.conditionText = "all";
|
||||||
|
println(`@media rule conditionText value after assignment: ${mediaRule.conditionText}`);
|
||||||
|
|
||||||
|
const supportsRule = document.styleSheets[0].cssRules[1];
|
||||||
|
println(`@supports rule conditionText initial value: ${supportsRule.conditionText}`);
|
||||||
|
mediaRule.conditionText = "(unsupported-property: unsupported-value)";
|
||||||
|
println(`@supports rule conditionText value after assignment: ${supportsRule.conditionText}`);
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -19,7 +19,6 @@ public:
|
||||||
virtual ~CSSConditionRule() = default;
|
virtual ~CSSConditionRule() = default;
|
||||||
|
|
||||||
virtual String condition_text() const = 0;
|
virtual String condition_text() const = 0;
|
||||||
virtual void set_condition_text(String const&) = 0;
|
|
||||||
virtual bool condition_matches() const = 0;
|
virtual bool condition_matches() const = 0;
|
||||||
|
|
||||||
virtual void for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const override;
|
virtual void for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const override;
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
// https://drafts.csswg.org/css-conditional-3/#the-cssconditionrule-interface
|
// https://drafts.csswg.org/css-conditional-3/#the-cssconditionrule-interface
|
||||||
[Exposed=Window]
|
[Exposed=Window]
|
||||||
interface CSSConditionRule : CSSGroupingRule {
|
interface CSSConditionRule : CSSGroupingRule {
|
||||||
attribute CSSOMString conditionText;
|
readonly attribute CSSOMString conditionText;
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,11 +42,6 @@ String CSSMediaRule::condition_text() const
|
||||||
return m_media->media_text();
|
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
|
// https://www.w3.org/TR/cssom-1/#serialize-a-css-rule
|
||||||
String CSSMediaRule::serialized() const
|
String CSSMediaRule::serialized() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,7 +26,6 @@ public:
|
||||||
virtual Type type() const override { return Type::Media; }
|
virtual Type type() const override { return Type::Media; }
|
||||||
|
|
||||||
virtual String condition_text() const override;
|
virtual String condition_text() const override;
|
||||||
virtual void set_condition_text(String const&) override;
|
|
||||||
virtual bool condition_matches() const override { return m_media->matches(); }
|
virtual bool condition_matches() const override { return m_media->matches(); }
|
||||||
|
|
||||||
MediaList* media() const { return m_media; }
|
MediaList* media() const { return m_media; }
|
||||||
|
|
|
@ -35,12 +35,6 @@ String CSSSupportsRule::condition_text() const
|
||||||
return m_supports->to_string();
|
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
|
// https://www.w3.org/TR/cssom-1/#serialize-a-css-rule
|
||||||
String CSSSupportsRule::serialized() const
|
String CSSSupportsRule::serialized() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,7 +27,6 @@ public:
|
||||||
virtual Type type() const override { return Type::Supports; }
|
virtual Type type() const override { return Type::Supports; }
|
||||||
|
|
||||||
String condition_text() const override;
|
String condition_text() const override;
|
||||||
void set_condition_text(String const&) override;
|
|
||||||
virtual bool condition_matches() const override { return m_supports->matches(); }
|
virtual bool condition_matches() const override { return m_supports->matches(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue