diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 0fcb7acc2c4..1b02054e5c3 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1380,7 +1380,7 @@ impl Fragment { result.union_block(&block_flow.base.intrinsic_inline_sizes) } SpecificFragmentInfo::Image(ref mut image_fragment_info) => { - let image_inline_size = match self.style.content_inline_size() { + let mut image_inline_size = match self.style.content_inline_size() { LengthOrPercentageOrAuto::Auto | LengthOrPercentageOrAuto::Percentage(_) => { image_fragment_info.image_inline_size() @@ -1388,13 +1388,19 @@ impl Fragment { LengthOrPercentageOrAuto::Length(length) => length, LengthOrPercentageOrAuto::Calc(calc) => calc.length(), }; + + image_inline_size = max(model::specified(self.style.min_inline_size(), Au(0)), image_inline_size); + if let Some(max) = model::specified_or_none(self.style.max_inline_size(), Au(0)) { + image_inline_size = min(image_inline_size, max) + } + result.union_block(&IntrinsicISizes { minimum_inline_size: image_inline_size, preferred_inline_size: image_inline_size, }); } SpecificFragmentInfo::Canvas(ref mut canvas_fragment_info) => { - let canvas_inline_size = match self.style.content_inline_size() { + let mut canvas_inline_size = match self.style.content_inline_size() { LengthOrPercentageOrAuto::Auto | LengthOrPercentageOrAuto::Percentage(_) => { canvas_fragment_info.canvas_inline_size() @@ -1402,6 +1408,12 @@ impl Fragment { LengthOrPercentageOrAuto::Length(length) => length, LengthOrPercentageOrAuto::Calc(calc) => calc.length(), }; + + canvas_inline_size = max(model::specified(self.style.min_inline_size(), Au(0)), canvas_inline_size); + if let Some(max) = model::specified_or_none(self.style.max_inline_size(), Au(0)) { + canvas_inline_size = min(canvas_inline_size, max) + } + result.union_block(&IntrinsicISizes { minimum_inline_size: canvas_inline_size, preferred_inline_size: canvas_inline_size,