Further changes required by Servo

This commit is contained in:
Oriol Brufau 2023-06-06 17:11:32 +02:00
parent 8bb7d98f0c
commit 5c0f044d39
4 changed files with 26 additions and 4 deletions

View file

@ -513,12 +513,14 @@ trait PrivateMatchMethods: TElement {
Self::replace_single_rule_node( Self::replace_single_rule_node(
&context.shared, &context.shared,
CascadeLevel::Transitions, CascadeLevel::Transitions,
LayerOrder::root(),
declarations.transitions.as_ref().map(|a| a.borrow_arc()), declarations.transitions.as_ref().map(|a| a.borrow_arc()),
&mut rule_node, &mut rule_node,
); );
Self::replace_single_rule_node( Self::replace_single_rule_node(
&context.shared, &context.shared,
CascadeLevel::Animations, CascadeLevel::Animations,
LayerOrder::root(),
declarations.animations.as_ref().map(|a| a.borrow_arc()), declarations.animations.as_ref().map(|a| a.borrow_arc()),
&mut rule_node, &mut rule_node,
); );

View file

@ -1067,6 +1067,14 @@ impl CSSWideKeyword {
} }
} }
#[inline]
fn cascade_layes_enabled() -> bool {
#[cfg(feature = "gecko")]
return static_prefs::pref!("layout.css.cascade-layers.enabled");
#[cfg(feature = "servo")]
return false;
}
impl CSSWideKeyword { impl CSSWideKeyword {
/// Parses a CSS wide keyword from a CSS identifier. /// Parses a CSS wide keyword from a CSS identifier.
pub fn from_ident(ident: &str) -> Result<Self, ()> { pub fn from_ident(ident: &str) -> Result<Self, ()> {
@ -1075,7 +1083,7 @@ impl CSSWideKeyword {
"inherit" => CSSWideKeyword::Inherit, "inherit" => CSSWideKeyword::Inherit,
"unset" => CSSWideKeyword::Unset, "unset" => CSSWideKeyword::Unset,
"revert" => CSSWideKeyword::Revert, "revert" => CSSWideKeyword::Revert,
"revert-layer" if static_prefs::pref!("layout.css.cascade-layers.enabled") => CSSWideKeyword::RevertLayer, "revert-layer" if cascade_layes_enabled() => CSSWideKeyword::RevertLayer,
_ => return Err(()), _ => return Err(()),
}) })
} }

View file

@ -5,13 +5,15 @@
use cssparser::{Parser, ParserInput}; use cssparser::{Parser, ParserInput};
use euclid::{Scale, Size2D}; use euclid::{Scale, Size2D};
use servo_arc::Arc; use servo_arc::Arc;
use style::applicable_declarations::CascadePriority;
use style::context::QuirksMode; use style::context::QuirksMode;
use style::custom_properties::{ use style::custom_properties::{
CustomPropertiesBuilder, CustomPropertiesMap, Name, SpecifiedValue, CustomPropertiesBuilder, CustomPropertiesMap, Name, SpecifiedValue,
}; };
use style::media_queries::{Device, MediaType}; use style::media_queries::{Device, MediaType};
use style::properties::{CustomDeclaration, CustomDeclarationValue}; use style::properties::{CustomDeclaration, CustomDeclarationValue};
use style::stylesheets::Origin; use style::rule_tree::CascadeLevel;
use style::stylesheets::layer_rule::LayerOrder;
use test::{self, Bencher}; use test::{self, Bencher};
fn cascade( fn cascade(
@ -38,7 +40,10 @@ fn cascade(
let mut builder = CustomPropertiesBuilder::new(inherited, &device); let mut builder = CustomPropertiesBuilder::new(inherited, &device);
for declaration in &declarations { for declaration in &declarations {
builder.cascade(declaration, Origin::Author); builder.cascade(
declaration,
CascadePriority::new(CascadeLevel::same_tree_author_normal(), LayerOrder::root()),
);
} }
builder.build() builder.build()

View file

@ -6,12 +6,14 @@ use cssparser::SourceLocation;
use rayon; use rayon;
use servo_arc::Arc; use servo_arc::Arc;
use servo_url::ServoUrl; use servo_url::ServoUrl;
use style::applicable_declarations::CascadePriority;
use style::context::QuirksMode; use style::context::QuirksMode;
use style::error_reporting::{ContextualParseError, ParseErrorReporter}; use style::error_reporting::{ContextualParseError, ParseErrorReporter};
use style::media_queries::MediaList; use style::media_queries::MediaList;
use style::properties::{longhands, Importance, PropertyDeclaration, PropertyDeclarationBlock}; use style::properties::{longhands, Importance, PropertyDeclaration, PropertyDeclarationBlock};
use style::rule_tree::{CascadeLevel, RuleTree, StrongRuleNode, StyleSource}; use style::rule_tree::{CascadeLevel, RuleTree, StrongRuleNode, StyleSource};
use style::shared_lock::{SharedRwLock, StylesheetGuards}; use style::shared_lock::{SharedRwLock, StylesheetGuards};
use style::stylesheets::layer_rule::LayerOrder;
use style::stylesheets::{AllowImportRules, CssRule, Origin, Stylesheet}; use style::stylesheets::{AllowImportRules, CssRule, Origin, Stylesheet};
use style::thread_state::{self, ThreadState}; use style::thread_state::{self, ThreadState};
use test::{self, Bencher}; use test::{self, Bencher};
@ -85,7 +87,12 @@ fn parse_rules(lock: &SharedRwLock, css: &str) -> Vec<(StyleSource, CascadeLevel
} }
fn test_insertion(rule_tree: &RuleTree, rules: Vec<(StyleSource, CascadeLevel)>) -> StrongRuleNode { fn test_insertion(rule_tree: &RuleTree, rules: Vec<(StyleSource, CascadeLevel)>) -> StrongRuleNode {
rule_tree.insert_ordered_rules(rules.into_iter()) rule_tree.insert_ordered_rules(rules.into_iter().map(|(style_source, cascade_level)| {
(
style_source,
CascadePriority::new(cascade_level, LayerOrder::root()),
)
}))
} }
fn test_insertion_style_attribute( fn test_insertion_style_attribute(