diff options
Diffstat (limited to 'components/style/stylist.rs')
-rw-r--r-- | components/style/stylist.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/components/style/stylist.rs b/components/style/stylist.rs index 487f3ade5de..8dfdc91e58b 100644 --- a/components/style/stylist.rs +++ b/components/style/stylist.rs @@ -32,7 +32,9 @@ use crate::stylesheets::keyframes_rule::KeyframesAnimation; use crate::stylesheets::layer_rule::{LayerName, LayerOrder}; use crate::stylesheets::viewport_rule::{self, MaybeNew, ViewportRule}; #[cfg(feature = "gecko")] -use crate::stylesheets::{CounterStyleRule, FontFaceRule, FontFeatureValuesRule, PageRule}; +use crate::stylesheets::{ + CounterStyleRule, FontFaceRule, FontFeatureValuesRule, FontPaletteValuesRule, PageRule, +}; use crate::stylesheets::{ CssRule, EffectiveRulesIterator, Origin, OriginSet, PageRule, PerOrigin, PerOriginIter, }; @@ -1679,6 +1681,10 @@ pub struct ExtraStyleData { #[cfg(feature = "gecko")] pub font_feature_values: LayerOrderedVec<Arc<Locked<FontFeatureValuesRule>>>, + /// A list of effective font-palette-values rules. + #[cfg(feature = "gecko")] + pub font_palette_values: LayerOrderedVec<Arc<Locked<FontPaletteValuesRule>>>, + /// A map of effective counter-style rules. #[cfg(feature = "gecko")] pub counter_styles: LayerOrderedMap<Arc<Locked<CounterStyleRule>>>, @@ -1704,6 +1710,15 @@ impl ExtraStyleData { self.font_feature_values.push(rule.clone(), layer); } + /// Add the given @font-palette-values rule. + fn add_font_palette_values( + &mut self, + rule: &Arc<Locked<FontPaletteValuesRule>>, + layer: LayerId, + ) { + self.font_palette_values.push(rule.clone(), layer); + } + /// Add the given @counter-style rule. fn add_counter_style( &mut self, @@ -1745,6 +1760,7 @@ impl ExtraStyleData { fn sort_by_layer(&mut self, layers: &[CascadeLayer]) { self.font_faces.sort(layers); self.font_feature_values.sort(layers); + self.font_palette_values.sort(layers); self.counter_styles.sort(layers); self.pages.global.sort(layers); } @@ -1754,6 +1770,7 @@ impl ExtraStyleData { { self.font_faces.clear(); self.font_feature_values.clear(); + self.font_palette_values.clear(); self.counter_styles.clear(); self.pages.clear(); } @@ -1790,6 +1807,7 @@ impl MallocSizeOf for ExtraStyleData { let mut n = 0; n += self.font_faces.shallow_size_of(ops); n += self.font_feature_values.shallow_size_of(ops); + n += self.font_palette_values.shallow_size_of(ops); n += self.counter_styles.shallow_size_of(ops); n += self.pages.shallow_size_of(ops); n @@ -2638,6 +2656,11 @@ impl CascadeData { .add_font_feature_values(rule, containing_rule_state.layer_id); }, #[cfg(feature = "gecko")] + CssRule::FontPaletteValues(ref rule) => { + self.extra_data + .add_font_palette_values(rule, containing_rule_state.layer_id); + }, + #[cfg(feature = "gecko")] CssRule::CounterStyle(ref rule) => { self.extra_data.add_counter_style( guard, @@ -2888,6 +2911,7 @@ impl CascadeData { CssRule::Document(..) | CssRule::LayerBlock(..) | CssRule::LayerStatement(..) | + CssRule::FontPaletteValues(..) | CssRule::FontFeatureValues(..) => { // Not affected by device changes. continue; |