aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/csslayerblockrule.rs
diff options
context:
space:
mode:
authorOriol Brufau <obrufau@igalia.com>2024-04-22 09:06:36 +0200
committerGitHub <noreply@github.com>2024-04-22 07:06:36 +0000
commitf9e154af5543063e4a168b92948d1009c73f2bf3 (patch)
tree49b20dd980cb773dd79e2d3a7e247740ec34fb09 /components/script/dom/csslayerblockrule.rs
parent67f239d1bab9e866539ea4ef76a1d40bcbeb7d53 (diff)
downloadservo-f9e154af5543063e4a168b92948d1009c73f2bf3.tar.gz
servo-f9e154af5543063e4a168b92948d1009c73f2bf3.zip
Fix InsertRule to use the right CssRuleTypes (#32125)
`CSSRule::Type()` returns an u16 for CSSOM. `InsertRule()` was incorrectly using this to create a `CssRuleTypes`. Instead of `CssRuleTypes::from_bits(rule_type)`, it should be something like `CssRuleTypes::from_bits(1 << rule_type)`. However, that would only work when `Type()` provides an actual value, which per https://drafts.csswg.org/cssom/#dom-cssrule-type only happens for old rule types. New rule types just return 0. Therefore, this patch changes the signature of `SpecificCSSRule::ty()` to return the actual `CssRuleType`, and then `CSSRule::Type()` can zero it out when necessary. The fix is only relevant for CSS Nesting, which is currently disabled on Servo, so no test is necessary. <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes do not require tests because the fix is only relevant for CSS Nesting, which is currently disabled <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Diffstat (limited to 'components/script/dom/csslayerblockrule.rs')
-rw-r--r--components/script/dom/csslayerblockrule.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/components/script/dom/csslayerblockrule.rs b/components/script/dom/csslayerblockrule.rs
index 08779e62f98..21db85c2f6d 100644
--- a/components/script/dom/csslayerblockrule.rs
+++ b/components/script/dom/csslayerblockrule.rs
@@ -5,7 +5,7 @@
use dom_struct::dom_struct;
use servo_arc::Arc;
use style::shared_lock::ToCssWithGuard;
-use style::stylesheets::LayerBlockRule;
+use style::stylesheets::{CssRuleType, LayerBlockRule};
use style_traits::ToCss;
use crate::dom::bindings::codegen::Bindings::CSSLayerBlockRuleBinding::CSSLayerBlockRuleMethods;
@@ -56,8 +56,8 @@ impl CSSLayerBlockRule {
}
impl SpecificCSSRule for CSSLayerBlockRule {
- fn ty(&self) -> u16 {
- 0
+ fn ty(&self) -> CssRuleType {
+ CssRuleType::LayerBlock
}
fn get_css(&self) -> DOMString {