Changeset 189911 in webkit
- Timestamp:
- Sep 17, 2015 5:13:30 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r189910 r189911 1 2015-09-15 Sergio Villar Senin <svillar@igalia.com> 2 3 [CSS Grid Layout] Using automatic (instead of min-content) minimums for 'auto' tracks 4 https://bugs.webkit.org/show_bug.cgi?id=142329 5 6 Reviewed by Darin Adler. 7 8 Based on Blink's r198697 by <svillar@igalia.com> and r200478 by <jfernandez@igalia.com> 9 10 New tests to verify that auto is a valid keyword inside 11 minmax. Updated the expectations of existing tests to 12 reflect the new status of auto. 13 14 * fast/css-grid-layout/grid-auto-columns-rows-get-set-expected.txt: 15 * fast/css-grid-layout/grid-auto-columns-rows-get-set.html: 16 * fast/css-grid-layout/grid-automatic-minimum-for-auto-columns-expected.txt: Added. 17 * fast/css-grid-layout/grid-automatic-minimum-for-auto-columns.html: Added. 18 * fast/css-grid-layout/grid-automatic-minimum-for-auto-rows-expected.txt: Added. 19 * fast/css-grid-layout/grid-automatic-minimum-for-auto-rows.html: Added. 20 * fast/css-grid-layout/grid-columns-rows-get-set-expected.txt: 21 * fast/css-grid-layout/grid-columns-rows-get-set-multiple-expected.txt: 22 * fast/css-grid-layout/grid-columns-rows-get-set-multiple.html: 23 * fast/css-grid-layout/grid-columns-rows-get-set.html: 24 * fast/css-grid-layout/non-grid-columns-rows-get-set-expected.txt: 25 * fast/css-grid-layout/non-grid-columns-rows-get-set-multiple-expected.txt: 26 * fast/css-grid-layout/non-grid-columns-rows-get-set-multiple.html: 27 * fast/css-grid-layout/non-grid-columns-rows-get-set.html: 28 * fast/css-grid-layout/resources/grid-columns-rows-get-set-multiple.js: 29 * fast/css-grid-layout/resources/grid-columns-rows-get-set.js: 30 * fast/css-grid-layout/resources/non-grid-columns-rows-get-set-multiple.js: 31 * fast/css-grid-layout/resources/non-grid-columns-rows-get-set.js: 32 1 33 2015-09-17 Javier Fernandez <jfernandez@igalia.com> 2 34 -
trunk/LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set-expected.txt
r173156 r189911 11 11 PASS window.getComputedStyle(gridAutoMinMaxContent, '').getPropertyValue('-webkit-grid-auto-rows') is "-webkit-min-content" 12 12 PASS window.getComputedStyle(gridAutoMinMaxContent, '').getPropertyValue('-webkit-grid-auto-columns') is "-webkit-max-content" 13 PASS window.getComputedStyle(gridAutoAutoInMinMax, '').getPropertyValue('-webkit-grid-auto-rows') is "minmax(auto, 48px)" 14 PASS window.getComputedStyle(gridAutoAutoInMinMax, '').getPropertyValue('-webkit-grid-auto-columns') is "minmax(80px, auto)" 13 15 14 16 Test that getting grid-template-columns and grid-template-rows set through CSS lists every track listed whether implicitly or explicitly created … … 51 53 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-auto-columns') is 'auto' 52 54 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-auto-rows') is 'auto' 53 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-auto-columns') is 'auto'54 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-auto-rows') is 'auto'55 55 56 56 Test setting grid-auto-columns and grid-auto-rows to 'inherit' through JS -
trunk/LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set.html
r173156 r189911 27 27 } 28 28 29 .gridAutoAutoInMinMax { 30 -webkit-grid-auto-rows: minmax(auto, 8vh); 31 -webkit-grid-auto-columns: minmax(10vw, auto); 32 } 33 29 34 </style> 30 35 <script src="../../resources/js-test-pre.js"></script> … … 35 40 <div class="grid gridAutoMinMax" id="gridAutoMinMax"></div> 36 41 <div class="grid gridAutoMinMaxContent" id="gridAutoMinMaxContent"></div> 42 <div class="grid gridAutoAutoInMinMax" id="gridAutoAutoInMinMax"></div> 37 43 <div class="grid gridAutoFixedFixed" id="gridAutoFixedFixedWithChildren"> 38 44 <div class="sizedToGridArea firstRowFirstColumn"></div> … … 49 55 testGridAutoDefinitionsValues(document.getElementById("gridAutoMinMax"), "minmax(10%, 15px)", "minmax(30%, 100px)"); 50 56 testGridAutoDefinitionsValues(document.getElementById("gridAutoMinMaxContent"), "-webkit-min-content", "-webkit-max-content"); 57 testGridAutoDefinitionsValues(document.getElementById("gridAutoAutoInMinMax"), "minmax(auto, 48px)", "minmax(80px, auto)"); 51 58 52 59 debug(""); … … 123 130 element = document.createElement("div"); 124 131 document.body.appendChild(element); 125 // Auto is not allowed inside minmax.126 element.style.webkitGridAutoColumns = "minmax(auto, 8vh)";127 element.style.webkitGridAutoRows = "minmax(10vw, auto)";128 shouldBe("getComputedStyle(element, '').getPropertyValue('-webkit-grid-auto-columns')", "'auto'");129 shouldBe("getComputedStyle(element, '').getPropertyValue('-webkit-grid-auto-rows')", "'auto'");130 131 element = document.createElement("div");132 document.body.appendChild(element);133 132 // None is not allowed for grid-auto-{rows|columns}. 134 133 element.style.webkitGridAutoColumns = "none"; -
trunk/LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set-expected.txt
r185147 r189911 43 43 PASS window.getComputedStyle(gridWithCalcComplexInsideMinMaxElement, '').getPropertyValue('-webkit-grid-template-columns') is "415px" 44 44 PASS window.getComputedStyle(gridWithCalcComplexInsideMinMaxElement, '').getPropertyValue('-webkit-grid-template-rows') is "300px" 45 PASS window.getComputedStyle(gridWithAutoInsideMinMaxElement, '').getPropertyValue('-webkit-grid-template-columns') is "20px" 46 PASS window.getComputedStyle(gridWithAutoInsideMinMaxElement, '').getPropertyValue('-webkit-grid-template-rows') is "11px" 45 47 46 48 Test getting wrong values for -webkit-grid-template-columns and -webkit-grid-template-rows through CSS (they should resolve to the default: 'none') … … 101 103 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "0px" 102 104 PASS element.style.webkitGridTemplateRows is "minmax(-webkit-max-content, -webkit-min-content)" 105 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "0px" 106 PASS element.style.webkitGridTemplateColumns is "minmax(auto, -webkit-max-content)" 107 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "80px" 108 PASS element.style.webkitGridTemplateRows is "minmax(10vw, auto)" 103 109 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "800px" 104 110 PASS element.style.webkitGridTemplateColumns is "3600fr" … … 157 163 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none" 158 164 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none" 159 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none"160 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none"161 165 162 166 Test setting grid-template-columns and grid-template-rows back to 'none' through JS -
trunk/LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set-multiple-expected.txt
r185147 r189911 41 41 PASS window.getComputedStyle(gridWithCalcInsideMinMax, '').getPropertyValue('-webkit-grid-template-columns') is "400px 120px" 42 42 PASS window.getComputedStyle(gridWithCalcInsideMinMax, '').getPropertyValue('-webkit-grid-template-rows') is "150px 175px" 43 PASS window.getComputedStyle(gridWithAutoInsideMinMax, '').getPropertyValue('-webkit-grid-template-columns') is "0px 30px" 44 PASS window.getComputedStyle(gridWithAutoInsideMinMax, '').getPropertyValue('-webkit-grid-template-rows') is "132px 60px" 43 45 44 46 Test the initial value … … 79 81 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "100px 0px" 80 82 PASS element.style.webkitGridTemplateRows is "minmax(calc(75% - 350px), -webkit-max-content) auto" 83 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "0px 16px" 84 PASS element.style.webkitGridTemplateColumns is "auto minmax(16px, auto)" 85 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "90px 80px" 86 PASS element.style.webkitGridTemplateRows is "minmax(auto, 15%) 10vw" 81 87 82 88 Test getting wrong values set from CSS … … 87 93 88 94 Test setting and getting wrong values from JS 89 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none"90 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none"91 95 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none" 92 96 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none" -
trunk/LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set-multiple.html
r168416 r189911 100 100 font: 10px Ahem; 101 101 } 102 .gridWithAutoInsideMinMax { 103 -webkit-grid-template-columns: minmax(auto, -webkit-min-content) 30px; 104 -webkit-grid-template-rows: calc(100px + 2em) minmax(10%, auto); 105 } 102 106 </style> 103 107 <script src="../../resources/js-test-pre.js"></script> … … 131 135 <div class="grid gridWithCalcAndMinMax" id="gridWithCalcAndMinMax"></div> 132 136 <div class="grid gridWithCalcInsideMinMax" id="gridWithCalcInsideMinMax"></div> 137 <div class="grid gridWithAutoInsideMinMax" id="gridWithAutoInsideMinMax"></div> 133 138 <script src="resources/grid-definitions-parsing-utils.js"></script> 134 139 <script src="resources/grid-columns-rows-get-set-multiple.js"></script> -
trunk/LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set.html
r168416 r189911 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">1 <!DOCTYPE html> 2 2 <html> 3 3 <head> … … 86 86 -webkit-grid-template-rows: minmax(calc(20px + 10%), 50%); 87 87 } 88 .gridWithAutoInsideMinMax { 89 -webkit-grid-template-columns: minmax(auto, 20px); 90 -webkit-grid-template-rows: minmax(max-content, auto); 91 } 88 92 </style> 89 93 <script src="../../resources/js-test-pre.js"></script> … … 121 125 <div class="grid gridWithCalcInsideMinMax" id="gridWithCalcInsideMinMaxElement"></div> 122 126 <div class="grid gridWithCalcComplexInsideMinMax" id="gridWithCalcComplexInsideMinMaxElement"></div> 127 <div class="grid gridWithAutoInsideMinMax" id="gridWithAutoInsideMinMaxElement"> 128 <div class="gridItem"></div> 129 </div> 123 130 <script src="resources/grid-definitions-parsing-utils.js"></script> 124 131 <script src="resources/grid-columns-rows-get-set.js"></script> -
trunk/LayoutTests/fast/css-grid-layout/non-grid-columns-rows-get-set-expected.txt
r185147 r189911 33 33 PASS window.getComputedStyle(gridWithCalcComplexInsideMinMax, '').getPropertyValue('-webkit-grid-template-columns') is "minmax(10%, calc(50% + 15px))" 34 34 PASS window.getComputedStyle(gridWithCalcComplexInsideMinMax, '').getPropertyValue('-webkit-grid-template-rows') is "minmax(calc(20px + 10%), 50%)" 35 PASS window.getComputedStyle(gridWithAutoInsideMinMax, '').getPropertyValue('-webkit-grid-template-columns') is "minmax(auto, 20px)" 36 PASS window.getComputedStyle(gridWithAutoInsideMinMax, '').getPropertyValue('-webkit-grid-template-rows') is "minmax(-webkit-min-content, auto)" 35 37 36 38 Test getting wrong values for grid-template-columns and grid-template-rows through CSS (they should resolve to the default: 'none') … … 105 107 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "4fr" 106 108 PASS element.style.webkitGridTemplateRows is "4fr" 109 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "minmax(auto, 48px)" 110 PASS element.style.webkitGridTemplateColumns is "minmax(auto, 8vh)" 111 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "minmax(80px, auto)" 112 PASS element.style.webkitGridTemplateRows is "minmax(10vw, auto)" 107 113 108 114 Test setting grid-template-columns and grid-template-rows to bad values through JS 109 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none"110 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none"111 115 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none" 112 116 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none" -
trunk/LayoutTests/fast/css-grid-layout/non-grid-columns-rows-get-set-multiple-expected.txt
r185147 r189911 37 37 PASS window.getComputedStyle(gridWithCalcInsideMinMax, '').getPropertyValue('-webkit-grid-template-columns') is "minmax(calc(23px + 10%), 400px) 120px" 38 38 PASS window.getComputedStyle(gridWithCalcInsideMinMax, '').getPropertyValue('-webkit-grid-template-rows') is "150px minmax(5%, calc(50% - 125px))" 39 PASS window.getComputedStyle(gridWithAutoInsideMinMax, '').getPropertyValue('-webkit-grid-template-columns') is "minmax(auto, 20px) 10%" 40 PASS window.getComputedStyle(gridWithAutoInsideMinMax, '').getPropertyValue('-webkit-grid-template-rows') is "-webkit-max-content minmax(-webkit-min-content, auto)" 39 41 40 42 Test the initial value … … 71 73 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "5% 510px" 72 74 PASS element.style.webkitGridTemplateRows is "5% 85vh" 75 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "auto minmax(16px, auto)" 76 PASS element.style.webkitGridTemplateColumns is "auto minmax(16px, auto)" 77 PASS getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "minmax(auto, 15%) 80px" 78 PASS element.style.webkitGridTemplateRows is "minmax(auto, 15%) 10vw" 73 79 74 80 Test getting wrong values set from CSS … … 79 85 80 86 Test setting and getting wrong values from JS 81 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none"82 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none"83 87 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-columns') is "none" 84 88 PASS window.getComputedStyle(element, '').getPropertyValue('-webkit-grid-template-rows') is "none" -
trunk/LayoutTests/fast/css-grid-layout/non-grid-columns-rows-get-set-multiple.html
r168416 r189911 84 84 font: 10px Ahem; 85 85 } 86 .gridWithAutoInsideMinMax { 87 -webkit-grid-template-columns: minmax(auto, 20px) 10%; 88 -webkit-grid-template-rows: -webkit-max-content minmax(-webkit-min-content, auto); 89 } 86 90 </style> 87 91 <script src="../../resources/js-test-pre.js"></script> … … 106 110 <div class="gridWithCalcAndMinMax" id="gridWithCalcAndMinMax"></div> 107 111 <div class="gridWithCalcInsideMinMax" id="gridWithCalcInsideMinMax"></div> 112 <div class="gridWithAutoInsideMinMax" id="gridWithAutoInsideMinMax"></div> 108 113 <script src="resources/grid-definitions-parsing-utils.js"></script> 109 114 <script src="resources/non-grid-columns-rows-get-set-multiple.js"></script> -
trunk/LayoutTests/fast/css-grid-layout/non-grid-columns-rows-get-set.html
r168416 r189911 69 69 -webkit-grid-template-rows: minmax(calc(20px + 10%), 50%); 70 70 } 71 .gridWithAutoInsideMinMax { 72 -webkit-grid-template-columns: minmax(auto, 20px); 73 -webkit-grid-template-rows: minmax(-webkit-min-content, auto); 74 } 71 75 </style> 72 76 <script src="../../resources/js-test-pre.js"></script> … … 89 93 <div class="gridWithCalcInsideMinMax" id="gridWithCalcInsideMinMax"></div> 90 94 <div class="gridWithCalcComplexInsideMinMax" id="gridWithCalcComplexInsideMinMax"></div> 95 <div class="gridWithAutoInsideMinMax" id="gridWithAutoInsideMinMax"></div> 91 96 <script src="resources/grid-definitions-parsing-utils.js"></script> 92 97 <script src="resources/non-grid-columns-rows-get-set.js"></script> -
trunk/LayoutTests/fast/css-grid-layout/resources/grid-columns-rows-get-set-multiple.js
r185147 r189911 20 20 testGridTemplatesValues(document.getElementById("gridWithCalcAndMinMax"), "190px minmax(-webkit-min-content, 80px)", "minmax(25%, -webkit-max-content) 53px", "190px 80px", "150px 53px"); 21 21 testGridTemplatesValues(document.getElementById("gridWithCalcInsideMinMax"), "minmax(103px, 400px) 120px", "150px minmax(5%, 175px)", "400px 120px", "150px 175px"); 22 testGridTemplatesValues(document.getElementById("gridWithAutoInsideMinMax"), "0px 30px", "132px 60px"); 22 23 23 24 debug(""); … … 38 39 testGridTemplatesSetJSValues("calc(25px) calc(2em)", "auto calc(10%)", "25px 20px", "0px 60px", "calc(25px) calc(2em)", "auto calc(10%)"); 39 40 testGridTemplatesSetJSValues("calc(25px + 40%) minmax(-webkit-min-content, calc(10% + 12px))", "minmax(calc(75% - 350px), -webkit-max-content) auto", "345px 92px", "100px 0px", "calc(25px + 40%) minmax(-webkit-min-content, calc(10% + 12px))", "minmax(calc(75% - 350px), -webkit-max-content) auto"); 41 testGridTemplatesSetJSValues("auto minmax(16px, auto)", "minmax(auto, 15%) 10vw", "0px 16px", "90px 80px"); 40 42 41 43 debug(""); … … 52 54 testGridTemplatesSetBadJSValues("auto none 16em", "auto 18em none"); 53 55 testGridTemplatesSetBadJSValues("-webkit-fit-content -webkit-fit-content", "-webkit-fit-available -webkit-fit-available"); 54 testGridTemplatesSetBadJSValues("auto minmax(16px, auto)", "minmax(auto, 15%) 10vw");55 56 56 57 // Negative values are not allowed. -
trunk/LayoutTests/fast/css-grid-layout/resources/grid-columns-rows-get-set.js
r185745 r189911 21 21 testGridTemplatesValues(document.getElementById("gridWithCalcInsideMinMaxElement"), "minmax(10%, 15px)", "minmax(20px, 50%)", "80px", "300px"); 22 22 testGridTemplatesValues(document.getElementById("gridWithCalcComplexInsideMinMaxElement"), "minmax(10%, 415px)", "minmax(80px, 50%)", "415px", "300px"); 23 testGridTemplatesValues(document.getElementById("gridWithAutoInsideMinMaxElement"), "20px", "11px"); 23 24 24 25 debug(""); … … 52 53 testGridTemplatesSetJSValues("minmax(22em, -webkit-max-content)", "minmax(-webkit-max-content, 5em)", "220px", "50px"); 53 54 testGridTemplatesSetJSValues("minmax(-webkit-min-content, -webkit-max-content)", "minmax(-webkit-max-content, -webkit-min-content)", "0px", "0px"); 55 testGridTemplatesSetJSValues("minmax(auto, -webkit-max-content)", "minmax(10vw, auto)", "0px", "80px"); 54 56 // Unit comparison should be case-insensitive. 55 57 testGridTemplatesSetJSValues("3600Fr", "154fR", "800px", "600px", "3600fr", "154fr"); … … 77 79 testGridTemplatesSetBadJSValues("minmax()", "minmax(30px 30% 30em)"); 78 80 79 // Auto is not allowed inside minmax.80 testGridTemplatesSetBadJSValues("minmax(auto, 8vh)", "minmax(10vw, auto)");81 81 testGridTemplatesSetBadJSValues("-2fr", "3ffr"); 82 82 testGridTemplatesSetBadJSValues("-2.05fr", "+-3fr"); -
trunk/LayoutTests/fast/css-grid-layout/resources/non-grid-columns-rows-get-set-multiple.js
r185147 r189911 18 18 testGridTemplatesValues(document.getElementById("gridWithCalcAndMinMax"), "calc(30px + 20%) minmax(-webkit-min-content, 80px)", "minmax(25%, -webkit-max-content) calc(10% - 7px)"); 19 19 testGridTemplatesValues(document.getElementById("gridWithCalcInsideMinMax"), "minmax(calc(23px + 10%), 400px) 120px", "150px minmax(5%, calc(50% - 125px))"); 20 testGridTemplatesValues(document.getElementById("gridWithAutoInsideMinMax"), "minmax(auto, 20px) 10%", "-webkit-max-content minmax(-webkit-min-content, auto)"); 20 21 21 22 debug(""); … … 35 36 testNonGridTemplatesSetJSValues("16em 2fr", "14fr auto", "160px 2fr"); 36 37 testNonGridTemplatesSetJSValues("50% 12vw", "5% 85vh", "50% 96px", "5% 510px"); 38 testNonGridTemplatesSetJSValues("auto minmax(16px, auto)", "minmax(auto, 15%) 10vw", "auto minmax(16px, auto)", "minmax(auto, 15%) 80px"); 37 39 38 40 debug(""); … … 54 56 testGridTemplatesSetBadJSValues("auto none 16em", "auto 18em none"); 55 57 testGridTemplatesSetBadJSValues("-webkit-fit-content -webkit-fit-content", "-webkit-fit-available -webkit-fit-available"); 56 testGridTemplatesSetBadJSValues("auto minmax(16px, auto)", "minmax(auto, 15%) 10vw");57 58 // Negative values are not allowed. 58 59 testGridTemplatesSetBadJSValues("-10px minmax(16px, 32px)", "minmax(10%, 15%) -10vw"); -
trunk/LayoutTests/fast/css-grid-layout/resources/non-grid-columns-rows-get-set.js
r185745 r189911 16 16 testGridTemplatesValues(document.getElementById("gridWithCalcInsideMinMax"), "minmax(10%, 15px)", "minmax(20px, 50%)"); 17 17 testGridTemplatesValues(document.getElementById("gridWithCalcComplexInsideMinMax"), "minmax(10%, calc(50% + 15px))", "minmax(calc(20px + 10%), 50%)"); 18 testGridTemplatesValues(document.getElementById("gridWithAutoInsideMinMax"), "minmax(auto, 20px)", "minmax(-webkit-min-content, auto)"); 18 19 19 20 debug(""); … … 55 56 // A leading '+' is allowed. 56 57 testNonGridTemplatesSetJSValues("+3fr", "+4fr", "3fr", "4fr", "3fr", "4fr"); 58 testNonGridTemplatesSetJSValues("minmax(auto, 8vh)", "minmax(10vw, auto)", "minmax(auto, 48px)", "minmax(80px, auto)"); 57 59 58 60 debug(""); … … 64 66 // No breadth value and no comma. 65 67 testGridTemplatesSetBadJSValues("minmax()", "minmax(30px 30% 30em)"); 66 // Auto is not allowed inside minmax.67 testGridTemplatesSetBadJSValues("minmax(auto, 8vh)", "minmax(10vw, auto)");68 68 testGridTemplatesSetBadJSValues("-2fr", "3ffr"); 69 69 testGridTemplatesSetBadJSValues("-2.05fr", "+-3fr"); -
trunk/Source/WebCore/ChangeLog
r189910 r189911 1 2015-09-15 Sergio Villar Senin <svillar@igalia.com> 2 3 [CSS Grid Layout] Using automatic (instead of min-content) minimums for 'auto' tracks 4 https://bugs.webkit.org/show_bug.cgi?id=142329 5 6 Reviewed by Darin Adler. 7 8 Based on Blink's r198697 by <svillar@igalia.com> and r200478 by <jfernandez@igalia.com> 9 10 More precisely (syntax-wise), this would allow 'auto' to be used within the 11 minmax() function (it's currently forbidden) and have the 'auto' keyword map 12 to minmax(auto, auto) instead of minmax(min-content, max-content). 13 - As a minimum, 'auto' would mean "use the specified minimum size, or if 14 that is auto, treat as 0 or min-content per Flexbox rules". 15 - As a maximum, 'auto' would mean "use the max-content size". 16 17 Regarding the implementation, a new phase is added to the track sizing 18 algorithm called ResolveIntrinsicMinimums (the former ResolveIntrinsicMinimums 19 is now called ResolveContentBasedMinimums which does not include 'auto' 20 resolution) which will be run before any other. This phase uses the minimum 21 size of grid items (as specified by min-width/height). 22 23 Tests: fast/css-grid-layout/grid-automatic-minimum-for-auto-columns.html 24 fast/css-grid-layout/grid-automatic-minimum-for-auto-rows.html 25 26 * css/CSSParser.cpp: 27 (WebCore::CSSParser::parseGridBreadth): 28 * rendering/RenderGrid.cpp: 29 (WebCore::RenderGrid::computeUsedBreadthOfMinLength): 30 (WebCore::RenderGrid::computeUsedBreadthOfMaxLength): 31 (WebCore::RenderGrid::minSizeForChild): 32 (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions): 33 (WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems): 34 (WebCore::RenderGrid::trackSizeForTrackSizeComputationPhase): 35 (WebCore::RenderGrid::shouldProcessTrackForTrackSizeComputationPhase): 36 (WebCore::RenderGrid::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase): 37 (WebCore::RenderGrid::markAsInfinitelyGrowableForTrackSizeComputationPhase): 38 (WebCore::RenderGrid::updateTrackSizeForTrackSizeComputationPhase): 39 (WebCore::RenderGrid::currentItemSizeForTrackSizeComputationPhase): 40 * rendering/RenderGrid.h: 41 * rendering/style/GridTrackSize.h: 42 (WebCore::GridTrackSize::minTrackBreadth): 43 (WebCore::GridTrackSize::maxTrackBreadth): 44 (WebCore::GridTrackSize::cacheMinMaxTrackBreadthTypes): 45 (WebCore::GridTrackSize::hasIntrinsicMinTrackBreadth): 46 (WebCore::GridTrackSize::hasAutoMinTrackBreadth): 47 (WebCore::GridTrackSize::hasAutoMaxTrackBreadth): 48 (WebCore::GridTrackSize::hasMaxContentOrAutoMaxTrackBreadth): 49 (WebCore::GridTrackSize::hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth): 50 (WebCore::GridTrackSize::hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth): Deleted. 51 1 52 2015-09-17 Javier Fernandez <jfernandez@igalia.com> 2 53 -
trunk/Source/WebCore/css/CSSParser.cpp
r189830 r189911 5744 5744 RefPtr<CSSPrimitiveValue> CSSParser::parseGridBreadth(CSSParserValue& value) 5745 5745 { 5746 if (value.id == CSSValueWebkitMinContent || value.id == CSSValueWebkitMaxContent )5746 if (value.id == CSSValueWebkitMinContent || value.id == CSSValueWebkitMaxContent || value.id == CSSValueAuto) 5747 5747 return CSSValuePool::singleton().createIdentifierValue(value.id); 5748 5748 -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r189910 r189911 470 470 471 471 const Length& trackLength = gridLength.length(); 472 ASSERT(!trackLength.isAuto());473 472 if (trackLength.isSpecified()) 474 473 return computeUsedBreadthOfSpecifiedLength(direction, trackLength); 475 474 476 ASSERT(trackLength.isMinContent() || trackLength.is MaxContent());475 ASSERT(trackLength.isMinContent() || trackLength.isAuto() || trackLength.isMaxContent()); 477 476 return 0; 478 477 } … … 484 483 485 484 const Length& trackLength = gridLength.length(); 486 ASSERT(!trackLength.isAuto());487 485 if (trackLength.isSpecified()) { 488 486 LayoutUnit computedBreadth = computeUsedBreadthOfSpecifiedLength(direction, trackLength); … … 491 489 } 492 490 493 ASSERT(trackLength.isMinContent() || trackLength.is MaxContent());491 ASSERT(trackLength.isMinContent() || trackLength.isAuto() || trackLength.isMaxContent()); 494 492 return infinity; 495 493 } … … 599 597 child.layoutIfNeeded(); 600 598 return child.logicalHeight() + child.marginLogicalHeight(); 599 } 600 601 LayoutUnit RenderGrid::minSizeForChild(RenderBox& child, GridTrackSizingDirection direction, Vector<GridTrack>& columnTracks) 602 { 603 bool hasOrthogonalWritingMode = child.isHorizontalWritingMode() != isHorizontalWritingMode(); 604 // FIXME: Properly support orthogonal writing mode. 605 if (hasOrthogonalWritingMode) 606 return { }; 607 608 const Length& childMinSize = direction == ForColumns ? child.style().logicalMinWidth() : child.style().logicalMinHeight(); 609 if (childMinSize.isAuto()) { 610 // FIXME: Implement intrinsic aspect ratio support (transferred size in specs). 611 return minContentForChild(child, direction, columnTracks); 612 } 613 614 if (direction == ForColumns) 615 return child.computeLogicalWidthInRegionUsing(MinSize, childMinSize, contentLogicalWidth(), this, nullptr); 616 617 return child.computeContentAndScrollbarLogicalHeightUsing(MinSize, childMinSize, child.logicalHeight()).valueOr(0); 601 618 } 602 619 … … 717 734 GridItemsSpanGroupRange spanGroupRange = { it, std::upper_bound(it, end, *it) }; 718 735 resolveContentBasedTrackSizingFunctionsForItems<ResolveIntrinsicMinimums>(direction, sizingData, spanGroupRange); 736 resolveContentBasedTrackSizingFunctionsForItems<ResolveContentBasedMinimums>(direction, sizingData, spanGroupRange); 719 737 resolveContentBasedTrackSizingFunctionsForItems<ResolveMaxContentMinimums>(direction, sizingData, spanGroupRange); 720 738 resolveContentBasedTrackSizingFunctionsForItems<ResolveIntrinsicMaximums>(direction, sizingData, spanGroupRange); … … 739 757 else if (trackSize.hasMaxContentMinTrackBreadth()) 740 758 track.setBaseSize(std::max(track.baseSize(), maxContentForChild(gridItem, direction, columnTracks))); 759 else if (trackSize.hasAutoMinTrackBreadth()) 760 track.setBaseSize(std::max(track.baseSize(), minSizeForChild(gridItem, direction, columnTracks))); 741 761 742 762 if (trackSize.hasMinContentMaxTrackBreadth()) 743 763 track.setGrowthLimit(std::max(track.growthLimit(), minContentForChild(gridItem, direction, columnTracks))); 744 else if (trackSize.hasMaxContent MaxTrackBreadth())764 else if (trackSize.hasMaxContentOrAutoMaxTrackBreadth()) 745 765 track.setGrowthLimit(std::max(track.growthLimit(), maxContentForChild(gridItem, direction, columnTracks))); 746 766 } … … 750 770 switch (phase) { 751 771 case ResolveIntrinsicMinimums: 772 case ResolveContentBasedMinimums: 752 773 case ResolveMaxContentMinimums: 753 774 case MaximizeTracks: … … 766 787 switch (phase) { 767 788 case ResolveIntrinsicMinimums: 789 return trackSize.hasIntrinsicMinTrackBreadth(); 790 case ResolveContentBasedMinimums: 768 791 return trackSize.hasMinOrMaxContentMinTrackBreadth(); 769 792 case ResolveMaxContentMinimums: … … 772 795 return trackSize.hasMinOrMaxContentMaxTrackBreadth(); 773 796 case ResolveMaxContentMaximums: 774 return trackSize.hasMaxContent MaxTrackBreadth();797 return trackSize.hasMaxContentOrAutoMaxTrackBreadth(); 775 798 case MaximizeTracks: 776 799 ASSERT_NOT_REACHED(); … … 786 809 switch (phase) { 787 810 case ResolveIntrinsicMinimums: 788 return trackSize.hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth(); 811 case ResolveContentBasedMinimums: 812 return trackSize.hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth(); 789 813 case ResolveMaxContentMinimums: 790 814 return trackSize.hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth(); … … 805 829 switch (phase) { 806 830 case ResolveIntrinsicMinimums: 831 case ResolveContentBasedMinimums: 807 832 case ResolveMaxContentMinimums: 808 833 return; … … 827 852 switch (phase) { 828 853 case ResolveIntrinsicMinimums: 854 case ResolveContentBasedMinimums: 829 855 case ResolveMaxContentMinimums: 830 856 track.setBaseSize(track.plannedSize()); … … 846 872 switch (phase) { 847 873 case ResolveIntrinsicMinimums: 874 return minSizeForChild(gridItem, direction, columnTracks); 875 case ResolveContentBasedMinimums: 848 876 case ResolveIntrinsicMaximums: 849 877 return minContentForChild(gridItem, direction, columnTracks); -
trunk/Source/WebCore/rendering/RenderGrid.h
r189910 r189911 96 96 enum TrackSizeComputationPhase { 97 97 ResolveIntrinsicMinimums, 98 ResolveContentBasedMinimums, 98 99 ResolveMaxContentMinimums, 99 100 ResolveIntrinsicMaximums, … … 118 119 119 120 LayoutUnit logicalContentHeightForChild(RenderBox&, Vector<GridTrack>&); 121 LayoutUnit minSizeForChild(RenderBox&, GridTrackSizingDirection, Vector<GridTrack>& columnTracks); 120 122 LayoutUnit minContentForChild(RenderBox&, GridTrackSizingDirection, Vector<GridTrack>& columnTracks); 121 123 LayoutUnit maxContentForChild(RenderBox&, GridTrackSizingDirection, Vector<GridTrack>& columnTracks); -
trunk/Source/WebCore/rendering/style/GridTrackSize.h
r184055 r189911 71 71 } 72 72 73 const GridLength& minTrackBreadth() const 74 { 75 if (m_minTrackBreadth.isLength() && m_minTrackBreadth.length().isAuto()) { 76 static NeverDestroyed<const GridLength> minContent{Length(MinContent)}; 77 return minContent; 78 } 79 return m_minTrackBreadth; 80 } 73 const GridLength& minTrackBreadth() const { return m_minTrackBreadth; } 81 74 82 const GridLength& maxTrackBreadth() const 83 { 84 if (m_maxTrackBreadth.isLength() && m_maxTrackBreadth.length().isAuto()) { 85 static NeverDestroyed<const GridLength> maxContent{Length(MaxContent)}; 86 return maxContent; 87 } 88 return m_maxTrackBreadth; 89 } 75 const GridLength& maxTrackBreadth() const { return m_maxTrackBreadth; } 90 76 91 77 GridTrackSizeType type() const { return m_type; } … … 102 88 void cacheMinMaxTrackBreadthTypes() 103 89 { 90 m_minTrackBreadthIsAuto = minTrackBreadth().isLength() && minTrackBreadth().length().isAuto(); 104 91 m_minTrackBreadthIsMinContent = minTrackBreadth().isLength() && minTrackBreadth().length().isMinContent(); 105 92 m_minTrackBreadthIsMaxContent = minTrackBreadth().isLength() && minTrackBreadth().length().isMaxContent(); 106 93 m_maxTrackBreadthIsMaxContent = maxTrackBreadth().isLength() && maxTrackBreadth().length().isMaxContent(); 107 94 m_maxTrackBreadthIsMinContent = maxTrackBreadth().isLength() && maxTrackBreadth().length().isMinContent(); 95 m_maxTrackBreadthIsAuto = maxTrackBreadth().isLength() && maxTrackBreadth().length().isAuto(); 108 96 } 109 97 98 bool hasIntrinsicMinTrackBreadth() const { return m_minTrackBreadthIsMaxContent || m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto; } 110 99 bool hasMinOrMaxContentMinTrackBreadth() const { return m_minTrackBreadthIsMaxContent || m_minTrackBreadthIsMinContent; } 100 bool hasAutoMinTrackBreadth() const { return m_minTrackBreadthIsAuto; } 101 bool hasAutoMaxTrackBreadth() const { return m_maxTrackBreadthIsAuto; } 111 102 bool hasMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMaxContent; } 103 bool hasMaxContentOrAutoMaxTrackBreadth() const { return m_maxTrackBreadthIsMaxContent || m_maxTrackBreadthIsAuto; } 112 104 bool hasMinContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMinContent; } 113 105 bool hasMinOrMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMaxContent || m_maxTrackBreadthIsMinContent; } 114 106 bool hasMaxContentMinTrackBreadth() const { return m_minTrackBreadthIsMaxContent; } 115 107 bool hasMinContentMinTrackBreadth() const { return m_minTrackBreadthIsMinContent; } 116 bool hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth() const { return m_minTrackBreadthIsMinContent && hasMinOrMaxContentMaxTrackBreadth(); }117 108 bool hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth() const { return m_minTrackBreadthIsMaxContent && m_maxTrackBreadthIsMaxContent; } 109 bool hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth() const { return (m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto) && (m_maxTrackBreadthIsAuto || hasMinOrMaxContentMaxTrackBreadth()); } 118 110 119 111 private: … … 121 113 GridLength m_minTrackBreadth; 122 114 GridLength m_maxTrackBreadth; 115 bool m_minTrackBreadthIsAuto; 123 116 bool m_minTrackBreadthIsMaxContent; 124 117 bool m_minTrackBreadthIsMinContent; 118 bool m_maxTrackBreadthIsAuto; 125 119 bool m_maxTrackBreadthIsMaxContent; 126 120 bool m_maxTrackBreadthIsMinContent;
Note: See TracChangeset
for help on using the changeset viewer.