mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
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. -->
This commit is contained in:
parent
67f239d1ba
commit
f9e154af55
12 changed files with 42 additions and 41 deletions
|
@ -6,6 +6,7 @@ use dom_struct::dom_struct;
|
|||
use servo_arc::Arc;
|
||||
use style::shared_lock::{Locked, ToCssWithGuard};
|
||||
use style::stylesheets::keyframes_rule::Keyframe;
|
||||
use style::stylesheets::CssRuleType;
|
||||
|
||||
use crate::dom::bindings::codegen::Bindings::CSSKeyframeRuleBinding::CSSKeyframeRuleMethods;
|
||||
use crate::dom::bindings::inheritance::Castable;
|
||||
|
@ -73,9 +74,8 @@ impl CSSKeyframeRuleMethods for CSSKeyframeRule {
|
|||
}
|
||||
|
||||
impl SpecificCSSRule for CSSKeyframeRule {
|
||||
fn ty(&self) -> u16 {
|
||||
use crate::dom::bindings::codegen::Bindings::CSSRuleBinding::CSSRuleConstants;
|
||||
CSSRuleConstants::KEYFRAME_RULE
|
||||
fn ty(&self) -> CssRuleType {
|
||||
CssRuleType::Keyframe
|
||||
}
|
||||
|
||||
fn get_css(&self) -> DOMString {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue