From 4a4be1d7e5b7edee8debc38cf35236d7e91eec35 Mon Sep 17 00:00:00 2001 From: Darin Minamoto Date: Wed, 15 Jun 2016 16:39:22 -0700 Subject: [PATCH] Image with height defined in % resizes properly --- components/layout/block.rs | 18 ++++++++----- components/layout/fragment.rs | 9 +++++-- components/layout/inline.rs | 3 ++- components/layout/list_item.rs | 3 ++- tests/wpt/mozilla/meta/MANIFEST.json | 24 ++++++++++++++++++ tests/wpt/mozilla/tests/css/car.jpg | Bin 0 -> 14390 bytes .../tests/css/image_percentage_height.html | 23 +++++++++++++++++ .../css/image_percentage_height_ref.html | 14 ++++++++++ 8 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 tests/wpt/mozilla/tests/css/car.jpg create mode 100644 tests/wpt/mozilla/tests/css/image_percentage_height.html create mode 100644 tests/wpt/mozilla/tests/css/image_percentage_height_ref.html diff --git a/components/layout/block.rs b/components/layout/block.rs index 2e0794913d3..d74490f7734 100644 --- a/components/layout/block.rs +++ b/components/layout/block.rs @@ -2842,8 +2842,9 @@ impl ISizeAndMarginsComputer for AbsoluteReplaced { let opaque_block = OpaqueFlow::from_flow(block); let containing_block_inline_size = block.containing_block_size(&layout_context.shared_context().viewport_size, opaque_block).inline; + let container_block_size = block.explicit_block_containing_size(layout_context); let fragment = block.fragment(); - fragment.assign_replaced_inline_size_if_necessary(containing_block_inline_size); + fragment.assign_replaced_inline_size_if_necessary(containing_block_inline_size, container_block_size); // For replaced absolute flow, the rest of the constraint solving will // take inline-size to be specified as the value computed here. MaybeAuto::Specified(fragment.content_inline_size()) @@ -2898,10 +2899,11 @@ impl ISizeAndMarginsComputer for BlockReplaced { fn initial_computed_inline_size(&self, block: &mut BlockFlow, parent_flow_inline_size: Au, - _: &LayoutContext) + layout_context: &LayoutContext) -> MaybeAuto { + let container_block_size = block.explicit_block_containing_size(layout_context); let fragment = block.fragment(); - fragment.assign_replaced_inline_size_if_necessary(parent_flow_inline_size); + fragment.assign_replaced_inline_size_if_necessary(parent_flow_inline_size, container_block_size); // For replaced block flow, the rest of the constraint solving will // take inline-size to be specified as the value computed here. MaybeAuto::Specified(fragment.content_inline_size()) @@ -2955,10 +2957,11 @@ impl ISizeAndMarginsComputer for FloatReplaced { fn initial_computed_inline_size(&self, block: &mut BlockFlow, parent_flow_inline_size: Au, - _: &LayoutContext) + layout_context: &LayoutContext) -> MaybeAuto { + let container_block_size = block.explicit_block_containing_size(layout_context); let fragment = block.fragment(); - fragment.assign_replaced_inline_size_if_necessary(parent_flow_inline_size); + fragment.assign_replaced_inline_size_if_necessary(parent_flow_inline_size, container_block_size); // For replaced block flow, the rest of the constraint solving will // take inline-size to be specified as the value computed here. MaybeAuto::Specified(fragment.content_inline_size()) @@ -3042,10 +3045,11 @@ impl ISizeAndMarginsComputer for InlineBlockReplaced { fn initial_computed_inline_size(&self, block: &mut BlockFlow, parent_flow_inline_size: Au, - _: &LayoutContext) + layout_context: &LayoutContext) -> MaybeAuto { + let container_block_size = block.explicit_block_containing_size(layout_context); let fragment = block.fragment(); - fragment.assign_replaced_inline_size_if_necessary(parent_flow_inline_size); + fragment.assign_replaced_inline_size_if_necessary(parent_flow_inline_size, container_block_size); // For replaced block flow, the rest of the constraint solving will // take inline-size to be specified as the value computed here. MaybeAuto::Specified(fragment.content_inline_size()) diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 640b7acce1a..27f08dfd5e5 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -488,6 +488,7 @@ impl ReplacedImageFragmentInfo { style: &ServoComputedValues, noncontent_inline_size: Au, container_inline_size: Au, + container_block_size: Option, fragment_inline_size: Au, fragment_block_size: Au) -> Au { @@ -515,7 +516,7 @@ impl ReplacedImageFragmentInfo { let specified_height = ReplacedImageFragmentInfo::style_length( style_block_size, - None); + container_block_size); let specified_height = match specified_height { MaybeAuto::Auto => intrinsic_height, MaybeAuto::Specified(h) => h, @@ -1767,7 +1768,9 @@ impl Fragment { /// Assigns replaced inline-size, padding, and margins for this fragment only if it is replaced /// content per CSS 2.1 ยง 10.3.2. - pub fn assign_replaced_inline_size_if_necessary(&mut self, container_inline_size: Au) { + pub fn assign_replaced_inline_size_if_necessary(&mut self, + container_inline_size: Au, + container_block_size: Option) { match self.specific { SpecificFragmentInfo::Generic | SpecificFragmentInfo::GeneratedContent(_) | @@ -1833,6 +1836,7 @@ impl Fragment { .calculate_replaced_inline_size(style, noncontent_inline_size, container_inline_size, + container_block_size, fragment_inline_size, fragment_block_size); } @@ -1844,6 +1848,7 @@ impl Fragment { .calculate_replaced_inline_size(style, noncontent_inline_size, container_inline_size, + container_block_size, fragment_inline_size, fragment_block_size); } diff --git a/components/layout/inline.rs b/components/layout/inline.rs index 5ad86e54e05..5387f943070 100644 --- a/components/layout/inline.rs +++ b/components/layout/inline.rs @@ -1359,6 +1359,7 @@ impl Flow for InlineFlow { let inline_size = self.base.block_container_inline_size; let container_mode = self.base.block_container_writing_mode; + let container_block_size = self.base.block_container_explicit_block_size; self.base.position.size.inline = inline_size; { @@ -1368,7 +1369,7 @@ impl Flow for InlineFlow { fragment.compute_border_and_padding(inline_size, border_collapse); fragment.compute_block_direction_margins(inline_size); fragment.compute_inline_direction_margins(inline_size); - fragment.assign_replaced_inline_size_if_necessary(inline_size); + fragment.assign_replaced_inline_size_if_necessary(inline_size, container_block_size); } } diff --git a/components/layout/list_item.rs b/components/layout/list_item.rs index d32c19d5c37..f12d290e9a3 100644 --- a/components/layout/list_item.rs +++ b/components/layout/list_item.rs @@ -88,7 +88,8 @@ impl Flow for ListItemFlow { for marker in self.marker_fragments.iter_mut().rev() { let containing_block_inline_size = self.block_flow.base.block_container_inline_size; - marker.assign_replaced_inline_size_if_necessary(containing_block_inline_size); + let container_block_size = self.block_flow.explicit_block_containing_size(layout_context); + marker.assign_replaced_inline_size_if_necessary(containing_block_inline_size, container_block_size); // Do this now. There's no need to do this in bubble-widths, since markers do not // contribute to the inline size of this flow. diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 24af8aa6f41..43761afed12 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -2040,6 +2040,18 @@ "url": "/_mozilla/css/image_percentage_dimen.html" } ], + "css/image_percentage_height.html": [ + { + "path": "css/image_percentage_height.html", + "references": [ + [ + "/_mozilla/css/image_percentage_height_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/image_percentage_height.html" + } + ], "css/image_rendering_auto_a.html": [ { "path": "css/image_rendering_auto_a.html", @@ -9080,6 +9092,18 @@ "url": "/_mozilla/css/image_percentage_dimen.html" } ], + "css/image_percentage_height.html": [ + { + "path": "css/image_percentage_height.html", + "references": [ + [ + "/_mozilla/css/image_percentage_height_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/image_percentage_height.html" + } + ], "css/image_rendering_auto_a.html": [ { "path": "css/image_rendering_auto_a.html", diff --git a/tests/wpt/mozilla/tests/css/car.jpg b/tests/wpt/mozilla/tests/css/car.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef09b796c638d0b305e1a4fa99c8c43fdd183f19 GIT binary patch literal 14390 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%0D(HqWHx%^m%UJq+} zd%Q1JfH2>{jjuLXxAhs?dA6>8VjaS0Wy(_scXJ2sRRb|xZ8iCNq@hJ$c5sBptwQC# zmL;Trqvk(ki&_2ET`c0{RB5r2=XSdg?&+4$bf=ov+LP6$zNRiUq9sAOWgq9!_i`Lj z-4D^wu$6X{JBYg6`Ni}Oh__%y6UXmLIfNqPSa4m&R+dzu^GJYYBc%iDk^gI>?)TVo zx*z58uxD_#;H?2tTd|hojgB>uXAGOgG;OSRY!Ng3W!9L2hR1)D5SCkd1wZeOiWV^1 zqBds4$^QuJS-At`rug|_WU#2w8=edf7b6dDH@|nEU)rQhrvm=vfvf)qEbU(gV zY<0`$ry-xhw0SR5291aL8^WPZYqnTLN1)|eQzqMmEv)^R80z}h$$u*Rdjm%0%zqlk zx)J2#B(CCCYVMf8C1U!T$HeWnx+;Ha&DOm38r?CnW{Er3@Iy{f14!xlix(@U)=@Yg zOm@CCzH3+?mDjo&sh)tRojjYW=&{(r)O*k0yX9{*rOXPVsqYfX;jxV8jnZ2?(mE^s z;~1ecp&3iN0FV*mIR%&dkIxi%c) z>dazrJt8a6pHJmfkYfEtnU2Kdm?KG@gf>8qT^TUat?L{fNa=sXb|5zdDY0cHV(Kd|kKxmI1lL0e_pa5q~OShu=VRqEbhb@m>aLC%lkYZF_LXiAm3kUTV( zO$-a)1fzzxz)Vsx-P;&!%fp?g){AZk#Z&J9XwZ~ZhT4@pf>~gp5+5Sc-{_&p6CJO9 zT%mduIXN_Plhh-eA?R>f-F|JDo>$*j*NxSyvPvJFDCS{5?;3gl6MetOX>1X}o$ z1ouANQv;g?N5M1pn*mF}-+Z-99T^hl1qCw~KG+S4{2z@ABYbW$BYd{xp_FBb@gNSf zGW_3SaB@}JE|#R#otEUe$r$x39yDL>-9=OVL}vf|)&)vZPlhzO)co0N zFh#L2-UYJI3(*S}V zy*gQ;jQdVsEVN2|9t&4$<=`T16slPjmzDmuEe4&$W7PA7t;HYUdHu{iteN3q{&ReC zSldvO9d5@^?dD0=m2tlGmL>enf5^!HC*0@e8Vz`?;DI^Yf2}K9J+p+5-82V>kj^D- zZD!U%_ zo~sQ`FJ`^$0wqRRJ#;d{+)0F<$$`?YFBT$bQxTffPX)skD>D-Y(CFJH^_Vl*NzA!i zuv>erXAv=^0syoN5DfqETYcD^}L zxOY5V3&pfwRap-(@@LM_mwLHlCvC5vpL1*pZ;q|MPHok)cs}1fZ%fz`6&SDP!RM6k z%oAe%#26eh^%4`IP(sSG3hJ*26CS5NIJjw%wJmcrjDZVpohJ`>LKIs}dsth`s7U23 zs?4{ukQP;#j=yIdcH+3{B~j+%IcUgoGZXSuQefGQo$Zon%$Inx?Cf~6WEDXbL1w!4 z@6F|%GHz!-=<56wMgx5!r}+-Z3K&TmkKxv%FEf_LQ9V)^{*|oiwR!)EDwfc+dOML3 zzapobrOJN1G4wgvxlaDgs)MQvQ}WLjeq?W3yLsm6Ufsh)5A4s&;BqnK-1FD_VIXch zcJo;(i^VV=w(;18dl?mG##LeW^}o0ses;Jk~}^ zZ(a!z`mrw}DnSBu*sFaWna%wNR5UdKl=d-E{Y3Q+nEizJolD*}R$4Wedg?KHZ)ua# zIhavVh&1pqd5V?p;fFOPkpGP1z85|awX#OBb>15Y%iXxpGZI5!Qa4J`v!-`kAlw!! z!1xIp5B~g+|HXGV&?FikYaAL59L#p;cQ+tm?L2^ot1diWR2?gU?7pQ)g1{}W2 z_gwm=%EmnGtZN|l5qS;v8@qNB?L5_Fac;wFrhl~pM<9Mxu4jAa;4XQIy(N&@PT z5eC*NXul~&txTQ&p-L#@M954YvxPJ+AFCO#^lHEM=+TN$>DHQB{x z53Aog5-k`V{q%;ByGuCs_!lvwPS!39w(>t3@cwzcMYwmW@Xn7}o#JT)87A9`igegy z6i^_}hH-x=SBaluRZcEdrM~x)la)lr*SlosRCCcT3(oTI6+ce0$+XQQ=4PXnX zF4GR)3u1LdWp`9;a{YIwqCq7iWKPM1d4c6vVL9IWPl+IFjf(6XH*_F}m&-H(v_ zoV^41r+J8Yn31@jR}MqWG?#Q4NkH}OB)MUN3C) z!LR62)wprh9ZeMUhZi$9ySzP~Sw^Oo@ao8XW~@3|I^5jNBd5?6-_#g)LN~+~(q3?h zBsEK!)91L}eZ7YHvFqV9!$9j2kpEyoe0a9Gl$kiS%$Y|)HwBnOxy~q2cFos>UO9JJ z9dgv!JtIOhrMquS0Dv)TU%=NxX!*XL*y1R}rVK4n#KB#@3P0p(iX^f{Jo3d4q+^wK zr8y@^?#jDGJLSoAPhjxxV+C7NuBho>jQd)?alyf`Tl6+kKHm(u6Lxim0d zo-%i6h;i-~87CmWTN~<%8p#idZ$@EZx3aoKFioQ-6dJ>bh$={DH z(H|oIc&T9|RIpTPgUn6-KIi75>~45EDWp?yNDp+TdnSmHTd4cFeJ%5QQw-g?cOG$C zGu@e99C>aNihuRgUwJ-1IRa4!9Lj2w;ETlVR>)_wUoSyMNl&b~5$`C(f(J7`MKcu& zs`|0)L8M8A#58fg53DiNCQ{1(*}`h^-9_%R&a=q6l2+IHWjoCfQ-gXlTOow!&^->H zZ^VD%-*lTt{%6+mVWI--!pI6_5VY{J*LjLZ$xUb{yA1F1Ss{qq@ot2b?Vcdof{37H zQ)I$z2Z-Y`q`|^tTUDq>aB5C)9wrBCqYjs$FOD3u0?*2PLL>4NoQbf2(R_$GC3x@> zW@qq*tE{^J3Ks=2S5woU_?V}HX!tjoZWl1dPn;Y3|MHEqw)dxFptz>95rq~w5$N7F z%h}a5z}mP3M~^^A*8PGV10qo?r@T`ccg`Mxz*J55RdQiFfs8N4V_B0%lCZh_DUgiY zA%%({2EFE3y0@%dpPw7Su19~@GSkbdXPGbLhEzyhDW6bq9!70@M`u}nWcKa$jLag` zOjnLa&uZNv#SUIGX?uT1q<=YcV)tD~wNlfQ`omAc*4|!zHP%^r)*0cR3chd(Iv>7N zWJIxcle_Wk`-yoa@4G7(gf>9wh2KQ@kU?0Rj09sYlSrMWH7p=!B?j?$HkGXgy>wBC zC5{obF4NH$LVYO;<%4b9VCpoq7h_e}4Y>KC1?il?!l1+&=LwNHs^_!#??!Kvam+*=l) zFNdj?s%3(ue^1@bkP3d?(BSfEd*wJsSVoP@R@31uaEld|dG8^NgdkQz_KcnImD9H( z)ze&D*A~%ukFXQc8hHRcKKfP`w1>3XqB^J6_T_5~uSA4yYv?@J*(XDyvCbKX(RvV^ zu0?Q%B1d$ihBd?esB``yA6|-8)8a;}i@U*MuJi2BWdf<8R`!YV+yPKA<%-_;T2)3v zPVGzoj6w@G^46~E@{M3s)sAmobLkfMWEd;tyv{sBgvX%fRb~{=&2ZMRA)3jKM7?r= zn>-1}^Iz91SDB{HcypMdHaRETf_nb*1-l5TEo!HrQnr*>e}{P&u{>?*A+vhtLoD|h zLP%1q*h{UU0X|WIiAs)o51%Cx8*hZsva26?QA3cSmKgFZGwFibk_>C!fJ$|8ZGMat zM&y0xIhf_3w4}t^g4{2Szc7{_NA{ESgJ4u55TaEYpjw#YR5<0FwVGwkZJDfUm2GTP z&se3mr!I=Vth*OY-o8xTByJ+AbI`dzFPS#qtDl_BwEqxe;f%`TJuU+aa-y+5-7w!1 zs)~%QCjgc2#ce2m>LKA^o!s$>Iw+#ZhCx}?bdyO}<<)Fp{Z*X`%4A(*O!mFw4z%29 zm$fw>IaDgiAR9e%TInvIHb#!nJqn)QPSZ?HJKW3-^j7>rTNeDMp|Y+-?5W8RW9vNZ zxaL|o((tgR8LzxlJ05~%UfxyJ(=Is6V@Q1v>7qmXXO40gc|>9x|+^P~HZhuyP{%%s?00(krNZ0b3VRbB^q1rj#Q0|F>;?rex9uDn8-NsUs%T8Mq zdPh5T3L%Rw`#z&uwDV=3<&01l)m!?HN>MoBF!I487jly5L8(JV@HT?1to<~GoF@t2 zL=wmB+FKfeQB_a5E~Q>ZNqs(!vA zq!gz;Wk5VJq?2;(Z@M~}_Y>JEXBl*t)xK4EbY4S02-eRqSMov@=xy{^MBp;tsMRWi zG#&^i^}Kd`IR==y9eoOG|K*+z2g7wNadcxl9`bKdfbhV%whLVeM*dd>EqVRRF0wjw z%4OMj#nu5U$L3Jteg*^@5RICy@sx<;f8BeysoIV#ajpTe(Zgz~J8Jv*hl8)KJB9L$ zBgn;#1Of=B%djds86_ecOa_L>{QsWO8f$Z}B8?P<+h{Q~32}AMks}E@7LEeC5?{89 zbp!2l*oZUI$y7txfkrQwj`5YkGY2_(AV zg)Y%a@{8QIA4LF*HLafrP&C)vzJA%$RCV(|=+;32c|euMP<7#R;svaSiRqpyIH z$B7-WuRzdNLa-K@QE-8w43tsJn^V(Um=RL0@HrvpOPHf+#GT+ck99@ePZ~QeR?a_I zh=)xsP^;keV!=%ocihtAsv7!JR23@xQ!54vK`T#s{|z8($We--P|t+9Q;;FI6ptC{ z9B;D5bvP|%KZs=7d2?xq10C|RWSrpF^{6r(w7XKRMkm7}N8HezrKd<B$Uw$8c5oA2z+cc92GF|CW^eLEq*zF7*kYBnQ@DLgrsHH>xMSx2$@#} zv#DaV zb3XR2SZj>cB{PScm71zP+h!TIb@`z3azbRQRJyz!RzXwqSJhj`7%H3`N}o}JM1%4(7#s{&4|RSDCiZrYE~pGYc00-WYNrg71tYX2 zXTL$dk|jOtsdM)AMpWGLv>hJ<&Dy%mFN)9#PjQubkBjRaP#xs2?pk4%t4S=#V_g)e z|Dy`R4X@#be>i*zCf+ZetnB+?nGEt9+z!lfp_4;%c~uA}3ba7Ew1C~_e+66kYkx`T z=wa45i5+{B6;914EUB6WeQI|?-ek;!h3ZMDQy#fQ za6{N#xs6(Us2z#=6dGd1(c#SL=n|;gMv5a-hV-=~)ZWYYNbL!lOYqr0MeDQmNz;Bt zEslGR;h-=>DA?B8SdS|1)WD#L#7u>LqP$_sa+>+ZSE-aG;Yq5bPB(`3BBccSnzMs` zaB%mCINurZz(vk$+%DU({fAa3!aHC!+AV&WZK}f#l*(Nb$DV+)@EwarpGmSCutNf* z4eO4J7urk1o4`R$&aG-;m|-+dut?!SXedoiPb|sd#)>{E<3z2TOUhu`PsTE5Mu4#M zpR63;_#z&amLz&`qp7J-U(ZBNmk+^gIP}au*4q(nYa_{|F4Xefy+ADFick>O@koW} z>!_^?Ny#%Fxc*M|GmlM+%UlGG!Hy{FvEM#fE}b<=od;$7c5MLCnPRh86R|>_Ap#H9 z56nA^cjd#%Qo#Z8%nESi7nU37aX+GNhXVLN*EKY;)QtY7H@5a?BGtro&a`^+{9@Wq zr_`3Rh~13!MvQnCj2@A*U&yL%Lj)IS11rs59Dz3A^)P%8+M|hL*FjT#Gctzm3U6D8 zo5XAftk7MwDgV5n{=J((TZaBK|K>~FuEWG}ZB2oG^$nc6>D2;65!W|zY{)MuMKE5s zz$m4{uojQ2A*9M?vO^n`QSZTn50X=JE6V5z0q-r7AA)An zTDQOh$U@rc0$0#0IK0@?roW#_!(%kj`bz*fZby|C0oL5iqkF$evrH8GxF@5=@9}A- zQv!cG0m@n^V z1ov_xkQi|eB|{8wH<%vO5`BWfA6qM>zz?{=imJeLpj`e*>N=zI#Ue37v1=6Z9f18C zaJ%^qU}X?VFAMkKxNt2xBA>n)Pah#on=kL`V01j#x*uG!ANU~ymo_(6EI|MaIgXSU zmrJ$uyxqLZJLDOn2TP*r6PW#~m%KZV8fWo#Dr5@<@rIPd@YV|blYTQ_$Ns_{o7dZw zajJn7pCpP>Jl;0&yi;k2{2hYucPU3MvS*R3KIP2EVw_~-)pdFi>oZCaR-_DB8D;wx zQFN@L#~9dibKiUkNKG!-I~v`&LBQ4ei{yMKfUsmI1~7HlchjUEwCEmTI;(4#dNWkm z;#J{Q9ovMr=LqcRiDMtexXr`PEuUHB6=}%OP_F;f zRLB0wF>$HlGdTOVTv-$zk*B{;1oadW!J7w}>JzClE$fLwEzXvMFSAaU=tog|40q*6 z@2;81p2`9rca{F)Ez(==dvxZl-wm>9Yc42q%a?wsGXnQlr_RmS)=m(~QpL)jIJk%| z7=@UH87AnBn%{+(l~wb|FCmv0P0$bZe)NB}!%Z4pIdk3`Z)s7?%F#H5>EyGi02{6o zl*_bZ2jS1{3=op3=e}J?*w}(O+9(N0d@XSqX~!5FWq@7t5)g-NtiPXaoFv4;BGI^% zCZ8-o6qh~bl zM($n)swcoa>u+X`$lBz%!dn@!b~=(7@uDtcmFq#j&aA%VKa6QUeZoG(u9=am%yKYR znvo!{9R9+i{LQ-iUZ!48GJE<$%g!QR8;`1#`f4?%tslH2GrE2rZCzRy7GeJ>Itou( zqeOoA9>0k;|K*8fJ8ymUTt-|+ON0C)&}XjJ7^R4Tw1mk>hPnpF_E9r(TkPZsg>M&@ zTekxTk5ReX_ImJo>7QT^AUr(M6ijw3nlx+08yijY?X>>X`)j}9KWWa%6m}Hj>bXO#((Yz1KT1BCB)R zCwV3hYaPai>Un+QXcd;{MRm*_oI6ikxiT_s6V)K?k{+ZY__}My`yjpCp=nc5n%>`^ z41p$T#K}KaOSH%_9eZ9mA}x?nF5M3nuzr3a#AW0N63@yOU~uRt$CFogB9%Xz&^`ey zSP`SYc=j^281}Ihar=$K^OF;5MQe$ztQ`^K47ol=hv(1!b|LKy5Dh=62+6DxhWl7x zDdSlybCtxNloZhy4gB&czlW*RFf;2Nn!>Cd(9r&qvnY-+9NxkNe(_1!s^{&hCo9cv zlSBRL3{G`qz+3d^S13^WS^wP1MF;G80PmZro`o^(!eNh)LXs%W(RQ!AL+H29oVQL~ zw$iMzUvk=*qCoJa@F3nKs@E&Uw1Zz(jkK!s+;|dNma;}cC-lo7e=2upg)G0p%ashsss^7xb3I1U{4Qe^^=Jh>V|}l zNoR-0{C>UgioU$Khl6TsXzZK6A9g#ql5cNo=oy8Zsx>OJTHs*O&P}IL)PFe#v!==h z>l9y8fZ3d+SB&a+^nHuAV3Lvt6FtxF3yieOV~ zj^fvY%PJYtcW&pu;Gc9DaO+Spm1VwZF;HlSkU*m~+>BwU5I3_pRwV-(2aCkzbEDh^ z{nf1&U7xcOnnrb|Cr^oiAW0Gc5;=AmNhn6v*pjD^7H{xL1zKQP+bk1{panq~=f#J$GhMzCH70qRs5+5Tc07LEUXZWG}^c2v|3rmEN zLRq^%)sKEhFI&4HLwDv(VR};TC^Y!#XO`B~=buC(-ax{C%ytAj1+LdAeZAtbnJYih zM$5i0ilB{gHc_xbaWpwJotf6u5YXyHn?Ouq0Ia&82Xo~KkuCDbc1h<70fBplFI#Z_ z(Q-DI(dGAS=y78vjAjr{1Vn3E(!Hyc=q-PTgfnX`*mCnp1hq;a;Z6@o8OOn3-vCus zm?&h$IVJ;K2bbZa>B~j9`sX$CkJ*ew(BT#;uJJ5)9e-7YTKjc8{+KKjzH<)sabj=D zW<$_2CbDl%w%#pIH}>!fO6oENu(BmDP9-vwzTHdUQwCkq>YI8IUP*YeS7YPzjsdcG zz(f@>@%TZ*)P7Bf@-*Ef{8P&M0*RB(Skp9~bxBUHDenrVXr0qak0@J)Mm`M(%1K<9 z>4e*rRlJOwIJ6{~*nx33E}E%Eeew(=g|J1Te~HDd9Q;RO49kjle3LNa@j`*oBFV}q zdL_x|?-^sJ3D33*Mn*E%Y~+bl+wA>1>{sIq!W)?`gG02&erP)x z^=?LUTIpB11_uiI)UvkkXd~}{t0cuo{};zz0G`@>ADiu;BW>stQ3<9q2lTPI?LfkO zS#|0NC3=3-E75jsF}N79SI+jc+1?UkEDToOYYnx=P{HvQ@rOmf3%GMM-%kQ)LUA9E!hvw-*Fu&%JmP|ofI4y^z_2Pnq=}P6siL4nWqmU zHVDh=hpkcyYP3B`+_I^~jnwxfDeY1LuAZW`($vywQ*qj$lk~R;C&CcdDwMc~byVE8I^0v#1e)3e+bWXvo}|hQ7UCMgSk`80*;zcJ zgtRl|h%S<+b!^NVkzrakEPi!bM$BOT#*Mon31grJa(+sj_IW?P| zHlFUXtnU8l{!@Xlh3i7lb)GAHHVq^(v9gOK-dBq+SUHX?qHDXcgvcyP_0zQSrBl>V zbU`+3(T0G!BFVFd;7kiT?H<;Mi~LucsmH*Q(%%+l#51Oq|KwEJai8|&W|)t!A+{&~ zsCTpn4`M#HO!0BQO?e0;dhf=22ur@gBmZp^JIv}CzoJ~f7Q`;-%HNk4N{MamiWhFb zgPGmTN~?y^kYBoBTLxf{QR8Yy7sGmPkjnpTGy-h(JO?zAAX@UXxJ;Q&_8Y%mksE`G z7U({gc=FRN?L;~CW&t?e#{aC7edl;>+LN0LPkUJ9xMipisjkit6K$1+nQ6Uzws`n4 zWu+B-0=l2;3cl-Dhlb{hE{qTkQe_s;9HSp!Vlfx!IO7DC7YMQ&`;h5qjW0GFBD@fS z^o597=1XocZX6_@cIJYuBFOx$lphGzNq^YL6UPNyhS5Z{x*b5x9vKD0k}n~Esd8vY zps$&sde=>mBPHZj16i>A3bIH*WgDYN(C5~T1ec*!I=T}wsC5exJ(r1{`A||A7 z#cljMluWuOA`y1au4|}Ybh?y_uT@!q*;XOZt?t}ha%-w{kltt*PmkYOODlQsD@`&c z52 zf5|FCQgXJWP29az+-C^XzpKkqd->id_j#F*TGG}?c2DNteP0l(&Xi0R>U~MI`xE&m zf`2snr|UNGCj!_18WB%9c0bSB9}wZlKQB1@XrMY_8Vt&xIf!@;OuOqbmkLEX)|5qL z=rczzddNC@YD;&(--`vfO48z`doDmUq5}@Fs3Y||Cz*3E{7y)|k*wppEa~RNMpnjN zB~Ri4YI>Z0>o50!PZ!Wvs<_+eqIjc!snC%kH;YM4_9Jd2!59x8i`??}ip`L>@QzOt zv43Ob^XgKmleg(;`qnGu#6D5;^TUI>&cZ1}-X$$9&ulGhZ=8`u~ z(o{*=Ucl(ir0Uf1Z?N6YWXzvtJ72@u@|x2>f@!0$t*jvxWX)+|qHzF|rgP-{r!)#7NtaZslG)-|1 zzOuV=T^avkxpN1ZBtrRLezvGRiFr*{K0RgBwCQfmvYaeT_|a{?pIKr}q6;#(taM*D z1;>)I){}+TXIExzhGsjY2V) z5!tj;I#NcaJ$?58So-A~h6V>B27C=RbTDf>6tJlaGmE##LB9e|(>|S<% z2^QwDPq5^JD@~C`sRPsWV!C%t*Y|qcThGvz8ukFmDJS>uP!TuQFGDG3Y)>B@{J>vp z)fCZgf9@PIZq6bo1`81K0S*C2c;@Afn@8kwxZH?C860E~loV$JRK|mU2Ed%fIfz{h zWwnzA$|cI$iAtq|{_+u)25SjYnhI63?%lc@mx2`gu7c?~HAF1=_)|>V%fq0RwvCSD zu%q~A<5D&dpZ+mJ&aDf$ZdLz5r`=w6dwMyx>bjmH!)LdER$~HAp2{M2z6|Wx8T@c}9+MWlX}!x%p^#;JIQvH%$a}q*XBf8dC&1P19J&Ot zT*|Jq$VZ0jv literal 0 HcmV?d00001 diff --git a/tests/wpt/mozilla/tests/css/image_percentage_height.html b/tests/wpt/mozilla/tests/css/image_percentage_height.html new file mode 100644 index 00000000000..cf37e873b44 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/image_percentage_height.html @@ -0,0 +1,23 @@ + + + + + + + + + + +
+Car +
+ + diff --git a/tests/wpt/mozilla/tests/css/image_percentage_height_ref.html b/tests/wpt/mozilla/tests/css/image_percentage_height_ref.html new file mode 100644 index 00000000000..f3d201f6951 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/image_percentage_height_ref.html @@ -0,0 +1,14 @@ + + + + + + + +Car + +