<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[230848] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/230848">230848</a></dd>
<dt>Author</dt> <dd>jfernandez@igalia.com</dd>
<dt>Date</dt> <dd>2018-04-20 13:06:53 -0700 (Fri, 20 Apr 2018)</dd>
</dl>

<h3>Log Message</h3>
<pre>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.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand002html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand004expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand004html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems003expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems003html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand002html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand004expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand004html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignresourcesalignmentparsingutilsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand002html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand004expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand004html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSPropertyParsercpp">trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentshorthandserialization001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentshorthandserialization001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalcomputed001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalcomputed001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused001expectedxht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused001html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused002expectedxht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused002html">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssalignw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/w3c-import.log</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,54 @@
</span><ins>+2018-04-20  Javier Fernandez  <jfernandez@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.
+
</ins><span class="cx"> 2018-04-18  Youenn Fablet  <youenn@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Allow cross-origin redirections for synchronous XHR
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/OWNERS (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+@dholbert
+@emilio
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -9,4 +9,9 @@
</span><span class="cx"> PASS Checking place-content: space-around 
</span><span class="cx"> PASS Checking place-content: space-between 
</span><span class="cx"> PASS Checking place-content: space-evenly 
</span><ins>+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 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand001html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx"> <script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><del>-    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses);
</del><ins>+    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, overflowClasses);
</ins><span class="cx">     for (var key in classes) {
</span><span class="cx">         let value = classes[key];
</span><span class="cx">         test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand002expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -155,4 +155,64 @@
</span><span class="cx"> PASS Checking place-content: last baseline space-around 
</span><span class="cx"> PASS Checking place-content: last baseline space-between 
</span><span class="cx"> PASS Checking place-content: last baseline space-evenly 
</span><ins>+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 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand002html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -8,10 +8,12 @@
</span><span class="cx"> <script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><del>-    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, baselineClasses);
</del><ins>+    let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, baselineClasses,
+                                overflowClasses);
</ins><span class="cx">     for (var key1 in classes) {
</span><span class="cx">         let alignValue = classes[key1];
</span><del>-        let classes2 = Object.assign({"Normal":"normal", "Left":"left", "Right":"right"}, contentPositionClasses, distributionClasses);
</del><ins>+        let classes2 = Object.assign({"Normal":"normal", "Left":"left", "Right":"right"}, contentPositionClasses,
+                                     distributionClasses);
</ins><span class="cx">         for (var key2 in classes2) {
</span><span class="cx">             let justifyValue = classes2[key2];
</span><span class="cx">             test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand004expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,5 +1,4 @@
</span><span class="cx"> 
</span><del>-PASS Verify overflow keywords are invalid 
</del><span class="cx"> PASS Verify fallback values are invalid 
</span><span class="cx"> PASS Verify 'left' and 'right' values are invalid for block/cross axis alignment 
</span><span class="cx"> PASS Verify <baseline-position> values are invalid for the justify-content property 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligncontentdistributionplacecontentshorthand004html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -14,11 +14,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span><del>-        checkInvalidValues("safe center")
-        checkInvalidValues("unsafe center")
-    }, "Verify overflow keywords are invalid");
-
-    test(function() {
</del><span class="cx">         checkInvalidValues("center space-between start")
</span><span class="cx">     }, "Verify fallback values are invalid");
</span><span class="cx"> 
</span><span class="lines">@@ -29,8 +24,6 @@
</span><span class="cx">     }, "Verify 'left' and 'right' values are invalid for block/cross axis alignment");
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span><del>-        checkInvalidValues("baseline")
-        checkInvalidValues("first baseline")
</del><span class="cx">         checkInvalidValues("start baseline")
</span><span class="cx">         checkInvalidValues("end last baseline")
</span><span class="cx">     }, "Verify <baseline-position> values are invalid for the justify-content property");
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -18,4 +18,7 @@
</span><span class="cx"> PASS Checking justify-items: safe end 
</span><span class="cx"> PASS Checking justify-items: unsafe flex-start 
</span><span class="cx"> PASS Checking justify-items: safe center 
</span><ins>+PASS Checking justify-items: legacy left 
+PASS Checking justify-items: legacy center 
+PASS Checking justify-items: legacy right 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems001html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx">     let classes = Object.assign({"Normal":"normal", "Stretch":"stretch", "Left":"left", "Right":"right"},
</span><del>-                                selfPositionClasses, baselineClasses, overflowClasses);
</del><ins>+                                selfPositionClasses, baselineClasses, overflowClasses, legacyClasses);
</ins><span class="cx"> 
</span><span class="cx">     for (var key in classes) {
</span><span class="cx">         let specifiedValue = classes[key];
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems003expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -18,4 +18,7 @@
</span><span class="cx"> PASS Checking justify-items: safe end 
</span><span class="cx"> PASS Checking justify-items: unsafe flex-start 
</span><span class="cx"> PASS Checking justify-items: safe center 
</span><ins>+PASS Checking justify-items: legacy left 
+PASS Checking justify-items: legacy center 
+PASS Checking justify-items: legacy right 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentparsejustifyitems003html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -17,7 +17,7 @@
</span><span class="cx">     document.body.appendChild(element);
</span><span class="cx"> 
</span><span class="cx">     let classes = Object.assign({"Normal":"normal", "Stretch":"stretch", "Left":"left", "Right":"right"},
</span><del>-                                selfPositionClasses, baselineClasses, overflowClasses);
</del><ins>+                                selfPositionClasses, baselineClasses, overflowClasses, legacyClasses);
</ins><span class="cx"> 
</span><span class="cx">     for (var key in classes) {
</span><span class="cx">         let specifiedValue = classes[key];
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -11,4 +11,9 @@
</span><span class="cx"> PASS Checking place-items: baseline 
</span><span class="cx"> PASS Checking place-items: first baseline 
</span><span class="cx"> PASS Checking place-items: last baseline 
</span><ins>+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 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand001html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -8,7 +8,8 @@
</span><span class="cx"> <script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><del>-    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses);
</del><ins>+    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses,
+                                overflowClasses);
</ins><span class="cx">     for (var key in classes) {
</span><span class="cx">         let value = classes[key];
</span><span class="cx">         test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand002expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,6 +1,9 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Checking place-items: normal left 
</span><span class="cx"> PASS Checking place-items: normal right 
</span><ins>+PASS Checking place-items: normal legacy left 
+PASS Checking place-items: normal legacy center 
+PASS Checking place-items: normal legacy right 
</ins><span class="cx"> PASS Checking place-items: normal normal 
</span><span class="cx"> PASS Checking place-items: normal stretch 
</span><span class="cx"> PASS Checking place-items: normal start 
</span><span class="lines">@@ -13,8 +16,16 @@
</span><span class="cx"> PASS Checking place-items: normal baseline 
</span><span class="cx"> PASS Checking place-items: normal first baseline 
</span><span class="cx"> PASS Checking place-items: normal last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: stretch left 
</span><span class="cx"> PASS Checking place-items: stretch right 
</span><ins>+PASS Checking place-items: stretch legacy left 
+PASS Checking place-items: stretch legacy center 
+PASS Checking place-items: stretch legacy right 
</ins><span class="cx"> PASS Checking place-items: stretch normal 
</span><span class="cx"> PASS Checking place-items: stretch stretch 
</span><span class="cx"> PASS Checking place-items: stretch start 
</span><span class="lines">@@ -27,8 +38,16 @@
</span><span class="cx"> PASS Checking place-items: stretch baseline 
</span><span class="cx"> PASS Checking place-items: stretch first baseline 
</span><span class="cx"> PASS Checking place-items: stretch last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: start left 
</span><span class="cx"> PASS Checking place-items: start right 
</span><ins>+PASS Checking place-items: start legacy left 
+PASS Checking place-items: start legacy center 
+PASS Checking place-items: start legacy right 
</ins><span class="cx"> PASS Checking place-items: start normal 
</span><span class="cx"> PASS Checking place-items: start stretch 
</span><span class="cx"> PASS Checking place-items: start start 
</span><span class="lines">@@ -41,8 +60,16 @@
</span><span class="cx"> PASS Checking place-items: start baseline 
</span><span class="cx"> PASS Checking place-items: start first baseline 
</span><span class="cx"> PASS Checking place-items: start last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: end left 
</span><span class="cx"> PASS Checking place-items: end right 
</span><ins>+PASS Checking place-items: end legacy left 
+PASS Checking place-items: end legacy center 
+PASS Checking place-items: end legacy right 
</ins><span class="cx"> PASS Checking place-items: end normal 
</span><span class="cx"> PASS Checking place-items: end stretch 
</span><span class="cx"> PASS Checking place-items: end start 
</span><span class="lines">@@ -55,8 +82,16 @@
</span><span class="cx"> PASS Checking place-items: end baseline 
</span><span class="cx"> PASS Checking place-items: end first baseline 
</span><span class="cx"> PASS Checking place-items: end last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: self-start left 
</span><span class="cx"> PASS Checking place-items: self-start right 
</span><ins>+PASS Checking place-items: self-start legacy left 
+PASS Checking place-items: self-start legacy center 
+PASS Checking place-items: self-start legacy right 
</ins><span class="cx"> PASS Checking place-items: self-start normal 
</span><span class="cx"> PASS Checking place-items: self-start stretch 
</span><span class="cx"> PASS Checking place-items: self-start start 
</span><span class="lines">@@ -69,8 +104,16 @@
</span><span class="cx"> PASS Checking place-items: self-start baseline 
</span><span class="cx"> PASS Checking place-items: self-start first baseline 
</span><span class="cx"> PASS Checking place-items: self-start last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: self-end left 
</span><span class="cx"> PASS Checking place-items: self-end right 
</span><ins>+PASS Checking place-items: self-end legacy left 
+PASS Checking place-items: self-end legacy center 
+PASS Checking place-items: self-end legacy right 
</ins><span class="cx"> PASS Checking place-items: self-end normal 
</span><span class="cx"> PASS Checking place-items: self-end stretch 
</span><span class="cx"> PASS Checking place-items: self-end start 
</span><span class="lines">@@ -83,8 +126,16 @@
</span><span class="cx"> PASS Checking place-items: self-end baseline 
</span><span class="cx"> PASS Checking place-items: self-end first baseline 
</span><span class="cx"> PASS Checking place-items: self-end last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: center left 
</span><span class="cx"> PASS Checking place-items: center right 
</span><ins>+PASS Checking place-items: center legacy left 
+PASS Checking place-items: center legacy center 
+PASS Checking place-items: center legacy right 
</ins><span class="cx"> PASS Checking place-items: center normal 
</span><span class="cx"> PASS Checking place-items: center stretch 
</span><span class="cx"> PASS Checking place-items: center start 
</span><span class="lines">@@ -97,8 +148,16 @@
</span><span class="cx"> PASS Checking place-items: center baseline 
</span><span class="cx"> PASS Checking place-items: center first baseline 
</span><span class="cx"> PASS Checking place-items: center last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: flex-start left 
</span><span class="cx"> PASS Checking place-items: flex-start right 
</span><ins>+PASS Checking place-items: flex-start legacy left 
+PASS Checking place-items: flex-start legacy center 
+PASS Checking place-items: flex-start legacy right 
</ins><span class="cx"> PASS Checking place-items: flex-start normal 
</span><span class="cx"> PASS Checking place-items: flex-start stretch 
</span><span class="cx"> PASS Checking place-items: flex-start start 
</span><span class="lines">@@ -111,8 +170,16 @@
</span><span class="cx"> PASS Checking place-items: flex-start baseline 
</span><span class="cx"> PASS Checking place-items: flex-start first baseline 
</span><span class="cx"> PASS Checking place-items: flex-start last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: flex-end left 
</span><span class="cx"> PASS Checking place-items: flex-end right 
</span><ins>+PASS Checking place-items: flex-end legacy left 
+PASS Checking place-items: flex-end legacy center 
+PASS Checking place-items: flex-end legacy right 
</ins><span class="cx"> PASS Checking place-items: flex-end normal 
</span><span class="cx"> PASS Checking place-items: flex-end stretch 
</span><span class="cx"> PASS Checking place-items: flex-end start 
</span><span class="lines">@@ -125,8 +192,16 @@
</span><span class="cx"> PASS Checking place-items: flex-end baseline 
</span><span class="cx"> PASS Checking place-items: flex-end first baseline 
</span><span class="cx"> PASS Checking place-items: flex-end last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: baseline left 
</span><span class="cx"> PASS Checking place-items: baseline right 
</span><ins>+PASS Checking place-items: baseline legacy left 
+PASS Checking place-items: baseline legacy center 
+PASS Checking place-items: baseline legacy right 
</ins><span class="cx"> PASS Checking place-items: baseline normal 
</span><span class="cx"> PASS Checking place-items: baseline stretch 
</span><span class="cx"> PASS Checking place-items: baseline start 
</span><span class="lines">@@ -139,8 +214,16 @@
</span><span class="cx"> PASS Checking place-items: baseline baseline 
</span><span class="cx"> PASS Checking place-items: baseline first baseline 
</span><span class="cx"> PASS Checking place-items: baseline last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: first baseline left 
</span><span class="cx"> PASS Checking place-items: first baseline right 
</span><ins>+PASS Checking place-items: first baseline legacy left 
+PASS Checking place-items: first baseline legacy center 
+PASS Checking place-items: first baseline legacy right 
</ins><span class="cx"> PASS Checking place-items: first baseline normal 
</span><span class="cx"> PASS Checking place-items: first baseline stretch 
</span><span class="cx"> PASS Checking place-items: first baseline start 
</span><span class="lines">@@ -153,8 +236,16 @@
</span><span class="cx"> PASS Checking place-items: first baseline baseline 
</span><span class="cx"> PASS Checking place-items: first baseline first baseline 
</span><span class="cx"> PASS Checking place-items: first baseline last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-items: last baseline left 
</span><span class="cx"> PASS Checking place-items: last baseline right 
</span><ins>+PASS Checking place-items: last baseline legacy left 
+PASS Checking place-items: last baseline legacy center 
+PASS Checking place-items: last baseline legacy right 
</ins><span class="cx"> PASS Checking place-items: last baseline normal 
</span><span class="cx"> PASS Checking place-items: last baseline stretch 
</span><span class="cx"> PASS Checking place-items: last baseline start 
</span><span class="lines">@@ -167,4 +258,119 @@
</span><span class="cx"> PASS Checking place-items: last baseline baseline 
</span><span class="cx"> PASS Checking place-items: last baseline first baseline 
</span><span class="cx"> PASS Checking place-items: last baseline last baseline 
</span><ins>+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 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand002html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -8,10 +8,11 @@
</span><span class="cx"> <script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><del>-    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses);
</del><ins>+    let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses,
+                                overflowClasses);
</ins><span class="cx">     for (var key1 in classes) {
</span><span class="cx">         let alignValue = classes[key1];
</span><del>-        let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);
</del><ins>+        let classes2 = Object.assign({"Left":"left", "Right":"right"}, legacyClasses, classes);
</ins><span class="cx">         for (var key2 in classes2) {
</span><span class="cx">            let justifyValue = classes2[key2];
</span><span class="cx">            test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand004expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,9 +1,6 @@
</span><span class="cx"> 
</span><del>-PASS Verify overflow keywords are invalid 
</del><span class="cx"> PASS Verify fallback values are invalid 
</span><span class="cx"> PASS Verify 'left' and 'right' values are invalid for block/cross axis alignment 
</span><span class="cx"> PASS Verify numeric values are invalid 
</span><del>-PASS Verify 'auto' value is invalid. 
-PASS Verify 'legacy' value is invalid. 
</del><span class="cx"> PASS Verify empty declaration is invalid 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentplaceitemsshorthand004html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -14,12 +14,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span><del>-        checkInvalidValues("safe center")
-        checkInvalidValues("unsafe center")
-    }, "Verify overflow keywords are invalid");
-
-    test(function() {
-        checkInvalidValues("center space-between start")
</del><ins>+        checkInvalidValues("center end start")
</ins><span class="cx">     }, "Verify fallback values are invalid");
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span><span class="lines">@@ -34,23 +29,6 @@
</span><span class="cx">     }, "Verify numeric values are invalid");
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span><del>-       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() {
</del><span class="cx">         checkInvalidValues("")
</span><span class="cx">     }, "Verify empty declaration is invalid");
</span><span class="cx"> </script>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentshorthandserialization001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001-expected.txt (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+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"} 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentshorthandserialization001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,131 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset=utf-8>
+  <title>Test serialization of CSS Align shorthand properties</title>
+  <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+  <link rel="help" href="https://drafts.csswg.org/css-align/">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+</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>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligndefaultalignmentw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/w3c-import.log (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -32,3 +32,4 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-005.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-006.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalcomputed001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001-expected.txt (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+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 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalcomputed001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+<!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="https://florian.rivoal.net">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#column-row-gap">
+<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="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<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>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused001expectedxht"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001-expected.xht (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+<!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="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <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>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+<!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="https://florian.rivoal.net">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#column-row-gap">
+<meta assert="The used value of row-gap and column-gap normal for grids is 0">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
+<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>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused002expectedxht"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002-expected.xht (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+<!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="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
+  <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>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsgapnormalused002html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+<!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="https://florian.rivoal.net">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#column-row-gap">
+<meta assert="The used value row-gap:normal and column:normal normal is 0px in flexbox">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
+<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>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssaligngapsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/w3c-import.log (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -22,6 +22,11 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-animation-002.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-animation-003.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-animation-004.html
</span><ins>+/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
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/gap-parsing-001.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/grid-column-gap-parsing-001.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-align/gaps/grid-gap-parsing-001.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignresourcesalignmentparsingutilsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> var distributionClasses = {"Stretch":"stretch", "SpaceAround":"space-around", "SpaceBetween":"space-between", "SpaceEvenly":"space-evenly"};
</span><span class="cx"> var baselineClasses = {"Baseline":"baseline", "FirstBaseline":"first baseline", "LastBaseline":"last baseline"};
</span><span class="cx"> var overflowClasses = {"SafeFlexEnd":"safe flex-end", "UnsafeEnd":"unsafe end", "SafeEnd":"safe end", "UnsafeFlexStart":"unsafe flex-start", "SafeCenter":"safe center"};
</span><del>-var legacyClasses = {"LegacyLeft":"legacy left", "LegacyCenter":"legacy center", "LegacyRight":"legacy right", "LeftLegacy":"left legacy", "CenterLegacy":"center legacy", "RightLegacy":"right legacy", "Legacy":"legacy"};
</del><ins>+var legacyClasses = {"LegacyLeft":"legacy left", "LegacyCenter":"legacy center", "LegacyRight":"legacy right"};
</ins><span class="cx"> 
</span><span class="cx"> var invalidPositionValues = ["auto safe", "auto left", "normal unsafe", "normal stretch", "baseline normal",
</span><span class="cx">                              "baseline center", "first baseline center", "last baseline center", "baseline last",
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -12,4 +12,9 @@
</span><span class="cx"> PASS Checking place-self: baseline 
</span><span class="cx"> PASS Checking place-self: first baseline 
</span><span class="cx"> PASS Checking place-self: last baseline 
</span><ins>+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 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand001html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx">     let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
</span><del>-                                baselineClasses);
</del><ins>+                                baselineClasses, overflowClasses);
</ins><span class="cx">     for (var key in classes) {
</span><span class="cx">         let value = classes[key];
</span><span class="cx">         test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand002expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -14,6 +14,11 @@
</span><span class="cx"> PASS Checking place-self: auto baseline 
</span><span class="cx"> PASS Checking place-self: auto first baseline 
</span><span class="cx"> PASS Checking place-self: auto last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: normal left 
</span><span class="cx"> PASS Checking place-self: normal right 
</span><span class="cx"> PASS Checking place-self: normal auto 
</span><span class="lines">@@ -29,6 +34,11 @@
</span><span class="cx"> PASS Checking place-self: normal baseline 
</span><span class="cx"> PASS Checking place-self: normal first baseline 
</span><span class="cx"> PASS Checking place-self: normal last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: stretch left 
</span><span class="cx"> PASS Checking place-self: stretch right 
</span><span class="cx"> PASS Checking place-self: stretch auto 
</span><span class="lines">@@ -44,6 +54,11 @@
</span><span class="cx"> PASS Checking place-self: stretch baseline 
</span><span class="cx"> PASS Checking place-self: stretch first baseline 
</span><span class="cx"> PASS Checking place-self: stretch last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: start left 
</span><span class="cx"> PASS Checking place-self: start right 
</span><span class="cx"> PASS Checking place-self: start auto 
</span><span class="lines">@@ -59,6 +74,11 @@
</span><span class="cx"> PASS Checking place-self: start baseline 
</span><span class="cx"> PASS Checking place-self: start first baseline 
</span><span class="cx"> PASS Checking place-self: start last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: end left 
</span><span class="cx"> PASS Checking place-self: end right 
</span><span class="cx"> PASS Checking place-self: end auto 
</span><span class="lines">@@ -74,6 +94,11 @@
</span><span class="cx"> PASS Checking place-self: end baseline 
</span><span class="cx"> PASS Checking place-self: end first baseline 
</span><span class="cx"> PASS Checking place-self: end last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: self-start left 
</span><span class="cx"> PASS Checking place-self: self-start right 
</span><span class="cx"> PASS Checking place-self: self-start auto 
</span><span class="lines">@@ -89,6 +114,11 @@
</span><span class="cx"> PASS Checking place-self: self-start baseline 
</span><span class="cx"> PASS Checking place-self: self-start first baseline 
</span><span class="cx"> PASS Checking place-self: self-start last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: self-end left 
</span><span class="cx"> PASS Checking place-self: self-end right 
</span><span class="cx"> PASS Checking place-self: self-end auto 
</span><span class="lines">@@ -104,6 +134,11 @@
</span><span class="cx"> PASS Checking place-self: self-end baseline 
</span><span class="cx"> PASS Checking place-self: self-end first baseline 
</span><span class="cx"> PASS Checking place-self: self-end last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: center left 
</span><span class="cx"> PASS Checking place-self: center right 
</span><span class="cx"> PASS Checking place-self: center auto 
</span><span class="lines">@@ -119,6 +154,11 @@
</span><span class="cx"> PASS Checking place-self: center baseline 
</span><span class="cx"> PASS Checking place-self: center first baseline 
</span><span class="cx"> PASS Checking place-self: center last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: flex-start left 
</span><span class="cx"> PASS Checking place-self: flex-start right 
</span><span class="cx"> PASS Checking place-self: flex-start auto 
</span><span class="lines">@@ -134,6 +174,11 @@
</span><span class="cx"> PASS Checking place-self: flex-start baseline 
</span><span class="cx"> PASS Checking place-self: flex-start first baseline 
</span><span class="cx"> PASS Checking place-self: flex-start last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: flex-end left 
</span><span class="cx"> PASS Checking place-self: flex-end right 
</span><span class="cx"> PASS Checking place-self: flex-end auto 
</span><span class="lines">@@ -149,6 +194,11 @@
</span><span class="cx"> PASS Checking place-self: flex-end baseline 
</span><span class="cx"> PASS Checking place-self: flex-end first baseline 
</span><span class="cx"> PASS Checking place-self: flex-end last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: baseline left 
</span><span class="cx"> PASS Checking place-self: baseline right 
</span><span class="cx"> PASS Checking place-self: baseline auto 
</span><span class="lines">@@ -164,6 +214,11 @@
</span><span class="cx"> PASS Checking place-self: baseline baseline 
</span><span class="cx"> PASS Checking place-self: baseline first baseline 
</span><span class="cx"> PASS Checking place-self: baseline last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: first baseline left 
</span><span class="cx"> PASS Checking place-self: first baseline right 
</span><span class="cx"> PASS Checking place-self: first baseline auto 
</span><span class="lines">@@ -179,6 +234,11 @@
</span><span class="cx"> PASS Checking place-self: first baseline baseline 
</span><span class="cx"> PASS Checking place-self: first baseline first baseline 
</span><span class="cx"> PASS Checking place-self: first baseline last baseline 
</span><ins>+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 
</ins><span class="cx"> PASS Checking place-self: last baseline left 
</span><span class="cx"> PASS Checking place-self: last baseline right 
</span><span class="cx"> PASS Checking place-self: last baseline auto 
</span><span class="lines">@@ -194,4 +254,109 @@
</span><span class="cx"> PASS Checking place-self: last baseline baseline 
</span><span class="cx"> PASS Checking place-self: last baseline first baseline 
</span><span class="cx"> PASS Checking place-self: last baseline last baseline 
</span><ins>+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 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand002html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx">     let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
</span><del>-                                baselineClasses);
</del><ins>+                                baselineClasses, overflowClasses);
</ins><span class="cx">     for (var key1 in classes) {
</span><span class="cx">         let alignValue = classes[key1];
</span><span class="cx">         let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand004expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004-expected.txt (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,5 +1,4 @@
</span><span class="cx"> 
</span><del>-PASS Verify overflow keywords are invalid 
</del><span class="cx"> PASS Verify fallback values are invalid 
</span><span class="cx"> PASS Verify 'left' and 'right' values are invalid for block/cross axis alignment 
</span><span class="cx"> PASS Verify numeric values are invalid 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignselfalignmentplaceselfshorthand004html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -14,12 +14,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span><del>-        checkInvalidValues("safe center")
-        checkInvalidValues("unsafe center")
-    }, "Verify overflow keywords are invalid");
-
-    test(function() {
-        checkInvalidValues("center space-between start")
</del><ins>+        checkInvalidValues("center end start")
</ins><span class="cx">     }, "Verify fallback values are invalid");
</span><span class="cx"> 
</span><span class="cx">     test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssalignw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-align/w3c-import.log (0 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+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
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2018-04-20  Javier Fernandez  <jfernandez@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.
+
</ins><span class="cx"> 2018-04-20  Daniel Bates  <dabates@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r230117.
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSPropertyParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp (230847 => 230848)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -5514,23 +5514,6 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-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;
-}
-
</del><span class="cx"> bool CSSPropertyParser::consumePlaceContentShorthand(bool important)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(shorthandForProperty(CSSPropertyPlaceContent).length() == 2);
</span><span class="lines">@@ -5538,8 +5521,9 @@
</span><span class="cx">     if (m_range.atEnd())
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+    CSSParserTokenRange rangeCopy = m_range;
</ins><span class="cx">     bool isBaseline = isBaselineKeyword(m_range.peek().id());
</span><del>-    RefPtr<CSSValue> alignContentValue = consumeSimplifiedContentPosition(m_range, isContentPositionKeyword);
</del><ins>+    RefPtr<CSSValue> alignContentValue = consumeContentDistributionOverflowPosition(m_range, isContentPositionKeyword);
</ins><span class="cx">     if (!alignContentValue)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -5549,7 +5533,9 @@
</span><span class="cx">     if (isBaselineKeyword(m_range.peek().id()))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    RefPtr<CSSValue> justifyContentValue = m_range.atEnd() ? alignContentValue : consumeSimplifiedContentPosition(m_range, isContentPositionOrLeftOrRightKeyword);
</del><ins>+    if (m_range.atEnd())
+        m_range = rangeCopy;
+    RefPtr<CSSValue> justifyContentValue = consumeContentDistributionOverflowPosition(m_range, isContentPositionOrLeftOrRightKeyword);
</ins><span class="cx">     if (!justifyContentValue)
</span><span class="cx">         return false;
</span><span class="cx">     if (!m_range.atEnd())
</span><span class="lines">@@ -5560,35 +5546,18 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-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);
-}
-
</del><span class="cx"> bool CSSPropertyParser::consumePlaceItemsShorthand(bool important)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(shorthandForProperty(CSSPropertyPlaceItems).length() == 2);
</span><span class="cx"> 
</span><del>-    RefPtr<CSSValue> alignItemsValue = consumeSimplifiedDefaultPosition(m_range, isSelfPositionKeyword);
</del><ins>+    CSSParserTokenRange rangeCopy = m_range;
+    RefPtr<CSSValue> alignItemsValue = consumeAlignItems(m_range);
</ins><span class="cx">     if (!alignItemsValue)
</span><span class="cx">         return false;
</span><del>-    RefPtr<CSSValue> justifyItemsValue = m_range.atEnd() ? alignItemsValue : consumeSimplifiedDefaultPosition(m_range, isSelfPositionOrLeftOrRightKeyword);
</del><ins>+
+    if (m_range.atEnd())
+        m_range = rangeCopy;
+    RefPtr<CSSValue> justifyItemsValue = consumeJustifyItems(m_range);
</ins><span class="cx">     if (!justifyItemsValue)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -5604,10 +5573,14 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(shorthandForProperty(CSSPropertyPlaceSelf).length() == 2);
</span><span class="cx"> 
</span><del>-    RefPtr<CSSValue> alignSelfValue = consumeSimplifiedSelfPosition(m_range, isSelfPositionKeyword);
</del><ins>+    CSSParserTokenRange rangeCopy = m_range;
+    RefPtr<CSSValue> alignSelfValue = consumeSelfPositionOverflowPosition(m_range, isSelfPositionKeyword);
</ins><span class="cx">     if (!alignSelfValue)
</span><span class="cx">         return false;
</span><del>-    RefPtr<CSSValue> justifySelfValue = m_range.atEnd() ? alignSelfValue : consumeSimplifiedSelfPosition(m_range, isSelfPositionOrLeftOrRightKeyword);
</del><ins>+
+    if (m_range.atEnd())
+        m_range = rangeCopy;
+    RefPtr<CSSValue> justifySelfValue = consumeSelfPositionOverflowPosition(m_range, isSelfPositionOrLeftOrRightKeyword);
</ins><span class="cx">     if (!justifySelfValue)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>