Title: [230848] trunk
Revision
230848
Author
jfernan...@igalia.com
Date
2018-04-20 13:06:53 -0700 (Fri, 20 Apr 2018)

Log Message

Update Alignment shorthands to the spec now that they are not ambiguous
https://bugs.webkit.org/show_bug.cgi?id=184812

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Imported new Web Platform Tests from the css-align test suite.
Additionally, updated the ones we already have to verify the new shorthand syntax is correct.

* resources/import-expectations.json:
* web-platform-tests/css/css-align/OWNERS: Added.
* web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html:
* web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html:
* web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt:
* web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html:
* web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html:
* web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html:
* web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html:
* web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html:
* web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt:
* web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html:
* web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt: Added.
* web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html: Added.
* web-platform-tests/css/css-align/default-alignment/w3c-import.log:
* web-platform-tests/css/css-align/gaps/column-gap-parsing-001-expected.txt:
* web-platform-tests/css/css-align/gaps/column-gap-parsing-001.html:
* web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt: Added.
* web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html: Added.
* web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht: Added.
* web-platform-tests/css/css-align/gaps/gap-normal-used-001.html: Added.
* web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht: Added.
* web-platform-tests/css/css-align/gaps/gap-normal-used-002.html: Added.
* web-platform-tests/css/css-align/gaps/gap-parsing-001-expected.txt:
* web-platform-tests/css/css-align/gaps/gap-parsing-001.html:
* web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001-expected.txt:
* web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html:
* web-platform-tests/css/css-align/gaps/grid-gap-parsing-001-expected.txt:
* web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html:
* web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001-expected.txt:
* web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001.html:
* web-platform-tests/css/css-align/gaps/row-gap-parsing-001-expected.txt:
* web-platform-tests/css/css-align/gaps/row-gap-parsing-001.html:
* web-platform-tests/css/css-align/gaps/w3c-import.log:
* web-platform-tests/css/css-align/resources/alignment-parsing-utils.js:
* web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html:
* web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html:
* web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt:
* web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html:
* web-platform-tests/css/css-align/w3c-import.log: Added.

Source/WebCore:

Now that the issue [1] about the syntax ambiguity has been resolved we
don't need to use the custom syntax anymore. The Alignment shorthands
use now the simple syntax, defined based on the longhands' syntax.

Since we allow all the values valid for each longhand, we'll update
in this CL the corresponding web platform tests. Additionally, this CL
updates also the shorthand serialization tests [2], which didn't
consider the new value 'legacy' for justify-items (and place-items) due
to the bug [3] Firefox still has pending to be fixed.

[1] https://github.com/w3c/csswg-drafts/issues/1001
[2] css/css-align/default-alignment/shorthand-serialization-001.html
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=1363875

Tests: imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html
       imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html
       imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html
       imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html

* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumePlaceContentShorthand): Using the justify-content and align-content parsing logic to parse the shorthand.
(WebCore::CSSPropertyParser::consumePlaceItemsShorthand): Using the justify-items and align-items parsing logic to parse the shorthand.
(WebCore::CSSPropertyParser::consumePlaceSelfShorthand): Using the justify-self and align-self parsing logic to parse the shorthand.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2018-04-20 20:06:53 UTC (rev 230848)
@@ -1,3 +1,54 @@
+2018-04-20  Javier Fernandez  <jfernan...@igalia.com>
+
+        Update Alignment shorthands to the spec now that they are not ambiguous
+        https://bugs.webkit.org/show_bug.cgi?id=184812
+
+        Reviewed by Antti Koivisto.
+
+        Imported new Web Platform Tests from the css-align test suite.
+        Additionally, updated the ones we already have to verify the new shorthand syntax is correct.
+
+        * resources/import-expectations.json:
+        * web-platform-tests/css/css-align/OWNERS: Added.
+        * web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html:
+        * web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html:
+        * web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt:
+        * web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html:
+        * web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html:
+        * web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html:
+        * web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html:
+        * web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html:
+        * web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt:
+        * web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html:
+        * web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt: Added.
+        * web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html: Added.
+        * web-platform-tests/css/css-align/default-alignment/w3c-import.log:
+        * web-platform-tests/css/css-align/gaps/column-gap-parsing-001-expected.txt:
+        * web-platform-tests/css/css-align/gaps/column-gap-parsing-001.html:
+        * web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt: Added.
+        * web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html: Added.
+        * web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht: Added.
+        * web-platform-tests/css/css-align/gaps/gap-normal-used-001.html: Added.
+        * web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht: Added.
+        * web-platform-tests/css/css-align/gaps/gap-normal-used-002.html: Added.
+        * web-platform-tests/css/css-align/gaps/gap-parsing-001-expected.txt:
+        * web-platform-tests/css/css-align/gaps/gap-parsing-001.html:
+        * web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001-expected.txt:
+        * web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html:
+        * web-platform-tests/css/css-align/gaps/grid-gap-parsing-001-expected.txt:
+        * web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html:
+        * web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001-expected.txt:
+        * web-platform-tests/css/css-align/gaps/grid-row-gap-parsing-001.html:
+        * web-platform-tests/css/css-align/gaps/row-gap-parsing-001-expected.txt:
+        * web-platform-tests/css/css-align/gaps/row-gap-parsing-001.html:
+        * web-platform-tests/css/css-align/gaps/w3c-import.log:
+        * web-platform-tests/css/css-align/resources/alignment-parsing-utils.js:
+        * web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html:
+        * web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html:
+        * web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt:
+        * web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html:
+        * web-platform-tests/css/css-align/w3c-import.log: Added.
+
 2018-04-18  Youenn Fablet  <you...@apple.com>
 
         Allow cross-origin redirections for synchronous XHR

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/OWNERS (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/OWNERS	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/OWNERS	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,2 @@
+@dholbert
+@emilio

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -9,4 +9,9 @@
 PASS Checking place-content: space-around 
 PASS Checking place-content: space-between 
 PASS Checking place-content: space-evenly 
+PASS Checking place-content: safe flex-end 
+PASS Checking place-content: unsafe end 
+PASS Checking place-content: safe end 
+PASS Checking place-content: unsafe flex-start 
+PASS Checking place-content: safe center 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -8,7 +8,7 @@
 <script src=""
 <div id="log"></div>
 <script>
-    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses);
+    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, overflowClasses);
     for (var key in classes) {
         let value = classes[key];
         test(function() {

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -155,4 +155,64 @@
 PASS Checking place-content: last baseline space-around 
 PASS Checking place-content: last baseline space-between 
 PASS Checking place-content: last baseline space-evenly 
+PASS Checking place-content: safe flex-end normal 
+PASS Checking place-content: safe flex-end left 
+PASS Checking place-content: safe flex-end right 
+PASS Checking place-content: safe flex-end start 
+PASS Checking place-content: safe flex-end end 
+PASS Checking place-content: safe flex-end center 
+PASS Checking place-content: safe flex-end flex-start 
+PASS Checking place-content: safe flex-end flex-end 
+PASS Checking place-content: safe flex-end stretch 
+PASS Checking place-content: safe flex-end space-around 
+PASS Checking place-content: safe flex-end space-between 
+PASS Checking place-content: safe flex-end space-evenly 
+PASS Checking place-content: unsafe end normal 
+PASS Checking place-content: unsafe end left 
+PASS Checking place-content: unsafe end right 
+PASS Checking place-content: unsafe end start 
+PASS Checking place-content: unsafe end end 
+PASS Checking place-content: unsafe end center 
+PASS Checking place-content: unsafe end flex-start 
+PASS Checking place-content: unsafe end flex-end 
+PASS Checking place-content: unsafe end stretch 
+PASS Checking place-content: unsafe end space-around 
+PASS Checking place-content: unsafe end space-between 
+PASS Checking place-content: unsafe end space-evenly 
+PASS Checking place-content: safe end normal 
+PASS Checking place-content: safe end left 
+PASS Checking place-content: safe end right 
+PASS Checking place-content: safe end start 
+PASS Checking place-content: safe end end 
+PASS Checking place-content: safe end center 
+PASS Checking place-content: safe end flex-start 
+PASS Checking place-content: safe end flex-end 
+PASS Checking place-content: safe end stretch 
+PASS Checking place-content: safe end space-around 
+PASS Checking place-content: safe end space-between 
+PASS Checking place-content: safe end space-evenly 
+PASS Checking place-content: unsafe flex-start normal 
+PASS Checking place-content: unsafe flex-start left 
+PASS Checking place-content: unsafe flex-start right 
+PASS Checking place-content: unsafe flex-start start 
+PASS Checking place-content: unsafe flex-start end 
+PASS Checking place-content: unsafe flex-start center 
+PASS Checking place-content: unsafe flex-start flex-start 
+PASS Checking place-content: unsafe flex-start flex-end 
+PASS Checking place-content: unsafe flex-start stretch 
+PASS Checking place-content: unsafe flex-start space-around 
+PASS Checking place-content: unsafe flex-start space-between 
+PASS Checking place-content: unsafe flex-start space-evenly 
+PASS Checking place-content: safe center normal 
+PASS Checking place-content: safe center left 
+PASS Checking place-content: safe center right 
+PASS Checking place-content: safe center start 
+PASS Checking place-content: safe center end 
+PASS Checking place-content: safe center center 
+PASS Checking place-content: safe center flex-start 
+PASS Checking place-content: safe center flex-end 
+PASS Checking place-content: safe center stretch 
+PASS Checking place-content: safe center space-around 
+PASS Checking place-content: safe center space-between 
+PASS Checking place-content: safe center space-evenly 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -8,10 +8,12 @@
 <script src=""
 <div id="log"></div>
 <script>
-    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, baselineClasses);
+    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, baselineClasses,
+                                overflowClasses);
     for (var key1 in classes) {
         let alignValue = classes[key1];
-        let classes2 = Object.assign({"Normal":"normal", "Left":"left", "Right":"right"}, contentPositionClasses, distributionClasses);
+        let classes2 = Object.assign({"Normal":"normal", "Left":"left", "Right":"right"}, contentPositionClasses,
+                                     distributionClasses);
         for (var key2 in classes2) {
             let justifyValue = classes2[key2];
             test(function() {

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -1,5 +1,4 @@
 
-PASS Verify overflow keywords are invalid 
 PASS Verify fallback values are invalid 
 PASS Verify 'left' and 'right' values are invalid for block/cross axis alignment 
 PASS Verify <baseline-position> values are invalid for the justify-content property 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -14,11 +14,6 @@
     }
 
     test(function() {
-        checkInvalidValues("safe center")
-        checkInvalidValues("unsafe center")
-    }, "Verify overflow keywords are invalid");
-
-    test(function() {
         checkInvalidValues("center space-between start")
     }, "Verify fallback values are invalid");
 
@@ -29,8 +24,6 @@
     }, "Verify 'left' and 'right' values are invalid for block/cross axis alignment");
 
     test(function() {
-        checkInvalidValues("baseline")
-        checkInvalidValues("first baseline")
         checkInvalidValues("start baseline")
         checkInvalidValues("end last baseline")
     }, "Verify <baseline-position> values are invalid for the justify-content property");

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -18,4 +18,7 @@
 PASS Checking justify-items: safe end 
 PASS Checking justify-items: unsafe flex-start 
 PASS Checking justify-items: safe center 
+PASS Checking justify-items: legacy left 
+PASS Checking justify-items: legacy center 
+PASS Checking justify-items: legacy right 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -15,7 +15,7 @@
 <div id="log"></div>
 <script>
     let classes = Object.assign({"Normal":"normal", "Stretch":"stretch", "Left":"left", "Right":"right"},
-                                selfPositionClasses, baselineClasses, overflowClasses);
+                                selfPositionClasses, baselineClasses, overflowClasses, legacyClasses);
 
     for (var key in classes) {
         let specifiedValue = classes[key];

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -18,4 +18,7 @@
 PASS Checking justify-items: safe end 
 PASS Checking justify-items: unsafe flex-start 
 PASS Checking justify-items: safe center 
+PASS Checking justify-items: legacy left 
+PASS Checking justify-items: legacy center 
+PASS Checking justify-items: legacy right 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -17,7 +17,7 @@
     document.body.appendChild(element);
 
     let classes = Object.assign({"Normal":"normal", "Stretch":"stretch", "Left":"left", "Right":"right"},
-                                selfPositionClasses, baselineClasses, overflowClasses);
+                                selfPositionClasses, baselineClasses, overflowClasses, legacyClasses);
 
     for (var key in classes) {
         let specifiedValue = classes[key];

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -11,4 +11,9 @@
 PASS Checking place-items: baseline 
 PASS Checking place-items: first baseline 
 PASS Checking place-items: last baseline 
+PASS Checking place-items: safe flex-end 
+PASS Checking place-items: unsafe end 
+PASS Checking place-items: safe end 
+PASS Checking place-items: unsafe flex-start 
+PASS Checking place-items: safe center 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -8,7 +8,8 @@
 <script src=""
 <div id="log"></div>
 <script>
-    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses);
+    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses,
+                                overflowClasses);
     for (var key in classes) {
         let value = classes[key];
         test(function() {

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -1,6 +1,9 @@
 
 PASS Checking place-items: normal left 
 PASS Checking place-items: normal right 
+PASS Checking place-items: normal legacy left 
+PASS Checking place-items: normal legacy center 
+PASS Checking place-items: normal legacy right 
 PASS Checking place-items: normal normal 
 PASS Checking place-items: normal stretch 
 PASS Checking place-items: normal start 
@@ -13,8 +16,16 @@
 PASS Checking place-items: normal baseline 
 PASS Checking place-items: normal first baseline 
 PASS Checking place-items: normal last baseline 
+PASS Checking place-items: normal safe flex-end 
+PASS Checking place-items: normal unsafe end 
+PASS Checking place-items: normal safe end 
+PASS Checking place-items: normal unsafe flex-start 
+PASS Checking place-items: normal safe center 
 PASS Checking place-items: stretch left 
 PASS Checking place-items: stretch right 
+PASS Checking place-items: stretch legacy left 
+PASS Checking place-items: stretch legacy center 
+PASS Checking place-items: stretch legacy right 
 PASS Checking place-items: stretch normal 
 PASS Checking place-items: stretch stretch 
 PASS Checking place-items: stretch start 
@@ -27,8 +38,16 @@
 PASS Checking place-items: stretch baseline 
 PASS Checking place-items: stretch first baseline 
 PASS Checking place-items: stretch last baseline 
+PASS Checking place-items: stretch safe flex-end 
+PASS Checking place-items: stretch unsafe end 
+PASS Checking place-items: stretch safe end 
+PASS Checking place-items: stretch unsafe flex-start 
+PASS Checking place-items: stretch safe center 
 PASS Checking place-items: start left 
 PASS Checking place-items: start right 
+PASS Checking place-items: start legacy left 
+PASS Checking place-items: start legacy center 
+PASS Checking place-items: start legacy right 
 PASS Checking place-items: start normal 
 PASS Checking place-items: start stretch 
 PASS Checking place-items: start start 
@@ -41,8 +60,16 @@
 PASS Checking place-items: start baseline 
 PASS Checking place-items: start first baseline 
 PASS Checking place-items: start last baseline 
+PASS Checking place-items: start safe flex-end 
+PASS Checking place-items: start unsafe end 
+PASS Checking place-items: start safe end 
+PASS Checking place-items: start unsafe flex-start 
+PASS Checking place-items: start safe center 
 PASS Checking place-items: end left 
 PASS Checking place-items: end right 
+PASS Checking place-items: end legacy left 
+PASS Checking place-items: end legacy center 
+PASS Checking place-items: end legacy right 
 PASS Checking place-items: end normal 
 PASS Checking place-items: end stretch 
 PASS Checking place-items: end start 
@@ -55,8 +82,16 @@
 PASS Checking place-items: end baseline 
 PASS Checking place-items: end first baseline 
 PASS Checking place-items: end last baseline 
+PASS Checking place-items: end safe flex-end 
+PASS Checking place-items: end unsafe end 
+PASS Checking place-items: end safe end 
+PASS Checking place-items: end unsafe flex-start 
+PASS Checking place-items: end safe center 
 PASS Checking place-items: self-start left 
 PASS Checking place-items: self-start right 
+PASS Checking place-items: self-start legacy left 
+PASS Checking place-items: self-start legacy center 
+PASS Checking place-items: self-start legacy right 
 PASS Checking place-items: self-start normal 
 PASS Checking place-items: self-start stretch 
 PASS Checking place-items: self-start start 
@@ -69,8 +104,16 @@
 PASS Checking place-items: self-start baseline 
 PASS Checking place-items: self-start first baseline 
 PASS Checking place-items: self-start last baseline 
+PASS Checking place-items: self-start safe flex-end 
+PASS Checking place-items: self-start unsafe end 
+PASS Checking place-items: self-start safe end 
+PASS Checking place-items: self-start unsafe flex-start 
+PASS Checking place-items: self-start safe center 
 PASS Checking place-items: self-end left 
 PASS Checking place-items: self-end right 
+PASS Checking place-items: self-end legacy left 
+PASS Checking place-items: self-end legacy center 
+PASS Checking place-items: self-end legacy right 
 PASS Checking place-items: self-end normal 
 PASS Checking place-items: self-end stretch 
 PASS Checking place-items: self-end start 
@@ -83,8 +126,16 @@
 PASS Checking place-items: self-end baseline 
 PASS Checking place-items: self-end first baseline 
 PASS Checking place-items: self-end last baseline 
+PASS Checking place-items: self-end safe flex-end 
+PASS Checking place-items: self-end unsafe end 
+PASS Checking place-items: self-end safe end 
+PASS Checking place-items: self-end unsafe flex-start 
+PASS Checking place-items: self-end safe center 
 PASS Checking place-items: center left 
 PASS Checking place-items: center right 
+PASS Checking place-items: center legacy left 
+PASS Checking place-items: center legacy center 
+PASS Checking place-items: center legacy right 
 PASS Checking place-items: center normal 
 PASS Checking place-items: center stretch 
 PASS Checking place-items: center start 
@@ -97,8 +148,16 @@
 PASS Checking place-items: center baseline 
 PASS Checking place-items: center first baseline 
 PASS Checking place-items: center last baseline 
+PASS Checking place-items: center safe flex-end 
+PASS Checking place-items: center unsafe end 
+PASS Checking place-items: center safe end 
+PASS Checking place-items: center unsafe flex-start 
+PASS Checking place-items: center safe center 
 PASS Checking place-items: flex-start left 
 PASS Checking place-items: flex-start right 
+PASS Checking place-items: flex-start legacy left 
+PASS Checking place-items: flex-start legacy center 
+PASS Checking place-items: flex-start legacy right 
 PASS Checking place-items: flex-start normal 
 PASS Checking place-items: flex-start stretch 
 PASS Checking place-items: flex-start start 
@@ -111,8 +170,16 @@
 PASS Checking place-items: flex-start baseline 
 PASS Checking place-items: flex-start first baseline 
 PASS Checking place-items: flex-start last baseline 
+PASS Checking place-items: flex-start safe flex-end 
+PASS Checking place-items: flex-start unsafe end 
+PASS Checking place-items: flex-start safe end 
+PASS Checking place-items: flex-start unsafe flex-start 
+PASS Checking place-items: flex-start safe center 
 PASS Checking place-items: flex-end left 
 PASS Checking place-items: flex-end right 
+PASS Checking place-items: flex-end legacy left 
+PASS Checking place-items: flex-end legacy center 
+PASS Checking place-items: flex-end legacy right 
 PASS Checking place-items: flex-end normal 
 PASS Checking place-items: flex-end stretch 
 PASS Checking place-items: flex-end start 
@@ -125,8 +192,16 @@
 PASS Checking place-items: flex-end baseline 
 PASS Checking place-items: flex-end first baseline 
 PASS Checking place-items: flex-end last baseline 
+PASS Checking place-items: flex-end safe flex-end 
+PASS Checking place-items: flex-end unsafe end 
+PASS Checking place-items: flex-end safe end 
+PASS Checking place-items: flex-end unsafe flex-start 
+PASS Checking place-items: flex-end safe center 
 PASS Checking place-items: baseline left 
 PASS Checking place-items: baseline right 
+PASS Checking place-items: baseline legacy left 
+PASS Checking place-items: baseline legacy center 
+PASS Checking place-items: baseline legacy right 
 PASS Checking place-items: baseline normal 
 PASS Checking place-items: baseline stretch 
 PASS Checking place-items: baseline start 
@@ -139,8 +214,16 @@
 PASS Checking place-items: baseline baseline 
 PASS Checking place-items: baseline first baseline 
 PASS Checking place-items: baseline last baseline 
+PASS Checking place-items: baseline safe flex-end 
+PASS Checking place-items: baseline unsafe end 
+PASS Checking place-items: baseline safe end 
+PASS Checking place-items: baseline unsafe flex-start 
+PASS Checking place-items: baseline safe center 
 PASS Checking place-items: first baseline left 
 PASS Checking place-items: first baseline right 
+PASS Checking place-items: first baseline legacy left 
+PASS Checking place-items: first baseline legacy center 
+PASS Checking place-items: first baseline legacy right 
 PASS Checking place-items: first baseline normal 
 PASS Checking place-items: first baseline stretch 
 PASS Checking place-items: first baseline start 
@@ -153,8 +236,16 @@
 PASS Checking place-items: first baseline baseline 
 PASS Checking place-items: first baseline first baseline 
 PASS Checking place-items: first baseline last baseline 
+PASS Checking place-items: first baseline safe flex-end 
+PASS Checking place-items: first baseline unsafe end 
+PASS Checking place-items: first baseline safe end 
+PASS Checking place-items: first baseline unsafe flex-start 
+PASS Checking place-items: first baseline safe center 
 PASS Checking place-items: last baseline left 
 PASS Checking place-items: last baseline right 
+PASS Checking place-items: last baseline legacy left 
+PASS Checking place-items: last baseline legacy center 
+PASS Checking place-items: last baseline legacy right 
 PASS Checking place-items: last baseline normal 
 PASS Checking place-items: last baseline stretch 
 PASS Checking place-items: last baseline start 
@@ -167,4 +258,119 @@
 PASS Checking place-items: last baseline baseline 
 PASS Checking place-items: last baseline first baseline 
 PASS Checking place-items: last baseline last baseline 
+PASS Checking place-items: last baseline safe flex-end 
+PASS Checking place-items: last baseline unsafe end 
+PASS Checking place-items: last baseline safe end 
+PASS Checking place-items: last baseline unsafe flex-start 
+PASS Checking place-items: last baseline safe center 
+PASS Checking place-items: safe flex-end left 
+PASS Checking place-items: safe flex-end right 
+PASS Checking place-items: safe flex-end legacy left 
+PASS Checking place-items: safe flex-end legacy center 
+PASS Checking place-items: safe flex-end legacy right 
+PASS Checking place-items: safe flex-end normal 
+PASS Checking place-items: safe flex-end stretch 
+PASS Checking place-items: safe flex-end start 
+PASS Checking place-items: safe flex-end end 
+PASS Checking place-items: safe flex-end self-start 
+PASS Checking place-items: safe flex-end self-end 
+PASS Checking place-items: safe flex-end center 
+PASS Checking place-items: safe flex-end flex-start 
+PASS Checking place-items: safe flex-end flex-end 
+PASS Checking place-items: safe flex-end baseline 
+PASS Checking place-items: safe flex-end first baseline 
+PASS Checking place-items: safe flex-end last baseline 
+PASS Checking place-items: safe flex-end safe flex-end 
+PASS Checking place-items: safe flex-end unsafe end 
+PASS Checking place-items: safe flex-end safe end 
+PASS Checking place-items: safe flex-end unsafe flex-start 
+PASS Checking place-items: safe flex-end safe center 
+PASS Checking place-items: unsafe end left 
+PASS Checking place-items: unsafe end right 
+PASS Checking place-items: unsafe end legacy left 
+PASS Checking place-items: unsafe end legacy center 
+PASS Checking place-items: unsafe end legacy right 
+PASS Checking place-items: unsafe end normal 
+PASS Checking place-items: unsafe end stretch 
+PASS Checking place-items: unsafe end start 
+PASS Checking place-items: unsafe end end 
+PASS Checking place-items: unsafe end self-start 
+PASS Checking place-items: unsafe end self-end 
+PASS Checking place-items: unsafe end center 
+PASS Checking place-items: unsafe end flex-start 
+PASS Checking place-items: unsafe end flex-end 
+PASS Checking place-items: unsafe end baseline 
+PASS Checking place-items: unsafe end first baseline 
+PASS Checking place-items: unsafe end last baseline 
+PASS Checking place-items: unsafe end safe flex-end 
+PASS Checking place-items: unsafe end unsafe end 
+PASS Checking place-items: unsafe end safe end 
+PASS Checking place-items: unsafe end unsafe flex-start 
+PASS Checking place-items: unsafe end safe center 
+PASS Checking place-items: safe end left 
+PASS Checking place-items: safe end right 
+PASS Checking place-items: safe end legacy left 
+PASS Checking place-items: safe end legacy center 
+PASS Checking place-items: safe end legacy right 
+PASS Checking place-items: safe end normal 
+PASS Checking place-items: safe end stretch 
+PASS Checking place-items: safe end start 
+PASS Checking place-items: safe end end 
+PASS Checking place-items: safe end self-start 
+PASS Checking place-items: safe end self-end 
+PASS Checking place-items: safe end center 
+PASS Checking place-items: safe end flex-start 
+PASS Checking place-items: safe end flex-end 
+PASS Checking place-items: safe end baseline 
+PASS Checking place-items: safe end first baseline 
+PASS Checking place-items: safe end last baseline 
+PASS Checking place-items: safe end safe flex-end 
+PASS Checking place-items: safe end unsafe end 
+PASS Checking place-items: safe end safe end 
+PASS Checking place-items: safe end unsafe flex-start 
+PASS Checking place-items: safe end safe center 
+PASS Checking place-items: unsafe flex-start left 
+PASS Checking place-items: unsafe flex-start right 
+PASS Checking place-items: unsafe flex-start legacy left 
+PASS Checking place-items: unsafe flex-start legacy center 
+PASS Checking place-items: unsafe flex-start legacy right 
+PASS Checking place-items: unsafe flex-start normal 
+PASS Checking place-items: unsafe flex-start stretch 
+PASS Checking place-items: unsafe flex-start start 
+PASS Checking place-items: unsafe flex-start end 
+PASS Checking place-items: unsafe flex-start self-start 
+PASS Checking place-items: unsafe flex-start self-end 
+PASS Checking place-items: unsafe flex-start center 
+PASS Checking place-items: unsafe flex-start flex-start 
+PASS Checking place-items: unsafe flex-start flex-end 
+PASS Checking place-items: unsafe flex-start baseline 
+PASS Checking place-items: unsafe flex-start first baseline 
+PASS Checking place-items: unsafe flex-start last baseline 
+PASS Checking place-items: unsafe flex-start safe flex-end 
+PASS Checking place-items: unsafe flex-start unsafe end 
+PASS Checking place-items: unsafe flex-start safe end 
+PASS Checking place-items: unsafe flex-start unsafe flex-start 
+PASS Checking place-items: unsafe flex-start safe center 
+PASS Checking place-items: safe center left 
+PASS Checking place-items: safe center right 
+PASS Checking place-items: safe center legacy left 
+PASS Checking place-items: safe center legacy center 
+PASS Checking place-items: safe center legacy right 
+PASS Checking place-items: safe center normal 
+PASS Checking place-items: safe center stretch 
+PASS Checking place-items: safe center start 
+PASS Checking place-items: safe center end 
+PASS Checking place-items: safe center self-start 
+PASS Checking place-items: safe center self-end 
+PASS Checking place-items: safe center center 
+PASS Checking place-items: safe center flex-start 
+PASS Checking place-items: safe center flex-end 
+PASS Checking place-items: safe center baseline 
+PASS Checking place-items: safe center first baseline 
+PASS Checking place-items: safe center last baseline 
+PASS Checking place-items: safe center safe flex-end 
+PASS Checking place-items: safe center unsafe end 
+PASS Checking place-items: safe center safe end 
+PASS Checking place-items: safe center unsafe flex-start 
+PASS Checking place-items: safe center safe center 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -8,10 +8,11 @@
 <script src=""
 <div id="log"></div>
 <script>
-    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses);
+    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses,
+                                overflowClasses);
     for (var key1 in classes) {
         let alignValue = classes[key1];
-        let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);
+        let classes2 = Object.assign({"Left":"left", "Right":"right"}, legacyClasses, classes);
         for (var key2 in classes2) {
            let justifyValue = classes2[key2];
            test(function() {

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -1,9 +1,6 @@
 
-PASS Verify overflow keywords are invalid 
 PASS Verify fallback values are invalid 
 PASS Verify 'left' and 'right' values are invalid for block/cross axis alignment 
 PASS Verify numeric values are invalid 
-PASS Verify 'auto' value is invalid. 
-PASS Verify 'legacy' value is invalid. 
 PASS Verify empty declaration is invalid 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -14,12 +14,7 @@
     }
 
     test(function() {
-        checkInvalidValues("safe center")
-        checkInvalidValues("unsafe center")
-    }, "Verify overflow keywords are invalid");
-
-    test(function() {
-        checkInvalidValues("center space-between start")
+        checkInvalidValues("center end start")
     }, "Verify fallback values are invalid");
 
     test(function() {
@@ -34,23 +29,6 @@
     }, "Verify numeric values are invalid");
 
     test(function() {
-       checkInvalidValues("auto")
-       checkInvalidValues("auto right")
-       checkInvalidValues("auto auto")
-       checkInvalidValues("center auto")
-    }, "Verify 'auto' value is invalid.");
-
-    test(function() {
-       checkInvalidValues("legacy")
-       checkInvalidValues("legacy start")
-       checkInvalidValues("end legacy")
-       checkInvalidValues("legacy left")
-       checkInvalidValues("center legacy")
-       checkInvalidValues("start legacy center")
-    }, "Verify 'legacy' value is invalid.");
-
-
-    test(function() {
         checkInvalidValues("")
     }, "Verify empty declaration is invalid");
 </script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,19 @@
+
+PASS test shorthand serialization {"alignContent":"center","shorthand":"center normal"} 
+PASS test shorthand serialization {"alignContent":"baseline safe right","shorthand":""} 
+PASS test shorthand serialization {"justifyContent":"safe start","shorthand":"normal safe start"} 
+PASS test shorthand serialization {"justifyContent":"unsafe start","shorthand":["normal start","normal unsafe start"]} 
+PASS test shorthand serialization {"justifyContent":"space-evenly start","shorthand":""} 
+PASS test shorthand serialization {"alignContent":"start","justifyContent":"end","shorthand":"start end"} 
+PASS test shorthand serialization {"alignItems":"center","shorthand":"center legacy"} 
+PASS test shorthand serialization {"alignItems":"baseline","shorthand":"baseline legacy"} 
+PASS test shorthand serialization {"justifyItems":"safe start","shorthand":"normal safe start"} 
+PASS test shorthand serialization {"justifyItems":"unsafe start","shorthand":["normal start","normal unsafe start"]} 
+PASS test shorthand serialization {"justifyItems":"stretch","shorthand":"normal stretch"} 
+PASS test shorthand serialization {"justifyItems":"left legacy","shorthand":"normal legacy left"} 
+PASS test shorthand serialization {"alignItems":"stretch","justifyItems":"end","shorthand":"stretch end"} 
+PASS test shorthand serialization {"alignSelf":"self-end safe","shorthand":""} 
+PASS test shorthand serialization {"justifySelf":"unsafe start","shorthand":["auto start","auto unsafe start"]} 
+PASS test shorthand serialization {"justifySelf":"last baseline start","shorthand":""} 
+PASS test shorthand serialization {"alignSelf":"baseline","justifySelf":"last baseline","shorthand":"baseline last baseline"} 
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset=utf-8>
+  <title>Test serialization of CSS Align shorthand properties</title>
+  <link rel="author" title="Mats Palmgren" href=""
+  <link rel="help" href=""
+  <script src=""
+  <script src=""
+</head>
+<body>
+
+<script>
+
+var initial_values = {
+    alignContent: "normal",
+    alignItems: "normal",
+    alignSelf: "auto",
+    justifyContent: "normal",
+    justifyItems: "legacy",
+    justifySelf: "auto",
+};
+
+var place_content_test_cases = [
+    {
+        alignContent: "center",
+        shorthand: "center normal",
+    },
+    {
+        alignContent: "baseline safe right",
+        shorthand: "",
+    },
+    {
+        justifyContent: "safe start",
+        shorthand: "normal safe start",
+    },
+    {
+        justifyContent: "unsafe start",
+        shorthand: ["normal start", "normal unsafe start"],
+    },
+    {
+        justifyContent: "space-evenly start",
+        shorthand: "",
+    },
+    {
+        alignContent: "start",
+        justifyContent: "end",
+        shorthand: "start end",
+    },
+];
+
+var place_items_test_cases = [
+    {
+        alignItems: "center",
+        shorthand: "center legacy",
+    },
+    {
+        alignItems: "baseline",
+        shorthand: "baseline legacy",
+    },
+    {
+        justifyItems: "safe start",
+        shorthand: "normal safe start",
+    },
+    {
+        justifyItems: "unsafe start",
+        shorthand: ["normal start", "normal unsafe start"],
+    },
+    {
+        justifyItems: "stretch",
+        shorthand: "normal stretch",
+    },
+    {
+        justifyItems: "left legacy",
+        shorthand: "normal legacy left",
+    },
+    {
+        alignItems: "stretch",
+        justifyItems: "end",
+        shorthand: "stretch end",
+    },
+];
+
+var place_self_test_cases = [
+    {
+        alignSelf: "self-end safe",
+        shorthand: "",
+    },
+    {
+        justifySelf: "unsafe start",
+        shorthand: ["auto start", "auto unsafe start"],
+    },
+    {
+        justifySelf: "last baseline start",
+        shorthand: "",
+    },
+    {
+        alignSelf: "baseline",
+        justifySelf: "last baseline",
+        shorthand: "baseline last baseline",
+    },
+];
+
+function run_tests(test_cases, shorthand, subproperties) {
+    test_cases.forEach(function(test_case) {
+        test(function() {
+            var element = document.createElement('div');
+            document.body.appendChild(element);
+            subproperties.forEach(function(longhand) {
+                element.style[longhand] = test_case[longhand] ||
+                                          initial_values[longhand];
+            });
+            if (Array.isArray(test_case.shorthand)) {
+              assert_in_array(element.style[shorthand], test_case.shorthand);
+            } else {
+              assert_equals(element.style[shorthand], test_case.shorthand);
+            }
+        }, "test shorthand serialization " + JSON.stringify(test_case));
+    });
+}
+
+run_tests(place_content_test_cases, "placeContent", [
+    "alignContent", "justifyContent"]);
+run_tests(place_items_test_cases, "placeItems", [
+    "alignItems", "justifyItems"]);
+run_tests(place_self_test_cases, "placeSelf", [
+    "alignSelf", "justifySelf"]);
+
+</script>
+</body>
+</html>

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/w3c-import.log (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/w3c-import.log	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/w3c-import.log	2018-04-20 20:06:53 UTC (rev 230848)
@@ -32,3 +32,4 @@
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-005.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-006.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,8 @@
+
+PASS colum-gap:normal computes to normal on multicol elements 
+PASS row-gap:normal computes to normal on multicol elements 
+PASS colum-gap:normal computes to normal on grid 
+PASS row-gap:normal computes to normal on grid 
+PASS colum-gap:normal (main axis) computes to normal on flexbox 
+PASS row-gap:normal (cross axis) computes to normal on flexbox 
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Box Alignment Test: computed value of normal on *-gap properties</title>
+<link rel="author" title="Florian Rivoal" href=""
+<link rel="help" href=""
+<meta assert="The computed value of [row-|column-]?gap is normal for all elements it applies to. Checking explicitely because earlier version of the spec called for 0px in some cases.">
+<script src=""
+<script src=""
+<style>
+#col,
+#grid,
+#flex {
+  /* Not using the shorthand because that's not what we're interested in,
+     and there are implementations that support column-gap without supporting the shorthand */
+  colum-gap: normal;
+  row-gap: normal;
+  float: right; /* for shrinkwrap*/
+}
+#col {
+  column-count: 2;
+  column-width: 50px;
+}
+#grid {
+  display: grid;
+  grid-template-columns: 50px 50px;
+  grid-template-rows: 50px 50px;
+}
+#flex {
+  display: flex;
+}
+#flex * { width: 50px; height: 50px;}
+</style>
+<body>
+  <div id="log"></div>
+
+  <div id=col></div>
+  <div id=grid></div>
+  <div id=flex><span></span><span></span></div>
+
+  <script>
+    test(
+      function(){
+        var target = document.getElementById("col");
+        assert_equals(getComputedStyle(target).columnGap, "normal");
+      }, "colum-gap:normal computes to normal on multicol elements");
+    test(
+      function(){
+        var target = document.getElementById("col");
+        assert_equals(getComputedStyle(target).rowGap, "normal");
+      }, "row-gap:normal computes to normal on multicol elements");
+    test(
+      function(){
+        var target = document.getElementById("grid");
+        assert_equals(getComputedStyle(target).columnGap, "normal");
+      }, "colum-gap:normal computes to normal on grid");
+    test(
+      function(){
+        var target = document.getElementById("grid");
+        assert_equals(getComputedStyle(target).rowGap, "normal");
+      }, "row-gap:normal computes to normal on grid");
+    test(
+      function(){
+        var target = document.getElementById("flex");
+        assert_equals(getComputedStyle(target).columnGap, "normal");
+      }, "colum-gap:normal (main axis) computes to normal on flexbox");
+    test(
+      function(){
+        var target = document.getElementById("flex");
+        assert_equals(getComputedStyle(target).rowGap, "normal");
+      }, "row-gap:normal (cross axis) computes to normal on flexbox");
+  </script>
+</body>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Reftest Reference</title>
+  <link rel="author" title="Gérard Talbot" href="" />
+  <style type="text/css"><![CDATA[
+  div
+  {
+  background-color: green;
+  height: 100px;
+  width: 100px;
+  }
+  ]]></style>
+ </head>
+ <body>
+  <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+  <div></div>
+ </body>
+</html>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Box Alignment Test: used value of *-gap:normal on grid</title>
+<link rel="author" title="Florian Rivoal" href=""
+<link rel="help" href=""
+<meta assert="The used value of row-gap and column-gap normal for grids is 0">
+<link rel="match" href="" />
+<style>
+#grid {
+  colum-gap: normal;
+  row-gap: normal;
+  display: grid;
+  grid-template-columns: 50px 50px;
+  grid-template-rows: 50px 50px;
+
+  position: absolute;
+}
+#grid * { background: green; }
+#red {
+  width: 100px;
+  height: 100px;
+  background: red;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div id=grid><span></span><span></span><span></span><span></span></div>
+<div id=red></div>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+  <title>CSS Reftest Reference</title>
+  <link rel="author" title="Gérard Talbot" href="" />
+  <style type="text/css"><![CDATA[
+  div
+  {
+  background-color: green;
+  height: 100px;
+  width: 100px;
+  }
+  ]]></style>
+ </head>
+ <body>
+  <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+  <div></div>
+ </body>
+</html>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Box Alignment Test: used value of *-gap:normal on flexbox</title>
+<link rel="author" title="Florian Rivoal" href=""
+<link rel="help" href=""
+<meta assert="The used value row-gap:normal and column:normal normal is 0px in flexbox">
+<link rel="match" href="" />
+<style>
+#flex {
+  colum-gap: normal;
+  row-gap: normal;
+  display: flex;
+  flex-flow: wrap;
+  max-width: 145px; /* more than 100, less than 150, to force wrapping and get 2 items per line*/
+
+  position: absolute;
+}
+#flex * {
+  width: 50px;
+  height: 50px;
+  background: green
+}
+#red {
+  width: 100px;
+  height: 100px;
+  background: red;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div id=flex><span></span><span></span><span></span><span></span></div>
+<div id=red></div>

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/w3c-import.log (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/w3c-import.log	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/w3c-import.log	2018-04-20 20:06:53 UTC (rev 230848)
@@ -22,6 +22,11 @@
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-animation-002.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-animation-003.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-animation-004.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-parsing-001.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html
 /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js	2018-04-20 20:06:53 UTC (rev 230848)
@@ -3,7 +3,7 @@
 var distributionClasses = {"Stretch":"stretch", "SpaceAround":"space-around", "SpaceBetween":"space-between", "SpaceEvenly":"space-evenly"};
 var baselineClasses = {"Baseline":"baseline", "FirstBaseline":"first baseline", "LastBaseline":"last baseline"};
 var overflowClasses = {"SafeFlexEnd":"safe flex-end", "UnsafeEnd":"unsafe end", "SafeEnd":"safe end", "UnsafeFlexStart":"unsafe flex-start", "SafeCenter":"safe center"};
-var legacyClasses = {"LegacyLeft":"legacy left", "LegacyCenter":"legacy center", "LegacyRight":"legacy right", "LeftLegacy":"left legacy", "CenterLegacy":"center legacy", "RightLegacy":"right legacy", "Legacy":"legacy"};
+var legacyClasses = {"LegacyLeft":"legacy left", "LegacyCenter":"legacy center", "LegacyRight":"legacy right"};
 
 var invalidPositionValues = ["auto safe", "auto left", "normal unsafe", "normal stretch", "baseline normal",
                              "baseline center", "first baseline center", "last baseline center", "baseline last",

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -12,4 +12,9 @@
 PASS Checking place-self: baseline 
 PASS Checking place-self: first baseline 
 PASS Checking place-self: last baseline 
+PASS Checking place-self: safe flex-end 
+PASS Checking place-self: unsafe end 
+PASS Checking place-self: safe end 
+PASS Checking place-self: unsafe flex-start 
+PASS Checking place-self: safe center 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -9,7 +9,7 @@
 <div id="log"></div>
 <script>
     let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
-                                baselineClasses);
+                                baselineClasses, overflowClasses);
     for (var key in classes) {
         let value = classes[key];
         test(function() {

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -14,6 +14,11 @@
 PASS Checking place-self: auto baseline 
 PASS Checking place-self: auto first baseline 
 PASS Checking place-self: auto last baseline 
+PASS Checking place-self: auto safe flex-end 
+PASS Checking place-self: auto unsafe end 
+PASS Checking place-self: auto safe end 
+PASS Checking place-self: auto unsafe flex-start 
+PASS Checking place-self: auto safe center 
 PASS Checking place-self: normal left 
 PASS Checking place-self: normal right 
 PASS Checking place-self: normal auto 
@@ -29,6 +34,11 @@
 PASS Checking place-self: normal baseline 
 PASS Checking place-self: normal first baseline 
 PASS Checking place-self: normal last baseline 
+PASS Checking place-self: normal safe flex-end 
+PASS Checking place-self: normal unsafe end 
+PASS Checking place-self: normal safe end 
+PASS Checking place-self: normal unsafe flex-start 
+PASS Checking place-self: normal safe center 
 PASS Checking place-self: stretch left 
 PASS Checking place-self: stretch right 
 PASS Checking place-self: stretch auto 
@@ -44,6 +54,11 @@
 PASS Checking place-self: stretch baseline 
 PASS Checking place-self: stretch first baseline 
 PASS Checking place-self: stretch last baseline 
+PASS Checking place-self: stretch safe flex-end 
+PASS Checking place-self: stretch unsafe end 
+PASS Checking place-self: stretch safe end 
+PASS Checking place-self: stretch unsafe flex-start 
+PASS Checking place-self: stretch safe center 
 PASS Checking place-self: start left 
 PASS Checking place-self: start right 
 PASS Checking place-self: start auto 
@@ -59,6 +74,11 @@
 PASS Checking place-self: start baseline 
 PASS Checking place-self: start first baseline 
 PASS Checking place-self: start last baseline 
+PASS Checking place-self: start safe flex-end 
+PASS Checking place-self: start unsafe end 
+PASS Checking place-self: start safe end 
+PASS Checking place-self: start unsafe flex-start 
+PASS Checking place-self: start safe center 
 PASS Checking place-self: end left 
 PASS Checking place-self: end right 
 PASS Checking place-self: end auto 
@@ -74,6 +94,11 @@
 PASS Checking place-self: end baseline 
 PASS Checking place-self: end first baseline 
 PASS Checking place-self: end last baseline 
+PASS Checking place-self: end safe flex-end 
+PASS Checking place-self: end unsafe end 
+PASS Checking place-self: end safe end 
+PASS Checking place-self: end unsafe flex-start 
+PASS Checking place-self: end safe center 
 PASS Checking place-self: self-start left 
 PASS Checking place-self: self-start right 
 PASS Checking place-self: self-start auto 
@@ -89,6 +114,11 @@
 PASS Checking place-self: self-start baseline 
 PASS Checking place-self: self-start first baseline 
 PASS Checking place-self: self-start last baseline 
+PASS Checking place-self: self-start safe flex-end 
+PASS Checking place-self: self-start unsafe end 
+PASS Checking place-self: self-start safe end 
+PASS Checking place-self: self-start unsafe flex-start 
+PASS Checking place-self: self-start safe center 
 PASS Checking place-self: self-end left 
 PASS Checking place-self: self-end right 
 PASS Checking place-self: self-end auto 
@@ -104,6 +134,11 @@
 PASS Checking place-self: self-end baseline 
 PASS Checking place-self: self-end first baseline 
 PASS Checking place-self: self-end last baseline 
+PASS Checking place-self: self-end safe flex-end 
+PASS Checking place-self: self-end unsafe end 
+PASS Checking place-self: self-end safe end 
+PASS Checking place-self: self-end unsafe flex-start 
+PASS Checking place-self: self-end safe center 
 PASS Checking place-self: center left 
 PASS Checking place-self: center right 
 PASS Checking place-self: center auto 
@@ -119,6 +154,11 @@
 PASS Checking place-self: center baseline 
 PASS Checking place-self: center first baseline 
 PASS Checking place-self: center last baseline 
+PASS Checking place-self: center safe flex-end 
+PASS Checking place-self: center unsafe end 
+PASS Checking place-self: center safe end 
+PASS Checking place-self: center unsafe flex-start 
+PASS Checking place-self: center safe center 
 PASS Checking place-self: flex-start left 
 PASS Checking place-self: flex-start right 
 PASS Checking place-self: flex-start auto 
@@ -134,6 +174,11 @@
 PASS Checking place-self: flex-start baseline 
 PASS Checking place-self: flex-start first baseline 
 PASS Checking place-self: flex-start last baseline 
+PASS Checking place-self: flex-start safe flex-end 
+PASS Checking place-self: flex-start unsafe end 
+PASS Checking place-self: flex-start safe end 
+PASS Checking place-self: flex-start unsafe flex-start 
+PASS Checking place-self: flex-start safe center 
 PASS Checking place-self: flex-end left 
 PASS Checking place-self: flex-end right 
 PASS Checking place-self: flex-end auto 
@@ -149,6 +194,11 @@
 PASS Checking place-self: flex-end baseline 
 PASS Checking place-self: flex-end first baseline 
 PASS Checking place-self: flex-end last baseline 
+PASS Checking place-self: flex-end safe flex-end 
+PASS Checking place-self: flex-end unsafe end 
+PASS Checking place-self: flex-end safe end 
+PASS Checking place-self: flex-end unsafe flex-start 
+PASS Checking place-self: flex-end safe center 
 PASS Checking place-self: baseline left 
 PASS Checking place-self: baseline right 
 PASS Checking place-self: baseline auto 
@@ -164,6 +214,11 @@
 PASS Checking place-self: baseline baseline 
 PASS Checking place-self: baseline first baseline 
 PASS Checking place-self: baseline last baseline 
+PASS Checking place-self: baseline safe flex-end 
+PASS Checking place-self: baseline unsafe end 
+PASS Checking place-self: baseline safe end 
+PASS Checking place-self: baseline unsafe flex-start 
+PASS Checking place-self: baseline safe center 
 PASS Checking place-self: first baseline left 
 PASS Checking place-self: first baseline right 
 PASS Checking place-self: first baseline auto 
@@ -179,6 +234,11 @@
 PASS Checking place-self: first baseline baseline 
 PASS Checking place-self: first baseline first baseline 
 PASS Checking place-self: first baseline last baseline 
+PASS Checking place-self: first baseline safe flex-end 
+PASS Checking place-self: first baseline unsafe end 
+PASS Checking place-self: first baseline safe end 
+PASS Checking place-self: first baseline unsafe flex-start 
+PASS Checking place-self: first baseline safe center 
 PASS Checking place-self: last baseline left 
 PASS Checking place-self: last baseline right 
 PASS Checking place-self: last baseline auto 
@@ -194,4 +254,109 @@
 PASS Checking place-self: last baseline baseline 
 PASS Checking place-self: last baseline first baseline 
 PASS Checking place-self: last baseline last baseline 
+PASS Checking place-self: last baseline safe flex-end 
+PASS Checking place-self: last baseline unsafe end 
+PASS Checking place-self: last baseline safe end 
+PASS Checking place-self: last baseline unsafe flex-start 
+PASS Checking place-self: last baseline safe center 
+PASS Checking place-self: safe flex-end left 
+PASS Checking place-self: safe flex-end right 
+PASS Checking place-self: safe flex-end auto 
+PASS Checking place-self: safe flex-end normal 
+PASS Checking place-self: safe flex-end stretch 
+PASS Checking place-self: safe flex-end start 
+PASS Checking place-self: safe flex-end end 
+PASS Checking place-self: safe flex-end self-start 
+PASS Checking place-self: safe flex-end self-end 
+PASS Checking place-self: safe flex-end center 
+PASS Checking place-self: safe flex-end flex-start 
+PASS Checking place-self: safe flex-end flex-end 
+PASS Checking place-self: safe flex-end baseline 
+PASS Checking place-self: safe flex-end first baseline 
+PASS Checking place-self: safe flex-end last baseline 
+PASS Checking place-self: safe flex-end safe flex-end 
+PASS Checking place-self: safe flex-end unsafe end 
+PASS Checking place-self: safe flex-end safe end 
+PASS Checking place-self: safe flex-end unsafe flex-start 
+PASS Checking place-self: safe flex-end safe center 
+PASS Checking place-self: unsafe end left 
+PASS Checking place-self: unsafe end right 
+PASS Checking place-self: unsafe end auto 
+PASS Checking place-self: unsafe end normal 
+PASS Checking place-self: unsafe end stretch 
+PASS Checking place-self: unsafe end start 
+PASS Checking place-self: unsafe end end 
+PASS Checking place-self: unsafe end self-start 
+PASS Checking place-self: unsafe end self-end 
+PASS Checking place-self: unsafe end center 
+PASS Checking place-self: unsafe end flex-start 
+PASS Checking place-self: unsafe end flex-end 
+PASS Checking place-self: unsafe end baseline 
+PASS Checking place-self: unsafe end first baseline 
+PASS Checking place-self: unsafe end last baseline 
+PASS Checking place-self: unsafe end safe flex-end 
+PASS Checking place-self: unsafe end unsafe end 
+PASS Checking place-self: unsafe end safe end 
+PASS Checking place-self: unsafe end unsafe flex-start 
+PASS Checking place-self: unsafe end safe center 
+PASS Checking place-self: safe end left 
+PASS Checking place-self: safe end right 
+PASS Checking place-self: safe end auto 
+PASS Checking place-self: safe end normal 
+PASS Checking place-self: safe end stretch 
+PASS Checking place-self: safe end start 
+PASS Checking place-self: safe end end 
+PASS Checking place-self: safe end self-start 
+PASS Checking place-self: safe end self-end 
+PASS Checking place-self: safe end center 
+PASS Checking place-self: safe end flex-start 
+PASS Checking place-self: safe end flex-end 
+PASS Checking place-self: safe end baseline 
+PASS Checking place-self: safe end first baseline 
+PASS Checking place-self: safe end last baseline 
+PASS Checking place-self: safe end safe flex-end 
+PASS Checking place-self: safe end unsafe end 
+PASS Checking place-self: safe end safe end 
+PASS Checking place-self: safe end unsafe flex-start 
+PASS Checking place-self: safe end safe center 
+PASS Checking place-self: unsafe flex-start left 
+PASS Checking place-self: unsafe flex-start right 
+PASS Checking place-self: unsafe flex-start auto 
+PASS Checking place-self: unsafe flex-start normal 
+PASS Checking place-self: unsafe flex-start stretch 
+PASS Checking place-self: unsafe flex-start start 
+PASS Checking place-self: unsafe flex-start end 
+PASS Checking place-self: unsafe flex-start self-start 
+PASS Checking place-self: unsafe flex-start self-end 
+PASS Checking place-self: unsafe flex-start center 
+PASS Checking place-self: unsafe flex-start flex-start 
+PASS Checking place-self: unsafe flex-start flex-end 
+PASS Checking place-self: unsafe flex-start baseline 
+PASS Checking place-self: unsafe flex-start first baseline 
+PASS Checking place-self: unsafe flex-start last baseline 
+PASS Checking place-self: unsafe flex-start safe flex-end 
+PASS Checking place-self: unsafe flex-start unsafe end 
+PASS Checking place-self: unsafe flex-start safe end 
+PASS Checking place-self: unsafe flex-start unsafe flex-start 
+PASS Checking place-self: unsafe flex-start safe center 
+PASS Checking place-self: safe center left 
+PASS Checking place-self: safe center right 
+PASS Checking place-self: safe center auto 
+PASS Checking place-self: safe center normal 
+PASS Checking place-self: safe center stretch 
+PASS Checking place-self: safe center start 
+PASS Checking place-self: safe center end 
+PASS Checking place-self: safe center self-start 
+PASS Checking place-self: safe center self-end 
+PASS Checking place-self: safe center center 
+PASS Checking place-self: safe center flex-start 
+PASS Checking place-self: safe center flex-end 
+PASS Checking place-self: safe center baseline 
+PASS Checking place-self: safe center first baseline 
+PASS Checking place-self: safe center last baseline 
+PASS Checking place-self: safe center safe flex-end 
+PASS Checking place-self: safe center unsafe end 
+PASS Checking place-self: safe center safe end 
+PASS Checking place-self: safe center unsafe flex-start 
+PASS Checking place-self: safe center safe center 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -9,7 +9,7 @@
 <div id="log"></div>
 <script>
     let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
-                                baselineClasses);
+                                baselineClasses, overflowClasses);
     for (var key1 in classes) {
         let alignValue = classes[key1];
         let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt	2018-04-20 20:06:53 UTC (rev 230848)
@@ -1,5 +1,4 @@
 
-PASS Verify overflow keywords are invalid 
 PASS Verify fallback values are invalid 
 PASS Verify 'left' and 'right' values are invalid for block/cross axis alignment 
 PASS Verify numeric values are invalid 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html (230847 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html	2018-04-20 20:06:53 UTC (rev 230848)
@@ -14,12 +14,7 @@
     }
 
     test(function() {
-        checkInvalidValues("safe center")
-        checkInvalidValues("unsafe center")
-    }, "Verify overflow keywords are invalid");
-
-    test(function() {
-        checkInvalidValues("center space-between start")
+        checkInvalidValues("center end start")
     }, "Verify fallback values are invalid");
 
     test(function() {

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/w3c-import.log (0 => 230848)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/w3c-import.log	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/w3c-import.log	2018-04-20 20:06:53 UTC (rev 230848)
@@ -0,0 +1,17 @@
+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the WPT github:
+	https://github.com/w3c/web-platform-tests
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/OWNERS

Modified: trunk/Source/WebCore/ChangeLog (230847 => 230848)


--- trunk/Source/WebCore/ChangeLog	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/Source/WebCore/ChangeLog	2018-04-20 20:06:53 UTC (rev 230848)
@@ -1,3 +1,34 @@
+2018-04-20  Javier Fernandez  <jfernan...@igalia.com>
+
+        Update Alignment shorthands to the spec now that they are not ambiguous
+        https://bugs.webkit.org/show_bug.cgi?id=184812
+
+        Reviewed by Antti Koivisto.
+
+        Now that the issue [1] about the syntax ambiguity has been resolved we
+        don't need to use the custom syntax anymore. The Alignment shorthands
+        use now the simple syntax, defined based on the longhands' syntax.
+
+        Since we allow all the values valid for each longhand, we'll update
+        in this CL the corresponding web platform tests. Additionally, this CL
+        updates also the shorthand serialization tests [2], which didn't
+        consider the new value 'legacy' for justify-items (and place-items) due
+        to the bug [3] Firefox still has pending to be fixed.
+
+        [1] https://github.com/w3c/csswg-drafts/issues/1001
+        [2] css/css-align/default-alignment/shorthand-serialization-001.html
+        [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1363875
+
+        Tests: imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html
+               imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html
+               imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html
+               imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::CSSPropertyParser::consumePlaceContentShorthand): Using the justify-content and align-content parsing logic to parse the shorthand.
+        (WebCore::CSSPropertyParser::consumePlaceItemsShorthand): Using the justify-items and align-items parsing logic to parse the shorthand.
+        (WebCore::CSSPropertyParser::consumePlaceSelfShorthand): Using the justify-self and align-self parsing logic to parse the shorthand.
+
 2018-04-20  Daniel Bates  <daba...@apple.com>
 
         Unreviewed, rolling out r230117.

Modified: trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp (230847 => 230848)


--- trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp	2018-04-20 19:39:52 UTC (rev 230847)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp	2018-04-20 20:06:53 UTC (rev 230848)
@@ -5514,23 +5514,6 @@
     return true;
 }
 
-static RefPtr<CSSValue> consumeSimplifiedContentPosition(CSSParserTokenRange& range, IsPositionKeyword isPositionKeyword)
-{
-    ASSERT(isPositionKeyword);
-    CSSValueID id = range.peek().id();
-    if (identMatches<CSSValueNormal>(id) || isPositionKeyword(id))
-        return CSSContentDistributionValue::create(CSSValueInvalid, range.consumeIncludingWhitespace().id(), CSSValueInvalid);
-    if (isBaselineKeyword(id)) {
-        RefPtr<CSSValue> baseline = consumeBaselineKeyword(range);
-        if (!baseline)
-            return nullptr;
-        return CSSContentDistributionValue::create(CSSValueInvalid, getBaselineKeyword(baseline.releaseNonNull()), CSSValueInvalid);
-    }
-    if (isContentDistributionKeyword(id))
-        return CSSContentDistributionValue::create(range.consumeIncludingWhitespace().id(), CSSValueInvalid, CSSValueInvalid);
-    return nullptr;
-}
-
 bool CSSPropertyParser::consumePlaceContentShorthand(bool important)
 {
     ASSERT(shorthandForProperty(CSSPropertyPlaceContent).length() == 2);
@@ -5538,8 +5521,9 @@
     if (m_range.atEnd())
         return false;
 
+    CSSParserTokenRange rangeCopy = m_range;
     bool isBaseline = isBaselineKeyword(m_range.peek().id());
-    RefPtr<CSSValue> alignContentValue = consumeSimplifiedContentPosition(m_range, isContentPositionKeyword);
+    RefPtr<CSSValue> alignContentValue = consumeContentDistributionOverflowPosition(m_range, isContentPositionKeyword);
     if (!alignContentValue)
         return false;
 
@@ -5549,7 +5533,9 @@
     if (isBaselineKeyword(m_range.peek().id()))
         return false;
 
-    RefPtr<CSSValue> justifyContentValue = m_range.atEnd() ? alignContentValue : consumeSimplifiedContentPosition(m_range, isContentPositionOrLeftOrRightKeyword);
+    if (m_range.atEnd())
+        m_range = rangeCopy;
+    RefPtr<CSSValue> justifyContentValue = consumeContentDistributionOverflowPosition(m_range, isContentPositionOrLeftOrRightKeyword);
     if (!justifyContentValue)
         return false;
     if (!m_range.atEnd())
@@ -5560,35 +5546,18 @@
     return true;
 }
 
-static RefPtr<CSSValue> consumeSimplifiedDefaultPosition(CSSParserTokenRange& range, IsPositionKeyword isPositionKeyword)
-{
-    ASSERT(isPositionKeyword);
-    CSSValueID id = range.peek().id();
-    if (isNormalOrStretch(id) || isPositionKeyword(id))
-        return consumeIdent(range);
-
-    if (isBaselineKeyword(id))
-        return consumeBaselineKeyword(range);
-
-    return nullptr;
-}
-
-static RefPtr<CSSValue> consumeSimplifiedSelfPosition(CSSParserTokenRange& range, IsPositionKeyword isPositionKeyword)
-{
-    ASSERT(isPositionKeyword);
-    if (isAuto(range.peek().id()))
-        return consumeIdent(range);
-    return consumeSimplifiedDefaultPosition(range, isPositionKeyword);
-}
-
 bool CSSPropertyParser::consumePlaceItemsShorthand(bool important)
 {
     ASSERT(shorthandForProperty(CSSPropertyPlaceItems).length() == 2);
 
-    RefPtr<CSSValue> alignItemsValue = consumeSimplifiedDefaultPosition(m_range, isSelfPositionKeyword);
+    CSSParserTokenRange rangeCopy = m_range;
+    RefPtr<CSSValue> alignItemsValue = consumeAlignItems(m_range);
     if (!alignItemsValue)
         return false;
-    RefPtr<CSSValue> justifyItemsValue = m_range.atEnd() ? alignItemsValue : consumeSimplifiedDefaultPosition(m_range, isSelfPositionOrLeftOrRightKeyword);
+
+    if (m_range.atEnd())
+        m_range = rangeCopy;
+    RefPtr<CSSValue> justifyItemsValue = consumeJustifyItems(m_range);
     if (!justifyItemsValue)
         return false;
 
@@ -5604,10 +5573,14 @@
 {
     ASSERT(shorthandForProperty(CSSPropertyPlaceSelf).length() == 2);
 
-    RefPtr<CSSValue> alignSelfValue = consumeSimplifiedSelfPosition(m_range, isSelfPositionKeyword);
+    CSSParserTokenRange rangeCopy = m_range;
+    RefPtr<CSSValue> alignSelfValue = consumeSelfPositionOverflowPosition(m_range, isSelfPositionKeyword);
     if (!alignSelfValue)
         return false;
-    RefPtr<CSSValue> justifySelfValue = m_range.atEnd() ? alignSelfValue : consumeSimplifiedSelfPosition(m_range, isSelfPositionOrLeftOrRightKeyword);
+
+    if (m_range.atEnd())
+        m_range = rangeCopy;
+    RefPtr<CSSValue> justifySelfValue = consumeSelfPositionOverflowPosition(m_range, isSelfPositionOrLeftOrRightKeyword);
     if (!justifySelfValue)
         return false;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to