diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-07-20 09:09:36 +0200 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-07-20 09:09:36 +0200 |
commit | b12973bc9aa26f548549306eaec4146bf60d65d5 (patch) | |
tree | fa102cb1bb60f52dd35d28d270e4aa0cad24f936 /layout | |
parent | 24b11942e9e97cd48dda83646d4f7ec702b23eba (diff) | |
download | uxp-b12973bc9aa26f548549306eaec4146bf60d65d5.tar.gz |
Bug 958714 Remove special case for flex & grid items' percent block-axis margin/padding resolution, to align with other browsers
Diffstat (limited to 'layout')
8 files changed, 30 insertions, 51 deletions
diff --git a/layout/generic/ReflowInput.cpp b/layout/generic/ReflowInput.cpp index a8756cea2d..72624d55ca 100644 --- a/layout/generic/ReflowInput.cpp +++ b/layout/generic/ReflowInput.cpp @@ -2142,14 +2142,11 @@ OffsetPercentBasis(const nsIFrame* aFrame, WritingMode aWM, const LogicalSize& aContainingBlockSize) { + // XXX The next patch in this series will get rid of this function and have + // the upstream/downstream code just work with the one nscoord value that + // we'll be dealing with now (which is aContainingBlockSize.ISize(aWM)). LogicalSize offsetPercentBasis = aContainingBlockSize; - if (MOZ_LIKELY(!aFrame->GetParent() || - !aFrame->GetParent()->IsFlexOrGridContainer())) { - offsetPercentBasis.BSize(aWM) = offsetPercentBasis.ISize(aWM); - } else if (offsetPercentBasis.BSize(aWM) == NS_AUTOHEIGHT) { - offsetPercentBasis.BSize(aWM) = 0; - } - + offsetPercentBasis.BSize(aWM) = offsetPercentBasis.ISize(aWM); return offsetPercentBasis; } diff --git a/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html b/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html index 0068e32206..8858b4ea8f 100644 --- a/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html +++ b/layout/reftests/css-grid/grid-auto-min-sizing-definite-001-ref.html @@ -67,18 +67,18 @@ b40 { width: 42px; /* This margin-left is 20% of 98px-wide grid area */ margin-left: 19.6px; - /* This padding-bottom is 10% of 47.5px tall grid area */ + /* This padding-bottom is 10% of 98px wide grid area */ /* This padding-left is 30% of 98px wide grid area */ - padding: 1px 3px 4.75px 29.4px; + padding: 1px 3px 9.8px 29.4px; } .v.r { height: 42px; width: 42px; /* This margin-left is 20% of 54px-wide grid area */ margin-left: 10.8px; - /* This padding-bottom is 10% of 102.5px tall grid area */ + /* This padding-bottom is 10% of 54px wide grid area */ /* This padding-left is 30% of 54px wide grid area */ - padding: 1px 3px 10.25px 16.2px; + padding: 1px 3px 5.4px 16.2px; } .r { position:relative; } diff --git a/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html b/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html index 3a7f2d6bb0..4996f8b9c1 100644 --- a/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html +++ b/layout/reftests/css-grid/grid-item-sizing-percent-001-ref.html @@ -30,8 +30,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0; } .p { padding:2px 3px; } .m { margin:2px 3px; } -.c1.p,.c2.p { padding:5px 9px; } -.c1.m,.c2.m { margin:5px 9px; } +.c1.p,.c2.p { padding:6px 9px; } +.c1.m,.c2.m { margin:6px 9px; } .b { border:solid black; } #t1 { width:50px; height: 20px; } diff --git a/layout/reftests/css-grid/grid-item-sizing-percent-001.html b/layout/reftests/css-grid/grid-item-sizing-percent-001.html index cc5948968c..960247592f 100644 --- a/layout/reftests/css-grid/grid-item-sizing-percent-001.html +++ b/layout/reftests/css-grid/grid-item-sizing-percent-001.html @@ -48,8 +48,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0; box-sizing: border-box; } -.p { padding:10% 6%; } -.m { margin:10% 6%; } +.p { padding:4% 6%; } +.m { margin:4% 6%; } .b { border:solid black; } </style> diff --git a/layout/reftests/css-grid/grid-item-sizing-px-001.html b/layout/reftests/css-grid/grid-item-sizing-px-001.html index a004365fc2..7e58d831d3 100644 --- a/layout/reftests/css-grid/grid-item-sizing-px-001.html +++ b/layout/reftests/css-grid/grid-item-sizing-px-001.html @@ -46,8 +46,8 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0; .p { padding:2px 3px; } .m { margin:2px 3px; } -.c1.p,.c2.p { padding:5px 9px; } -.c1.m,.c2.m { margin:5px 9px; } +.c1.p,.c2.p { padding:6px 9px; } +.c1.m,.c2.m { margin:6px 9px; } .b { border:solid black; } </style> diff --git a/layout/reftests/css-grid/reftest.list b/layout/reftests/css-grid/reftest.list index 093e2faee2..c2ee57c1a1 100644 --- a/layout/reftests/css-grid/reftest.list +++ b/layout/reftests/css-grid/reftest.list @@ -45,7 +45,7 @@ skip-if(Android) fuzzy-if(winWidget,1,32) == grid-placement-auto-implicit-001.ht == vrl-grid-placement-auto-row-sparse-001.html vrl-grid-placement-auto-row-sparse-001-ref.html == grid-relpos-items-001.html grid-relpos-items-001-ref.html == grid-item-sizing-percent-001.html grid-item-sizing-percent-001-ref.html -== grid-item-sizing-percent-002.html grid-item-sizing-percent-002-ref.html +fails == grid-item-sizing-percent-002.html grid-item-sizing-percent-002-ref.html # bug 1434397 == grid-item-sizing-percent-003.html grid-item-sizing-percent-003-ref.html == grid-item-sizing-percent-004.html grid-item-sizing-percent-004-ref.html == grid-item-sizing-px-001.html grid-item-sizing-percent-001-ref.html diff --git a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml index 00db4823e3..beefa0abfe 100644 --- a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml +++ b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004-ref.xhtml @@ -4,8 +4,7 @@ http://creativecommons.org/publicdomain/zero/1.0/ --> <!-- Reference case - identical to the testcase, but with with the flex items' - vertical margin and padding values set to 0 by default, and then set to - specific pixel values for the items that have a 50px percent-basis. + margin and padding values set to explicit pixel values. --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> @@ -21,27 +20,10 @@ } div.height50 { height: 50px; } - .marginA { margin: 0 8% 0 4%; } - .marginB { margin: 0 10% 0 14%; } - .paddingA { padding: 0 6% 0 2%; } - .paddingB { padding: 0 8% 0 12%; } - - div.height50 > .marginA { - margin-top: 5px; - margin-bottom: 3px; - } - div.height50 > .marginB { - margin-top: 4px; - margin-bottom: 6px; - } - div.height50 > .paddingA { - padding-top: 4px; - padding-bottom: 2px; - } - div.height50 > .paddingB { - padding-top: 3px; - padding-bottom: 5px; - } + .marginA { margin: 20px 16px 12px 8px; } + .marginB { margin: 16px 20px 24px 28px; } + .paddingA { padding: 16px 12px 8px 4px; } + .paddingB { padding: 12px 16px 20px 24px; } div.child1 { flex: none; diff --git a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml index 545e54f71d..b513253fd1 100644 --- a/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml +++ b/layout/reftests/w3c-css/submitted/flexbox/flexbox-mbp-horiz-004.xhtml @@ -3,19 +3,17 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> -<!-- Testcase with percent-valued padding and/or margin on flex items. The spec - says that percentage values on padding/margin-top and -bottom should be - resolved against the flex container's height (not its width, as would - be the case in a block). +<!-- Testcase with percent-valued padding and/or margin on flex items. + The spec allows these to be resolved against the flex container's + inline size (regardless of which axis the percent padding/margin is in). --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CSS Test: Testing percent-valued padding and margin on flex items</title> <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com"/> - <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#layout-algorithm"/> + <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#item-margins"/> <link rel="match" href="flexbox-mbp-horiz-004-ref.xhtml"/> <style> - div { border: 0; } div.flexbox { width: 200px; display: flex; @@ -52,8 +50,9 @@ </style> </head> <body> - <!-- Flex container is auto-height - vertical margin and padding should - resolve to 0, since they don't have anything to resolve % against. --> + <!-- Flex container is auto-height - this shouldn't impact percent + margin/padding resolution, since they resolve against container's + inline-size, i.e. its width in this case. --> <div class="flexbox" ><div class="child1 paddingA"><div class="filler"/></div ><div class="child2 paddingB"><div class="filler"/></div @@ -61,8 +60,9 @@ ><div class="child2 marginB"></div ></div> - <!-- Flex container has height: 50px - vertical margin and padding should - resolve % values against that. --> + <!-- Flex container has height: 50px - again, this shouldn't impact percent + margin/padding resolution, since they resolve against container's + inline-size, i.e. its width in this case. --> <div class="flexbox height50" ><div class="child1 paddingA"><div class="filler"/></div ><div class="child2 paddingB"><div class="filler"/></div |