style: Clean-up viewport unit resolution a bit

I should've caught this when reviewing the new viewport units but alas :-)

Differential Revision: https://phabricator.services.mozilla.com/D143856
This commit is contained in:
Emilio Cobos Álvarez 2023-08-11 00:29:32 +02:00 committed by Martin Robinson
parent 14fb147b6c
commit af52dbe028

View file

@ -290,6 +290,7 @@ pub enum ViewportVariant {
} }
/// https://drafts.csswg.org/css-values/#viewport-relative-units /// https://drafts.csswg.org/css-values/#viewport-relative-units
#[derive(PartialEq)]
enum ViewportUnit { enum ViewportUnit {
/// *vw units. /// *vw units.
Vw, Vw,
@ -570,43 +571,21 @@ impl ViewportPercentageLength {
/// Computes the given viewport-relative length for the given viewport size. /// Computes the given viewport-relative length for the given viewport size.
pub fn to_computed_value(&self, context: &Context) -> CSSPixelLength { pub fn to_computed_value(&self, context: &Context) -> CSSPixelLength {
let (variant, unit, factor) = self.unpack(); let (variant, unit, factor) = self.unpack();
let size = context.viewport_size_for_viewport_unit_resolution(variant);
let length = match unit { let length = match unit {
ViewportUnit::Vw => context.viewport_size_for_viewport_unit_resolution(variant).width, ViewportUnit::Vw => size.width,
ViewportUnit::Vh => context.viewport_size_for_viewport_unit_resolution(variant).height, ViewportUnit::Vh => size.height,
ViewportUnit::Vmin => { ViewportUnit::Vmin => cmp::min(size.width, size.height),
let base_size = ViewportUnit::Vmax => cmp::max(size.width, size.height),
context.viewport_size_for_viewport_unit_resolution(variant); ViewportUnit::Vi | ViewportUnit::Vb => {
cmp::min(base_size.width, base_size.height)
},
ViewportUnit::Vmax => {
let base_size =
context.viewport_size_for_viewport_unit_resolution(variant);
cmp::max(base_size.width, base_size.height)
},
ViewportUnit::Vb => {
let base_size =
context.viewport_size_for_viewport_unit_resolution(variant);
context context
.rule_cache_conditions .rule_cache_conditions
.borrow_mut() .borrow_mut()
.set_writing_mode_dependency(context.builder.writing_mode); .set_writing_mode_dependency(context.builder.writing_mode);
if context.style().writing_mode.is_vertical() { if (unit == ViewportUnit::Vb) == context.style().writing_mode.is_vertical() {
base_size.width size.width
} else { } else {
base_size.height size.height
}
},
ViewportUnit::Vi => {
let base_size =
context.viewport_size_for_viewport_unit_resolution(variant);
context
.rule_cache_conditions
.borrow_mut()
.set_writing_mode_dependency(context.builder.writing_mode);
if context.style().writing_mode.is_vertical() {
base_size.height
} else {
base_size.width
} }
}, },
}; };