diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 568ebf50657..265867cd6e1 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -1265,10 +1265,16 @@ impl Fragment { result.union_block(&block_flow.base.intrinsic_inline_sizes) } SpecificFragmentInfo::Image(ref mut image_fragment_info) => { - let image_inline_size = match image_fragment_info.replaced_image_fragment_info - .dom_inline_size { - None => image_fragment_info.image_inline_size(), - Some(dom_inline_size) => dom_inline_size, + // FIXME(pcwalton): Shouldn't `width` and `height` be preshints? + let image_inline_size = match (image_fragment_info.replaced_image_fragment_info + .dom_inline_size, + self.style.content_inline_size()) { + (None, LengthOrPercentageOrAuto::Auto) | + (None, LengthOrPercentageOrAuto::Percentage(_)) => { + image_fragment_info.image_inline_size() + } + (Some(dom_inline_size), _) => dom_inline_size, + (None, LengthOrPercentageOrAuto::Length(length)) => length, }; result.union_block(&IntrinsicISizes { minimum_inline_size: image_inline_size, diff --git a/tests/ref/basic.list b/tests/ref/basic.list index 5eba71f26b0..741ce0864ee 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -144,6 +144,7 @@ experimental == iframe/size_attributes_vertical_writing_mode.html iframe/size_at != img_simple.html img_simple_ref.html == img_size_a.html img_size_b.html == img_width_attribute_intrinsic_width_a.html img_width_attribute_intrinsic_width_ref.html +== img_width_style_intrinsic_width_a.html img_width_style_intrinsic_width_ref.html == incremental_float_a.html incremental_float_ref.html == incremental_inline_layout_a.html incremental_inline_layout_ref.html != inline_background_a.html inline_background_ref.html diff --git a/tests/ref/img_width_style_intrinsic_width_a.html b/tests/ref/img_width_style_intrinsic_width_a.html new file mode 100644 index 00000000000..3364c664f70 --- /dev/null +++ b/tests/ref/img_width_style_intrinsic_width_a.html @@ -0,0 +1,14 @@ + + +
+ + + +There should be no red. + + + + + diff --git a/tests/ref/img_width_style_intrinsic_width_ref.html b/tests/ref/img_width_style_intrinsic_width_ref.html new file mode 100644 index 00000000000..10a57657a51 --- /dev/null +++ b/tests/ref/img_width_style_intrinsic_width_ref.html @@ -0,0 +1,14 @@ + + + + + + +There should be no red. + + + + +