Bug 1226697 part 2 - [css-grid] Add more tests that tests searching for lines in reverse, from the end of the grid, or from an *-end line and/or padding edge in the abs.pos. case.
authorMats Palmgren <mats@mozilla.com>
Tue, 22 Dec 2015 23:03:15 +0100
changeset 277340 6deafbb5f17180a20f7df9c7aa23ae6b02895c6a
parent 277339 aae162af8e00d5dccb1339dd597aad9585b7c89a
child 277341 1f0876a7e83d520ab0541cb8693bd0081c2e718b
push id69462
push usermpalmgren@mozilla.com
push dateTue, 22 Dec 2015 22:03:33 +0000
treeherdermozilla-inbound@1849d8dd6361 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1226697
milestone46.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1226697 part 2 - [css-grid] Add more tests that tests searching for lines in reverse, from the end of the grid, or from an *-end line and/or padding edge in the abs.pos. case.
layout/reftests/css-grid/grid-placement-named-lines-001-ref.html
layout/reftests/css-grid/grid-placement-named-lines-001.html
layout/reftests/css-grid/grid-placement-named-lines-002-ref.html
layout/reftests/css-grid/grid-placement-named-lines-002.html
layout/reftests/css-grid/grid-placement-named-lines-003-ref.html
layout/reftests/css-grid/grid-placement-named-lines-003.html
layout/reftests/css-grid/reftest.list
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-grid/grid-placement-named-lines-001-ref.html
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Reference: Placement involving named lines</title>
+  <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1226697">
+  <style type="text/css">
+body,html { color:black; background:white; font-size:12px; padding:0; margin:0; }
+
+.grid {
+  display: grid;
+  position: relative;
+  border: 1px solid;
+  grid-auto-rows: 15px;
+  grid-gap: 1px;
+}
+.t1 {
+  grid-template-columns: 40px 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px ;
+
+}
+.t2 {
+  grid-template-columns: 40px 40px 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px;
+}
+.t3 {
+  grid-template-columns: 40px 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px 40px;
+}
+
+x {
+  background: lime;
+  border: 1px solid;
+}
+y {
+  position: absolute;
+  border: 1px solid blue;
+  bottom:0;height:0;left:0;right:0;
+  grid-row-end:span 1!important;
+}
+.a2 { bottom:2px; }
+.a3 { bottom:4px; }
+.a4 { bottom:6px; }
+.a5 { bottom:8px; }
+
+  </style>
+</head>
+<body>
+
+<pre>
+grid-template-columns: [A-start] 60px 60px 60px;
+grid-template-areas: "B A";
+grid-auto-columns: 40px;
+grid-gap: 1px;
+</pre>
+
+<pre>grid-column-start:</pre>
+<div class="grid t1" style="padding-right:13px; border-right-width:5px">
+<x style="grid-row:1; grid-column-start:4; background:grey"></x>
+<x style="grid-row:2; grid-column-start:7">-1</x>
+<x style="grid-row:3; grid-column-start:7">4</x>
+<x style="grid-row:3; grid-column-start:6">-2</x>
+<x style="grid-row:3; grid-column-start:5">-3</x>
+<x style="grid-row:3; grid-column-start:4">-4</x>
+<x style="grid-row:3; grid-column-start:3">-5</x>
+<x style="grid-row:4; grid-column-start:5">A -1</x>
+<x style="grid-row:4; grid-column-start:3">B -1</x>
+<x style="grid-row:5; grid-column-start:4">A -2</x>
+<x style="grid-row:6; grid-column-start:3">A -3</x>
+<x style="grid-row:6; grid-column-start:2">A -4</x>
+<x style="grid-row:6; grid-column-start:1">A -5</x>
+<x style="grid-row:7; grid-column-start:4">A</x>
+<x style="grid-row:7; grid-column-start:4">B</x>
+<x style="grid-row:8; grid-column-start:4">A 1</x>
+<x style="grid-row:8; grid-column-start:5">A 2</x>
+<x style="grid-row:8; grid-column-start:8">A 3</x>
+<x style="grid-row:8; grid-column-start:9">A 4</x>
+<x style="grid-row:8; grid-column-start:10">A 5</x>
+<y style="grid-row:2; grid-column-start:7"></y>
+<y style="grid-row:3; grid-column-start:7"></y>
+<y style="grid-row:3; grid-column-start:6" class="a2"></y>
+<y style="grid-row:3; grid-column-start:5" class="a3"></y>
+<y style="grid-row:3; grid-column-start:4" class="a4"></y>
+<y style="grid-row:3; grid-column-start:3" class="a5"></y>
+<y style="grid-row:4; grid-column-start:5"></y>
+<y style="grid-row:4; grid-column-start:3" class="a2"></y>
+<y style="grid-row:5; grid-column-start:4"></y>
+<y style="grid-row:6; grid-column-start:3"></y>
+<y style="grid-row:6; grid-column-start:2" class="a2"></y>
+<y style="grid-row:6; grid-column-start:1" class="a3"></y>
+<y style="grid-row:7; grid-column-start:4"></y>
+<y style="grid-row:7; grid-column-start:4" class="a2"></y>
+<y style="grid-row:8; grid-column-start:4"></y>
+<y style="grid-row:8; grid-column-start:5" class="a2"></y>
+<y style="grid-row:8; grid-column-start:8" class="a3"></y>
+<y style="grid-row:8; grid-column-start:9" class="a4"></y>
+<y style="grid-row:8; grid-column-start:10" class="a5"></y>
+</div>
+
+<pre>grid-column-end:</pre>
+<div class="grid t2" style="padding-left:13px;">
+<x style="grid-row:1; grid-column-start:5; background:grey"></x>
+<x style="grid-row:2; grid-column-start:7">-1</x>
+<x style="grid-row:3; grid-column-start:7">4</x>
+<x style="grid-row:3; grid-column-start:6">-2</x>
+<x style="grid-row:3; grid-column-start:5">-3</x>
+<x style="grid-row:3; grid-column-start:4">-4</x>
+<x style="grid-row:3; grid-column-start:3">-5</x>
+<x style="grid-row:4; grid-column-start:5">A -1</x>
+<x style="grid-row:4; grid-column-start:3">B -1</x>
+<x style="grid-row:5; grid-column-start:4">A -2</x>
+<x style="grid-row:6; grid-column-start:3">A -3</x>
+<x style="grid-row:6; grid-column-start:2">A -4</x>
+<x style="grid-row:6; grid-column-start:1">A -5</x>
+<x style="grid-row:7; grid-column-start:4">A</x>
+<x style="grid-row:7; grid-column-start:5">B</x>
+<x style="grid-row:8; grid-column-start:4">A 1</x>
+<x style="grid-row:8; grid-column-start:5">A 2</x>
+<x style="grid-row:8; grid-column-start:8">A 3</x>
+<x style="grid-row:8; grid-column-start:9">A 4</x>
+<x style="grid-row:8; grid-column-start:10">A 5</x>
+<y style="grid-row:2; grid-column-end:8"></y>
+<y style="grid-row:3; grid-column-end:8"></y>
+<y style="grid-row:3; grid-column-end:7" class="a5"></y>
+<y style="grid-row:3; grid-column-end:6" class="a4"></y>
+<y style="grid-row:3; grid-column-end:5" class="a3"></y>
+<y style="grid-row:3; grid-column-end:4" class="a2"></y>
+<y style="grid-row:4; grid-column-end:6"></y>
+<y style="grid-row:4; grid-column-end:4" class="a2"></y>
+<y style="grid-row:5; grid-column-end:5"></y>
+<y style="grid-row:6; grid-column-end:4"></y>
+<y style="grid-row:6; grid-column-end:3" class="a2"></y>
+<y style="grid-row:6; grid-column-end:2" class="a3"></y>
+<y style="grid-row:7; grid-column-end:5"></y>
+<y style="grid-row:7; grid-column-end:6" class="a2"></y>
+<y style="grid-row:8; grid-column-end:5"></y>
+<y style="grid-row:8; grid-column-end:6" class="a2"></y>
+<y style="grid-row:8; grid-column-end:9" class="a3"></y>
+<y style="grid-row:8; grid-column-end:10" class="a4"></y>
+<y style="grid-row:8; grid-column-end:11" class="a5"></y>
+</div>
+
+<pre>grid-column: / span A-start 2</pre>
+<div class="grid t3">
+<x style="grid-row:1;  grid-column:4; background:grey"></x>
+<x style="grid-row:2;  grid-column:7/span 2;">-1</x>
+<x style="grid-row:3;  grid-column:7/span 2;">4</x>
+<x style="grid-row:4;  grid-column:6/span 3;">-2</x>
+<x style="grid-row:5;  grid-column:5/span 4;">-3</x>
+<x style="grid-row:6;  grid-column:4/span 4;">-4</x>
+<x style="grid-row:7;  grid-column:3/span 2;">-5</x>
+<x style="grid-row:8;  grid-column:5/span 4;">A -1</x>
+<x style="grid-row:9;  grid-column:3/span 2;">B -1</x>
+<x style="grid-row:10; grid-column:4/span 4;">A -2</x>
+<x style="grid-row:11; grid-column:3/span 2;">A -3</x>
+<x style="grid-row:12; grid-column:2/span 3;">A -4</x>
+<x style="grid-row:13; grid-column:1/span 4;">A -5</x>
+<x style="grid-row:14; grid-column:4/span 4;">A</x>
+<x style="grid-row:15; grid-column:4/span 4;">B</x>
+<x style="grid-row:16; grid-column:4/span 4;">A 1</x>
+<x style="grid-row:17; grid-column:5/span 4;">A 2</x>
+<x style="grid-row:18; grid-column:8/span 2;">A 3</x>
+<x style="grid-row:19; grid-column:9/span 2;">A 4</x>
+<x style="grid-row:20; grid-column:10/span 2;">A 5</x>
+<y style="grid-row:2;  grid-column:7/span 2;"></y>
+<y style="grid-row:3;  grid-column:7/span 2;"></y>
+<y style="grid-row:4;  grid-column:6/span 3;"></y>
+<y style="grid-row:5;  grid-column:5/span 4;"></y>
+<y style="grid-row:6;  grid-column:4/span 4;"></y>
+<y style="grid-row:7;  grid-column:3/span 2;"></y>
+<y style="grid-row:8;  grid-column:5/span 4;"></y>
+<y style="grid-row:9;  grid-column:3/span 2;"></y>
+<y style="grid-row:10; grid-column:4/span 4;"></y>
+<y style="grid-row:11; grid-column:3/span 2;"></y>
+<y style="grid-row:12; grid-column:2/span 3;"></y>
+<y style="grid-row:13; grid-column:1/span 4;"></y>
+<y style="grid-row:14; grid-column:4/span 4;"></y>
+<y style="grid-row:15; grid-column:4/span 4;"></y>
+<y style="grid-row:16; grid-column:4/span 4;"></y>
+<y style="grid-row:17; grid-column:5/span 4;"></y>
+<y style="grid-row:18; grid-column:8/span 2;"></y>
+<y style="grid-row:19; grid-column:9/span 2;"></y>
+<y style="grid-row:20; grid-column:10/span 2;"></y>
+</div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-grid/grid-placement-named-lines-001.html
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>CSS Grid Test: Placement involving named lines</title>
+  <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1226697">
+  <link rel="help" href="https://drafts.csswg.org/css-grid/#grid-placement-int">
+  <link rel="match" href="grid-placement-named-lines-001-ref.html">
+  <style type="text/css">
+body,html { color:black; background:white; font-size:12px; padding:0; margin:0; }
+
+.grid {
+  display: grid;
+  position: relative;
+  border: 1px solid;
+  grid-template-columns: [A-start] 60px 60px 60px;
+  grid-template-areas: "B A";
+  grid-auto-columns: 40px;
+  grid-auto-rows: 15px;
+  grid-gap: 1px;
+}
+
+x {
+  background: lime;
+  border: 1px solid;
+}
+y {
+  position: absolute;
+  border: 1px solid blue;
+  bottom:0;height:0;left:0;right:0;
+  grid-row-end:span 1!important;
+}
+.a2 { bottom:2px; }
+.a3 { bottom:4px; }
+.a4 { bottom:6px; }
+.a5 { bottom:8px; }
+
+  </style>
+</head>
+<body>
+
+<pre>
+grid-template-columns: [A-start] 60px 60px 60px;
+grid-template-areas: "B A";
+grid-auto-columns: 40px;
+grid-gap: 1px;
+</pre>
+
+<pre>grid-column-start:</pre>
+<div class="grid" style="padding-right:13px; border-right-width:5px">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column-start:-1">-1</x>
+<x style="grid-row:3; grid-column-start:4">4</x>
+<x style="grid-row:3; grid-column-start:-2">-2</x>
+<x style="grid-row:3; grid-column-start:-3">-3</x>
+<x style="grid-row:3; grid-column-start:-4">-4</x>
+<x style="grid-row:3; grid-column-start:-5">-5</x>
+<x style="grid-row:4; grid-column-start:A-start -1">A -1</x>
+<x style="grid-row:4; grid-column-start:B -1">B -1</x>
+<x style="grid-row:5; grid-column-start:A-start -2">A -2</x>
+<x style="grid-row:6; grid-column-start:A-start -3">A -3</x>
+<x style="grid-row:6; grid-column-start:A-start -4">A -4</x>
+<x style="grid-row:6; grid-column-start:A-start -5">A -5</x>
+<x style="grid-row:7; grid-column-start:A-start">A</x>
+<x style="grid-row:7; grid-column-start:B">B</x>
+<x style="grid-row:8; grid-column-start:A-start 1">A 1</x>
+<x style="grid-row:8; grid-column-start:A-start 2">A 2</x>
+<x style="grid-row:8; grid-column-start:A-start 3">A 3</x>
+<x style="grid-row:8; grid-column-start:A-start 4">A 4</x>
+<x style="grid-row:8; grid-column-start:A-start 5">A 5</x>
+<y style="grid-row:2; grid-column-start:-1"></y>
+<y style="grid-row:3; grid-column-start:4"></y>
+<y style="grid-row:3; grid-column-start:-2" class="a2"></y>
+<y style="grid-row:3; grid-column-start:-3" class="a3"></y>
+<y style="grid-row:3; grid-column-start:-4" class="a4"></y>
+<y style="grid-row:3; grid-column-start:-5" class="a5"></y>
+<y style="grid-row:4; grid-column-start:A-start -1"></y>
+<y style="grid-row:4; grid-column-start:B -1" class="a2"></y>
+<y style="grid-row:5; grid-column-start:A-start -2"></y>
+<y style="grid-row:6; grid-column-start:A-start -3"></y>
+<y style="grid-row:6; grid-column-start:A-start -4" class="a2"></y>
+<y style="grid-row:6; grid-column-start:A-start -5" class="a3"></y>
+<y style="grid-row:7; grid-column-start:A-start"></y>
+<y style="grid-row:7; grid-column-start:B" class="a2"></y>
+<y style="grid-row:8; grid-column-start:A-start 1"></y>
+<y style="grid-row:8; grid-column-start:A-start 2" class="a2"></y>
+<y style="grid-row:8; grid-column-start:A-start 3" class="a3"></y>
+<y style="grid-row:8; grid-column-start:A-start 4" class="a4"></y>
+<y style="grid-row:8; grid-column-start:A-start 5" class="a5"></y>
+</div>
+
+<pre>grid-column-end:</pre>
+<div class="grid" style="padding-left:13px;">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column-end:-1">-1</x>
+<x style="grid-row:3; grid-column-end:4">4</x>
+<x style="grid-row:3; grid-column-end:-5">-5</x>
+<x style="grid-row:3; grid-column-end:-4">-4</x>
+<x style="grid-row:3; grid-column-end:-3">-3</x>
+<x style="grid-row:3; grid-column-end:-2">-2</x>
+<x style="grid-row:4; grid-column-end:A-start -1">A -1</x>
+<x style="grid-row:4; grid-column-end:B -1">B -1</x>
+<x style="grid-row:5; grid-column-end:A-start -2">A -2</x>
+<x style="grid-row:6; grid-column-end:A-start -3">A -3</x>
+<x style="grid-row:6; grid-column-end:A-start -4">A -4</x>
+<x style="grid-row:6; grid-column-end:A-start -5">A -5</x>
+<x style="grid-row:7; grid-column-end:A-start">A</x>
+<x style="grid-row:7; grid-column-end:B">B</x>
+<x style="grid-row:8; grid-column-end:A-start 1">A 1</x>
+<x style="grid-row:8; grid-column-end:A-start 2">A 2</x>
+<x style="grid-row:8; grid-column-end:A-start 3">A 3</x>
+<x style="grid-row:8; grid-column-end:A-start 4">A 4</x>
+<x style="grid-row:8; grid-column-end:A-start 5">A 5</x>
+<y style="grid-row:2; grid-column-end:-1"></y>
+<y style="grid-row:3; grid-column-end:4"></y>
+<y style="grid-row:3; grid-column-end:-5" class="a2"></y>
+<y style="grid-row:3; grid-column-end:-4" class="a3"></y>
+<y style="grid-row:3; grid-column-end:-3" class="a4"></y>
+<y style="grid-row:3; grid-column-end:-2" class="a5"></y>
+<y style="grid-row:4; grid-column-end:A-start -1"></y>
+<y style="grid-row:4; grid-column-end:B -1" class="a2"></y>
+<y style="grid-row:5; grid-column-end:A-start -2"></y>
+<y style="grid-row:6; grid-column-end:A-start -3"></y>
+<y style="grid-row:6; grid-column-end:A-start -4" class="a2"></y>
+<y style="grid-row:6; grid-column-end:A-start -5" class="a3"></y>
+<y style="grid-row:7; grid-column-end:A-start"></y>
+<y style="grid-row:7; grid-column-end:B" class="a2"></y>
+<y style="grid-row:8; grid-column-end:A-start 1"></y>
+<y style="grid-row:8; grid-column-end:A-start 2" class="a2"></y>
+<y style="grid-row:8; grid-column-end:A-start 3" class="a3"></y>
+<y style="grid-row:8; grid-column-end:A-start 4" class="a4"></y>
+<y style="grid-row:8; grid-column-end:A-start 5" class="a5"></y>
+</div>
+
+<pre>grid-column: / span A-start 2</pre>
+<div class="grid">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column:-1/span A-start 2">-1</x>
+<x style="grid-row:3; grid-column:4/span A-start 2">4</x>
+<x style="grid-row:4; grid-column:-2/span A-start 2">-2</x>
+<x style="grid-row:5; grid-column:-3/span A-start 2">-3</x>
+<x style="grid-row:6; grid-column:-4/span A-start 2">-4</x>
+<x style="grid-row:7; grid-column:-5/span A-start 2">-5</x>
+<x style="grid-row:8; grid-column:A-start -1/span A-start 2">A -1</x>
+<x style="grid-row:9; grid-column:B -1/span A-start 2">B -1</x>
+<x style="grid-row:10; grid-column:A-start -2/span A-start 2">A -2</x>
+<x style="grid-row:11; grid-column:A-start -3/span A-start 2">A -3</x>
+<x style="grid-row:12; grid-column:A-start -4/span A-start 2">A -4</x>
+<x style="grid-row:13; grid-column:A-start -5/span A-start 2">A -5</x>
+<x style="grid-row:14; grid-column:A-start/span A-start 2">A</x>
+<x style="grid-row:15; grid-column:B/span B">B</x>
+<x style="grid-row:16; grid-column:A-start 1/span A-start 2">A 1</x>
+<x style="grid-row:17; grid-column:A-start 2/span A-start 2">A 2</x>
+<x style="grid-row:18; grid-column:A-start 3/span A-start 2">A 3</x>
+<x style="grid-row:19; grid-column:A-start 4/span A-start 2">A 4</x>
+<x style="grid-row:20; grid-column:A-start 5/span A-start 2">A 5</x>
+<y style="grid-row:2; grid-column:-1/span A-start 2"></y>
+<y style="grid-row:3; grid-column:4/span A-start 2"></y>
+<y style="grid-row:4; grid-column:-2/span A-start 2"></y>
+<y style="grid-row:5; grid-column:-3/span A-start 2"></y>
+<y style="grid-row:6; grid-column:-4/span A-start 2"></y>
+<y style="grid-row:7; grid-column:-5/span A-start 2"></y>
+<y style="grid-row:8; grid-column:A-start -1/span A-start 2"></y>
+<y style="grid-row:9; grid-column:B -1/span A-start 2"></y>
+<y style="grid-row:10; grid-column:A-start -2/span A-start 2"></y>
+<y style="grid-row:11; grid-column:A-start -3/span A-start 2"></y>
+<y style="grid-row:12; grid-column:A-start -4/span A-start 2"></y>
+<y style="grid-row:13; grid-column:A-start -5/span A-start 2"></y>
+<y style="grid-row:14; grid-column:A-start/span A-start 2"></y>
+<y style="grid-row:15; grid-column:B/span B"></y>
+<y style="grid-row:16; grid-column:A-start 1/span A-start 2"></y>
+<y style="grid-row:17; grid-column:A-start 2/span A-start 2"></y>
+<y style="grid-row:18; grid-column:A-start 3/span A-start 2"></y>
+<y style="grid-row:19; grid-column:A-start 4/span A-start 2"></y>
+<y style="grid-row:20; grid-column:A-start 5/span A-start 2"></y>
+</div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-grid/grid-placement-named-lines-002-ref.html
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Reference: Placement involving named lines</title>
+  <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1226697">
+  <style type="text/css">
+body,html { color:black; background:white; font-size:12px; padding:0; margin:0; }
+
+.grid {
+  display: grid;
+  position: relative;
+  border: 1px solid;
+  grid-auto-rows: 15px;
+  grid-gap: 1px;
+}
+.t1 {
+  grid-template-columns: 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px 40px ;
+
+}
+.t2 {
+  grid-template-columns: 40px 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px;
+}
+.t3 {
+  grid-template-columns: 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px 40px 40px;
+}
+
+x {
+  background: lime;
+  border: 1px solid;
+}
+y {
+  position: absolute;
+  border: 1px solid blue;
+  bottom:0;height:0;left:0;right:0;
+  grid-row-end:span 1!important;
+}
+.a2 { bottom:2px; }
+.a3 { bottom:4px; }
+.a4 { bottom:6px; }
+.a5 { bottom:8px; }
+
+  </style>
+</head>
+<body>
+
+<pre>
+grid-template-columns: [A-start] 60px [A-start] 60px 60px;
+grid-template-areas: "B . . . A";
+grid-auto-columns: 40px;
+grid-gap: 1px;
+</pre>
+
+<pre>grid-column-start:</pre>
+<div class="grid t1" style="padding-right:13px; border-right-width:5px">
+<x style="grid-row:1; grid-column-start:3; background:grey"></x>
+<x style="grid-row:2; grid-column-start:8">-1</x>
+<x style="grid-row:3; grid-column-start:7">4</x>
+<x style="grid-row:3; grid-column-start:7">-2</x>
+<x style="grid-row:3; grid-column-start:6">-3</x>
+<x style="grid-row:3; grid-column-start:5">-4</x>
+<x style="grid-row:3; grid-column-start:4">-5</x>
+<x style="grid-row:4; grid-column-start:7">A -1</x>
+<x style="grid-row:4; grid-column-start:2">B -1</x>
+<x style="grid-row:5; grid-column-start:4">A -2</x>
+<x style="grid-row:6; grid-column-start:3">A -3</x>
+<x style="grid-row:6; grid-column-start:2">A -4</x>
+<x style="grid-row:6; grid-column-start:1">A -5</x>
+<x style="grid-row:7; grid-column-start:3">A</x>
+<x style="grid-row:7; grid-column-start:3">B</x>
+<x style="grid-row:8; grid-column-start:3">A 1</x>
+<x style="grid-row:8; grid-column-start:4">A 2</x>
+<x style="grid-row:8; grid-column-start:7">A 3</x>
+<x style="grid-row:8; grid-column-start:9">A 4</x>
+<x style="grid-row:8; grid-column-start:10">A 5</x>
+<y style="grid-row:2; grid-column-start:8"></y>
+<y style="grid-row:3; grid-column-start:6"></y>
+<y style="grid-row:3; grid-column-start:7" class="a2"></y>
+<y style="grid-row:3; grid-column-start:6" class="a3"></y>
+<y style="grid-row:3; grid-column-start:5" class="a4"></y>
+<y style="grid-row:3; grid-column-start:4" class="a5"></y>
+<y style="grid-row:4; grid-column-start:7"></y>
+<y style="grid-row:4; grid-column-start:2" class="a2"></y>
+<y style="grid-row:5; grid-column-start:4"></y>
+<y style="grid-row:6; grid-column-start:3"></y>
+<y style="grid-row:6; grid-column-start:2" class="a2"></y>
+<y style="grid-row:6; grid-column-start:1" class="a3"></y>
+<y style="grid-row:7; grid-column-start:3"></y>
+<y style="grid-row:7; grid-column-start:3" class="a2"></y>
+<y style="grid-row:8; grid-column-start:3"></y>
+<y style="grid-row:8; grid-column-start:4" class="a2"></y>
+<y style="grid-row:8; grid-column-start:7" class="a3"></y>
+<y style="grid-row:8; grid-column-start:9" class="a4"></y>
+<y style="grid-row:8; grid-column-start:10" class="a5"></y>
+</div>
+
+<pre>grid-column-end:</pre>
+<div class="grid t2" style="padding-left:13px;">
+<x style="grid-row:1; grid-column-start:4; background:grey"></x>
+<x style="grid-row:2; grid-column-start:8">-1</x>
+<x style="grid-row:3; grid-column-start:7">4</x>
+<x style="grid-row:3; grid-column-start:7">-2</x>
+<x style="grid-row:3; grid-column-start:6">-3</x>
+<x style="grid-row:3; grid-column-start:5">-4</x>
+<x style="grid-row:3; grid-column-start:4">-5</x>
+<x style="grid-row:4; grid-column-start:7">A -1</x>
+<x style="grid-row:4; grid-column-start:2">B -1</x>
+<x style="grid-row:5; grid-column-start:4">A -2</x>
+<x style="grid-row:6; grid-column-start:3">A -3</x>
+<x style="grid-row:6; grid-column-start:2">A -4</x>
+<x style="grid-row:6; grid-column-start:1">A -5</x>
+<x style="grid-row:7; grid-column-start:3">A</x>
+<x style="grid-row:7; grid-column-start:4">B</x>
+<x style="grid-row:8; grid-column-start:3">A 1</x>
+<x style="grid-row:8; grid-column-start:4">A 2</x>
+<x style="grid-row:8; grid-column-start:7">A 3</x>
+<x style="grid-row:8; grid-column-start:9">A 4</x>
+<x style="grid-row:8; grid-column-start:10">A 5</x>
+<y style="grid-row:2; grid-column-end:9"></y>
+<y style="grid-row:3; grid-column-end:7"></y>
+<y style="grid-row:3; grid-column-end:8" class="a5"></y>
+<y style="grid-row:3; grid-column-end:7" class="a4"></y>
+<y style="grid-row:3; grid-column-end:6" class="a3"></y>
+<y style="grid-row:3; grid-column-end:5" class="a2"></y>
+<y style="grid-row:4; grid-column-end:8"></y>
+<y style="grid-row:4; grid-column-end:3" class="a2"></y>
+<y style="grid-row:5; grid-column-end:5"></y>
+<y style="grid-row:6; grid-column-end:4"></y>
+<y style="grid-row:6; grid-column-end:3" class="a2"></y>
+<y style="grid-row:6; grid-column-end:2" class="a3"></y>
+<y style="grid-row:7; grid-column-end:4"></y>
+<y style="grid-row:7; grid-column-end:5" class="a2"></y>
+<y style="grid-row:8; grid-column-end:4"></y>
+<y style="grid-row:8; grid-column-end:5" class="a2"></y>
+<y style="grid-row:8; grid-column-end:8" class="a3"></y>
+<y style="grid-row:8; grid-column-end:10" class="a4"></y>
+<y style="grid-row:8; grid-column-end:11" class="a5"></y>
+</div>
+
+<pre>grid-column: / span A-start 2</pre>
+<div class="grid t3">
+<x style="grid-row:1;  grid-column:3; background:grey"></x>
+<x style="grid-row:2;  grid-column:8/span 2;">-1</x>
+<x style="grid-row:3;  grid-column:6/span 3;">4</x>
+<x style="grid-row:4;  grid-column:7/span 3;">-2</x>
+<x style="grid-row:5;  grid-column:6/span 3;">-3</x>
+<x style="grid-row:6;  grid-column:5/span 4;">-4</x>
+<x style="grid-row:7;  grid-column:4/span 5;">-5</x>
+<x style="grid-row:8;  grid-column:7/span 3;">A -1</x>
+<x style="grid-row:9;  grid-column:2/span 2;">B -1</x>
+<x style="grid-row:10; grid-column:4/span 5;">A -2</x>
+<x style="grid-row:11; grid-column:3/span 4;">A -3</x>
+<x style="grid-row:12; grid-column:2/span 2;">A -4</x>
+<x style="grid-row:13; grid-column:1/span 3;">A -5</x>
+<x style="grid-row:14; grid-column:3/span 4;">A</x>
+<x style="grid-row:15; grid-column:3/span 6;">B</x>
+<x style="grid-row:16; grid-column:3/span 4;">A 1</x>
+<x style="grid-row:17; grid-column:4/span 5;">A 2</x>
+<x style="grid-row:18; grid-column:7/span 3;">A 3</x>
+<x style="grid-row:19; grid-column:9/span 2;">A 4</x>
+<x style="grid-row:20; grid-column:10/span 2;">A 5</x>
+<y style="grid-row:2;  grid-column:8/span 2;"></y>
+<y style="grid-row:3;  grid-column:6/span 3;"></y>
+<y style="grid-row:4;  grid-column:7/span 3;"></y>
+<y style="grid-row:5;  grid-column:6/span 3;"></y>
+<y style="grid-row:6;  grid-column:5/span 4;"></y>
+<y style="grid-row:7;  grid-column:4/span 5;"></y>
+<y style="grid-row:8;  grid-column:7/span 3;"></y>
+<y style="grid-row:9;  grid-column:2/span 2;"></y>
+<y style="grid-row:10; grid-column:4/span 5;"></y>
+<y style="grid-row:11; grid-column:3/span 4;"></y>
+<y style="grid-row:12; grid-column:2/span 2;"></y>
+<y style="grid-row:13; grid-column:1/span 3;"></y>
+<y style="grid-row:14; grid-column:3/span 4;"></y>
+<y style="grid-row:15; grid-column:3/span 6;"></y>
+<y style="grid-row:16; grid-column:3/span 4;"></y>
+<y style="grid-row:17; grid-column:4/span 5;"></y>
+<y style="grid-row:18; grid-column:7/span 3;"></y>
+<y style="grid-row:19; grid-column:9/span 2;"></y>
+<y style="grid-row:20; grid-column:10/span 2;"></y>
+</div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-grid/grid-placement-named-lines-002.html
@@ -0,0 +1,182 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>CSS Grid Test: Placement involving named lines</title>
+  <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1226697">
+  <link rel="help" href="https://drafts.csswg.org/css-grid/#grid-placement-int">
+  <link rel="match" href="grid-placement-named-lines-002-ref.html">
+  <style type="text/css">
+body,html { color:black; background:white; font-size:12px; padding:0; margin:0; }
+
+.grid {
+  display: grid;
+  position: relative;
+  border: 1px solid;
+  grid-template-columns: [A-start] 60px [A-start] 60px 60px;
+  grid-template-areas: "B . . . A";
+  grid-auto-columns: 40px;
+  grid-auto-rows: 15px;
+  grid-gap: 1px;
+}
+
+x {
+  background: lime;
+  border: 1px solid;
+}
+y {
+  position: absolute;
+  border: 1px solid blue;
+  bottom:0;height:0;left:0;right:0;
+  grid-row-end:span 1!important;
+}
+.a2 { bottom:2px; }
+.a3 { bottom:4px; }
+.a4 { bottom:6px; }
+.a5 { bottom:8px; }
+
+  </style>
+</head>
+<body>
+
+<pre>
+grid-template-columns: [A-start] 60px [A-start] 60px 60px;
+grid-template-areas: "B . . . A";
+grid-auto-columns: 40px;
+grid-gap: 1px;
+</pre>
+
+<pre>grid-column-start:</pre>
+<div class="grid" style="padding-right:13px; border-right-width:5px">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column-start:-1">-1</x>
+<x style="grid-row:3; grid-column-start:4">4</x>
+<x style="grid-row:3; grid-column-start:-2">-2</x>
+<x style="grid-row:3; grid-column-start:-3">-3</x>
+<x style="grid-row:3; grid-column-start:-4">-4</x>
+<x style="grid-row:3; grid-column-start:-5">-5</x>
+<x style="grid-row:4; grid-column-start:A-start -1">A -1</x>
+<x style="grid-row:4; grid-column-start:B -1">B -1</x>
+<x style="grid-row:5; grid-column-start:A-start -2">A -2</x>
+<x style="grid-row:6; grid-column-start:A-start -3">A -3</x>
+<x style="grid-row:6; grid-column-start:A-start -4">A -4</x>
+<x style="grid-row:6; grid-column-start:A-start -5">A -5</x>
+<x style="grid-row:7; grid-column-start:A-start">A</x>
+<x style="grid-row:7; grid-column-start:B">B</x>
+<x style="grid-row:8; grid-column-start:A-start 1">A 1</x>
+<x style="grid-row:8; grid-column-start:A-start 2">A 2</x>
+<x style="grid-row:8; grid-column-start:A-start 3">A 3</x>
+<x style="grid-row:8; grid-column-start:A-start 4">A 4</x>
+<x style="grid-row:8; grid-column-start:A-start 5">A 5</x>
+<y style="grid-row:2; grid-column-start:-1"></y>
+<y style="grid-row:3; grid-column-start:4"></y>
+<y style="grid-row:3; grid-column-start:-2" class="a2"></y>
+<y style="grid-row:3; grid-column-start:-3" class="a3"></y>
+<y style="grid-row:3; grid-column-start:-4" class="a4"></y>
+<y style="grid-row:3; grid-column-start:-5" class="a5"></y>
+<y style="grid-row:4; grid-column-start:A-start -1"></y>
+<y style="grid-row:4; grid-column-start:B -1" class="a2"></y>
+<y style="grid-row:5; grid-column-start:A-start -2"></y>
+<y style="grid-row:6; grid-column-start:A-start -3"></y>
+<y style="grid-row:6; grid-column-start:A-start -4" class="a2"></y>
+<y style="grid-row:6; grid-column-start:A-start -5" class="a3"></y>
+<y style="grid-row:7; grid-column-start:A-start"></y>
+<y style="grid-row:7; grid-column-start:B" class="a2"></y>
+<y style="grid-row:8; grid-column-start:A-start 1"></y>
+<y style="grid-row:8; grid-column-start:A-start 2" class="a2"></y>
+<y style="grid-row:8; grid-column-start:A-start 3" class="a3"></y>
+<y style="grid-row:8; grid-column-start:A-start 4" class="a4"></y>
+<y style="grid-row:8; grid-column-start:A-start 5" class="a5"></y>
+</div>
+
+<pre>grid-column-end:</pre>
+<div class="grid" style="padding-left:13px;">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column-end:-1">-1</x>
+<x style="grid-row:3; grid-column-end:4">4</x>
+<x style="grid-row:3; grid-column-end:-5">-5</x>
+<x style="grid-row:3; grid-column-end:-4">-4</x>
+<x style="grid-row:3; grid-column-end:-3">-3</x>
+<x style="grid-row:3; grid-column-end:-2">-2</x>
+<x style="grid-row:4; grid-column-end:A-start -1">A -1</x>
+<x style="grid-row:4; grid-column-end:B -1">B -1</x>
+<x style="grid-row:5; grid-column-end:A-start -2">A -2</x>
+<x style="grid-row:6; grid-column-end:A-start -3">A -3</x>
+<x style="grid-row:6; grid-column-end:A-start -4">A -4</x>
+<x style="grid-row:6; grid-column-end:A-start -5">A -5</x>
+<x style="grid-row:7; grid-column-end:A-start">A</x>
+<x style="grid-row:7; grid-column-end:B">B</x>
+<x style="grid-row:8; grid-column-end:A-start 1">A 1</x>
+<x style="grid-row:8; grid-column-end:A-start 2">A 2</x>
+<x style="grid-row:8; grid-column-end:A-start 3">A 3</x>
+<x style="grid-row:8; grid-column-end:A-start 4">A 4</x>
+<x style="grid-row:8; grid-column-end:A-start 5">A 5</x>
+<y style="grid-row:2; grid-column-end:-1"></y>
+<y style="grid-row:3; grid-column-end:4"></y>
+<y style="grid-row:3; grid-column-end:-5" class="a2"></y>
+<y style="grid-row:3; grid-column-end:-4" class="a3"></y>
+<y style="grid-row:3; grid-column-end:-3" class="a4"></y>
+<y style="grid-row:3; grid-column-end:-2" class="a5"></y>
+<y style="grid-row:4; grid-column-end:A-start -1"></y>
+<y style="grid-row:4; grid-column-end:B -1" class="a2"></y>
+<y style="grid-row:5; grid-column-end:A-start -2"></y>
+<y style="grid-row:6; grid-column-end:A-start -3"></y>
+<y style="grid-row:6; grid-column-end:A-start -4" class="a2"></y>
+<y style="grid-row:6; grid-column-end:A-start -5" class="a3"></y>
+<y style="grid-row:7; grid-column-end:A-start"></y>
+<y style="grid-row:7; grid-column-end:B" class="a2"></y>
+<y style="grid-row:8; grid-column-end:A-start 1"></y>
+<y style="grid-row:8; grid-column-end:A-start 2" class="a2"></y>
+<y style="grid-row:8; grid-column-end:A-start 3" class="a3"></y>
+<y style="grid-row:8; grid-column-end:A-start 4" class="a4"></y>
+<y style="grid-row:8; grid-column-end:A-start 5" class="a5"></y>
+</div>
+
+<pre>grid-column: / span A-start 2</pre>
+<div class="grid">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column:-1/span A-start 2">-1</x>
+<x style="grid-row:3; grid-column:4/span A-start 2">4</x>
+<x style="grid-row:4; grid-column:-2/span A-start 2">-2</x>
+<x style="grid-row:5; grid-column:-3/span A-start 2">-3</x>
+<x style="grid-row:6; grid-column:-4/span A-start 2">-4</x>
+<x style="grid-row:7; grid-column:-5/span A-start 2">-5</x>
+<x style="grid-row:8; grid-column:A-start -1/span A-start 2">A -1</x>
+<x style="grid-row:9; grid-column:B -1/span A-start 2">B -1</x>
+<x style="grid-row:10; grid-column:A-start -2/span A-start 2">A -2</x>
+<x style="grid-row:11; grid-column:A-start -3/span A-start 2">A -3</x>
+<x style="grid-row:12; grid-column:A-start -4/span A-start 2">A -4</x>
+<x style="grid-row:13; grid-column:A-start -5/span A-start 2">A -5</x>
+<x style="grid-row:14; grid-column:A-start/span A-start 2">A</x>
+<x style="grid-row:15; grid-column:B/span B">B</x>
+<x style="grid-row:16; grid-column:A-start 1/span A-start 2">A 1</x>
+<x style="grid-row:17; grid-column:A-start 2/span A-start 2">A 2</x>
+<x style="grid-row:18; grid-column:A-start 3/span A-start 2">A 3</x>
+<x style="grid-row:19; grid-column:A-start 4/span A-start 2">A 4</x>
+<x style="grid-row:20; grid-column:A-start 5/span A-start 2">A 5</x>
+<y style="grid-row:2; grid-column:-1/span A-start 2"></y>
+<y style="grid-row:3; grid-column:4/span A-start 2"></y>
+<y style="grid-row:4; grid-column:-2/span A-start 2"></y>
+<y style="grid-row:5; grid-column:-3/span A-start 2"></y>
+<y style="grid-row:6; grid-column:-4/span A-start 2"></y>
+<y style="grid-row:7; grid-column:-5/span A-start 2"></y>
+<y style="grid-row:8; grid-column:A-start -1/span A-start 2"></y>
+<y style="grid-row:9; grid-column:B -1/span A-start 2"></y>
+<y style="grid-row:10; grid-column:A-start -2/span A-start 2"></y>
+<y style="grid-row:11; grid-column:A-start -3/span A-start 2"></y>
+<y style="grid-row:12; grid-column:A-start -4/span A-start 2"></y>
+<y style="grid-row:13; grid-column:A-start -5/span A-start 2"></y>
+<y style="grid-row:14; grid-column:A-start/span A-start 2"></y>
+<y style="grid-row:15; grid-column:B/span B"></y>
+<y style="grid-row:16; grid-column:A-start 1/span A-start 2"></y>
+<y style="grid-row:17; grid-column:A-start 2/span A-start 2"></y>
+<y style="grid-row:18; grid-column:A-start 3/span A-start 2"></y>
+<y style="grid-row:19; grid-column:A-start 4/span A-start 2"></y>
+<y style="grid-row:20; grid-column:A-start 5/span A-start 2"></y>
+</div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-grid/grid-placement-named-lines-003-ref.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>Reference: Placement involving named lines</title>
+  <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1226697">
+  <style type="text/css">
+body,html { color:black; background:white; font-size:12px; padding:0; margin:0; }
+
+.grid {
+  display: grid;
+  position: relative;
+  border: 1px solid;
+  grid-auto-rows: 15px;
+  grid-gap: 1px;
+}
+.t1 {
+  grid-template-columns: 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px 40px ;
+
+}
+.t2 {
+  grid-template-columns: 40px 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px;
+}
+.t3 {
+  grid-template-columns: 40px 40px 60px 60px 60px 40px 40px 40px 40px 40px 40px 40px 40px;
+}
+
+x {
+  background: lime;
+  border: 1px solid;
+}
+y {
+  position: absolute;
+  border: 1px solid blue;
+  bottom:0;height:0;left:0;right:0;
+  grid-row-end:span 1!important;
+}
+.a2 { bottom:2px; }
+.a3 { bottom:4px; }
+.a4 { bottom:6px; }
+.a5 { bottom:8px; }
+
+  </style>
+</head>
+<body>
+
+<pre>
+grid-template-columns: [A-start] 60px 60px [A-start] 60px;
+grid-template-areas: "B A";
+grid-auto-columns: 40px;
+grid-gap: 1px;
+</pre>
+
+<pre>grid-column-start:</pre>
+<div class="grid t1" style="padding-right:13px; border-right-width:5px">
+<x style="grid-row:1; grid-column-start:3; background:grey"></x>
+<x style="grid-row:2; grid-column-start:6">-1</x>
+<x style="grid-row:3; grid-column-start:3">A</x>
+<x style="grid-row:4; grid-column-start:5">A -1</x>
+<x style="grid-row:4; grid-column-start:2">B -1</x>
+<x style="grid-row:5; grid-column-start:4">A -2</x>
+<x style="grid-row:6; grid-column-start:3">A -3</x>
+<x style="grid-row:6; grid-column-start:2">A -4</x>
+<x style="grid-row:6; grid-column-start:1">A -5</x>
+<x style="grid-row:7; grid-column-start:3">A</x>
+<x style="grid-row:7; grid-column-start:3">B</x>
+<x style="grid-row:8; grid-column-start:3">A 1</x>
+<x style="grid-row:8; grid-column-start:4">A 2</x>
+<x style="grid-row:8; grid-column-start:5">A 3</x>
+<x style="grid-row:8; grid-column-start:7">A 4</x>
+<x style="grid-row:8; grid-column-start:8">A 5</x>
+<y style="grid-row:2; grid-column-start:6"></y>
+<y style="grid-row:3; grid-column-start:3"></y>
+<y style="grid-row:4; grid-column-start:5"></y>
+<y style="grid-row:4; grid-column-start:2" class="a2"></y>
+<y style="grid-row:5; grid-column-start:4"></y>
+<y style="grid-row:6; grid-column-start:3"></y>
+<y style="grid-row:6; grid-column-start:2" class="a2"></y>
+<y style="grid-row:6; grid-column-start:1" class="a3"></y>
+<y style="grid-row:7; grid-column-start:3"></y>
+<y style="grid-row:7; grid-column-start:3" class="a2"></y>
+<y style="grid-row:8; grid-column-start:3"></y>
+<y style="grid-row:8; grid-column-start:4" class="a2"></y>
+<y style="grid-row:8; grid-column-start:5" class="a3"></y>
+<y style="grid-row:8; grid-column-start:7" class="a4"></y>
+<y style="grid-row:8; grid-column-start:8" class="a5"></y>
+</div>
+
+<pre>grid-column-end:</pre>
+<div class="grid t2" style="padding-left:13px;">
+<x style="grid-row:1; grid-column-start:4; background:grey"></x>
+<x style="grid-row:2; grid-column-start:6">-1</x>
+<x style="grid-row:3; grid-column-start:5">A</x>
+<x style="grid-row:4; grid-column-start:5">A -1</x>
+<x style="grid-row:4; grid-column-start:2">B -1</x>
+<x style="grid-row:5; grid-column-start:4">A -2</x>
+<x style="grid-row:6; grid-column-start:3">A -3</x>
+<x style="grid-row:6; grid-column-start:2">A -4</x>
+<x style="grid-row:6; grid-column-start:1">A -5</x>
+<x style="grid-row:7; grid-column-start:3">A</x>
+<x style="grid-row:7; grid-column-start:4">B</x>
+<x style="grid-row:8; grid-column-start:3">A 1</x>
+<x style="grid-row:8; grid-column-start:4">A 2</x>
+<x style="grid-row:8; grid-column-start:5">A 3</x>
+<x style="grid-row:8; grid-column-start:7">A 4</x>
+<x style="grid-row:8; grid-column-start:8">A 5</x>
+<y style="grid-row:2; grid-column-end:7"></y>
+<y style="grid-row:3; grid-column-end:6"></y>
+<y style="grid-row:4; grid-column-end:6"></y>
+<y style="grid-row:4; grid-column-end:3" class="a2"></y>
+<y style="grid-row:5; grid-column-end:5"></y>
+<y style="grid-row:6; grid-column-end:4"></y>
+<y style="grid-row:6; grid-column-end:3" class="a2"></y>
+<y style="grid-row:6; grid-column-end:2" class="a3"></y>
+<y style="grid-row:7; grid-column-end:4"></y>
+<y style="grid-row:7; grid-column-end:5" class="a2"></y>
+<y style="grid-row:8; grid-column-end:4"></y>
+<y style="grid-row:8; grid-column-end:5" class="a2"></y>
+<y style="grid-row:8; grid-column-end:6" class="a3"></y>
+<y style="grid-row:8; grid-column-end:8" class="a4"></y>
+<y style="grid-row:8; grid-column-end:9" class="a5"></y>
+</div>
+
+<pre>grid-column: / span A-start 2</pre>
+<div class="grid t3">
+<x style="grid-row:1;  grid-column:3; background:grey"></x>
+<x style="grid-row:2;  grid-column:6/span 2;">-1</x>
+<x style="grid-row:3;  grid-column:6/span 1;">A</x>
+<x style="grid-row:4;  grid-column:5/span 3;">-2</x>
+<x style="grid-row:5;  grid-column:4/span 3;">-3</x>
+<x style="grid-row:6;  grid-column:3/span 2;">-4</x>
+<x style="grid-row:7;  grid-column:2/span 2;">-5</x>
+<x style="grid-row:8;  grid-column:5/span 3;">A -1</x>
+<x style="grid-row:9;  grid-column:2/span 2;">B -1</x>
+<x style="grid-row:10; grid-column:4/span 3;">A -2</x>
+<x style="grid-row:11; grid-column:3/span 2;">A -3</x>
+<x style="grid-row:12; grid-column:2/span 2;">A -4</x>
+<x style="grid-row:13; grid-column:1/span 3;">A -5</x>
+<x style="grid-row:14; grid-column:3/span 2;">A</x>
+<x style="grid-row:15; grid-column:3/span 4;">span A</x>
+<x style="grid-row:16; grid-column:3/span 2;">A 1</x>
+<x style="grid-row:17; grid-column:4/span 3;">A 2</x>
+<x style="grid-row:18; grid-column:5/span 3;">A 3</x>
+<x style="grid-row:19; grid-column:7/span 2;">A 4</x>
+<x style="grid-row:20; grid-column:8/span 2;">A 5</x>
+<y style="grid-row:2;  grid-column:6/span 2;"></y>
+<y style="grid-row:3;  grid-column:6/span 1;"></y>
+<y style="grid-row:4;  grid-column:5/span 3;"></y>
+<y style="grid-row:5;  grid-column:4/span 3;"></y>
+<y style="grid-row:6;  grid-column:3/span 2;"></y>
+<y style="grid-row:7;  grid-column:2/span 2;"></y>
+<y style="grid-row:8;  grid-column:5/span 3;"></y>
+<y style="grid-row:9;  grid-column:2/span 2;"></y>
+<y style="grid-row:10; grid-column:4/span 3;"></y>
+<y style="grid-row:11; grid-column:3/span 2;"></y>
+<y style="grid-row:12; grid-column:2/span 2;"></y>
+<y style="grid-row:13; grid-column:1/span 3;"></y>
+<y style="grid-row:14; grid-column:3/span 2;"></y>
+<y style="grid-row:15; grid-column:3/span 4;"></y>
+<y style="grid-row:16; grid-column:3/span 2;"></y>
+<y style="grid-row:17; grid-column:4/span 3;"></y>
+<y style="grid-row:18; grid-column:5/span 3;"></y>
+<y style="grid-row:19; grid-column:7/span 2;"></y>
+<y style="grid-row:20; grid-column:8/span 2;"></y>
+</div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-grid/grid-placement-named-lines-003.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+  <meta charset="utf-8">
+  <title>CSS Grid Test: Placement involving named lines</title>
+  <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1226697">
+  <link rel="help" href="https://drafts.csswg.org/css-grid/#grid-placement-int">
+  <link rel="match" href="grid-placement-named-lines-003-ref.html">
+  <style type="text/css">
+body,html { color:black; background:white; font-size:12px; padding:0; margin:0; }
+
+.grid {
+  display: grid;
+  position: relative;
+  border: 1px solid;
+  grid-template-columns: [A-start] 60px 60px [A-start] 60px;
+  grid-template-areas: "B A";
+  grid-auto-columns: 40px;
+  grid-auto-rows: 15px;
+  grid-gap: 1px;
+}
+
+x {
+  background: lime;
+  border: 1px solid;
+}
+y {
+  position: absolute;
+  border: 1px solid blue;
+  bottom:0;height:0;left:0;right:0;
+  grid-row-end:span 1!important;
+}
+.a2 { bottom:2px; }
+.a3 { bottom:4px; }
+.a4 { bottom:6px; }
+.a5 { bottom:8px; }
+
+  </style>
+</head>
+<body>
+
+<pre>
+grid-template-columns: [A-start] 60px 60px [A-start] 60px;
+grid-template-areas: "B A";
+grid-auto-columns: 40px;
+grid-gap: 1px;
+</pre>
+
+<pre>grid-column-start:</pre>
+<div class="grid" style="padding-right:13px; border-right-width:5px">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column-start:-1">-1</x>
+<x style="grid-row:3; grid-column-start:A">A</x>
+<x style="grid-row:4; grid-column-start:A-start -1">A -1</x>
+<x style="grid-row:4; grid-column-start:B -1">B -1</x>
+<x style="grid-row:5; grid-column-start:A-start -2">A -2</x>
+<x style="grid-row:6; grid-column-start:A-start -3">A -3</x>
+<x style="grid-row:6; grid-column-start:A-start -4">A -4</x>
+<x style="grid-row:6; grid-column-start:A-start -5">A -5</x>
+<x style="grid-row:7; grid-column-start:A-start">A</x>
+<x style="grid-row:7; grid-column-start:B">B</x>
+<x style="grid-row:8; grid-column-start:A-start 1">A 1</x>
+<x style="grid-row:8; grid-column-start:A-start 2">A 2</x>
+<x style="grid-row:8; grid-column-start:A-start 3">A 3</x>
+<x style="grid-row:8; grid-column-start:A-start 4">A 4</x>
+<x style="grid-row:8; grid-column-start:A-start 5">A 5</x>
+<y style="grid-row:2; grid-column-start:-1"></y>
+<y style="grid-row:3; grid-column-start:A"></y>
+<y style="grid-row:4; grid-column-start:A-start -1"></y>
+<y style="grid-row:4; grid-column-start:B -1" class="a2"></y>
+<y style="grid-row:5; grid-column-start:A-start -2"></y>
+<y style="grid-row:6; grid-column-start:A-start -3"></y>
+<y style="grid-row:6; grid-column-start:A-start -4" class="a2"></y>
+<y style="grid-row:6; grid-column-start:A-start -5" class="a3"></y>
+<y style="grid-row:7; grid-column-start:A-start"></y>
+<y style="grid-row:7; grid-column-start:B" class="a2"></y>
+<y style="grid-row:8; grid-column-start:A-start 1"></y>
+<y style="grid-row:8; grid-column-start:A-start 2" class="a2"></y>
+<y style="grid-row:8; grid-column-start:A-start 3" class="a3"></y>
+<y style="grid-row:8; grid-column-start:A-start 4" class="a4"></y>
+<y style="grid-row:8; grid-column-start:A-start 5" class="a5"></y>
+</div>
+
+<pre>grid-column-end:</pre>
+<div class="grid" style="padding-left:13px;">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column-end:-1">-1</x>
+<x style="grid-row:3; grid-column-end:A">A</x>
+<x style="grid-row:4; grid-column-end:A-start -1">A -1</x>
+<x style="grid-row:4; grid-column-end:B -1">B -1</x>
+<x style="grid-row:5; grid-column-end:A-start -2">A -2</x>
+<x style="grid-row:6; grid-column-end:A-start -3">A -3</x>
+<x style="grid-row:6; grid-column-end:A-start -4">A -4</x>
+<x style="grid-row:6; grid-column-end:A-start -5">A -5</x>
+<x style="grid-row:7; grid-column-end:A-start">A</x>
+<x style="grid-row:7; grid-column-end:B">B</x>
+<x style="grid-row:8; grid-column-end:A-start 1">A 1</x>
+<x style="grid-row:8; grid-column-end:A-start 2">A 2</x>
+<x style="grid-row:8; grid-column-end:A-start 3">A 3</x>
+<x style="grid-row:8; grid-column-end:A-start 4">A 4</x>
+<x style="grid-row:8; grid-column-end:A-start 5">A 5</x>
+<y style="grid-row:2; grid-column-end:-1"></y>
+<y style="grid-row:3; grid-column-end:A"></y>
+<y style="grid-row:4; grid-column-end:A-start -1"></y>
+<y style="grid-row:4; grid-column-end:B -1" class="a2"></y>
+<y style="grid-row:5; grid-column-end:A-start -2"></y>
+<y style="grid-row:6; grid-column-end:A-start -3"></y>
+<y style="grid-row:6; grid-column-end:A-start -4" class="a2"></y>
+<y style="grid-row:6; grid-column-end:A-start -5" class="a3"></y>
+<y style="grid-row:7; grid-column-end:A-start"></y>
+<y style="grid-row:7; grid-column-end:B" class="a2"></y>
+<y style="grid-row:8; grid-column-end:A-start 1"></y>
+<y style="grid-row:8; grid-column-end:A-start 2" class="a2"></y>
+<y style="grid-row:8; grid-column-end:A-start 3" class="a3"></y>
+<y style="grid-row:8; grid-column-end:A-start 4" class="a4"></y>
+<y style="grid-row:8; grid-column-end:A-start 5" class="a5"></y>
+</div>
+
+<pre>grid-column: / span A-start 2</pre>
+<div class="grid">
+<x style="grid-row:1; grid-column:1; background:grey"></x>
+<x style="grid-row:2; grid-column:-1/span A-start 2">-1</x>
+<x style="grid-row:3; grid-column:4/span A">A</x>
+<x style="grid-row:4; grid-column:-2/span A-start 2">-2</x>
+<x style="grid-row:5; grid-column:-3/span A-start 2">-3</x>
+<x style="grid-row:6; grid-column:-4/span A-start 2">-4</x>
+<x style="grid-row:7; grid-column:-5/span A-start 2">-5</x>
+<x style="grid-row:8; grid-column:A-start -1/span A-start 2">A -1</x>
+<x style="grid-row:9; grid-column:B -1/span A-start 2">B -1</x>
+<x style="grid-row:10; grid-column:A-start -2/span A-start 2">A -2</x>
+<x style="grid-row:11; grid-column:A-start -3/span A-start 2">A -3</x>
+<x style="grid-row:12; grid-column:A-start -4/span A-start 2">A -4</x>
+<x style="grid-row:13; grid-column:A-start -5/span A-start 2">A -5</x>
+<x style="grid-row:14; grid-column:A-start/span A-start 2">A</x>
+<x style="grid-row:15; grid-column:B/span A">span A</x>
+<x style="grid-row:16; grid-column:A-start 1/span A-start 2">A 1</x>
+<x style="grid-row:17; grid-column:A-start 2/span A-start 2">A 2</x>
+<x style="grid-row:18; grid-column:A-start 3/span A-start 2">A 3</x>
+<x style="grid-row:19; grid-column:A-start 4/span A-start 2">A 4</x>
+<x style="grid-row:20; grid-column:A-start 5/span A-start 2">A 5</x>
+<y style="grid-row:2; grid-column:-1/span A-start 2"></y>
+<y style="grid-row:3; grid-column:4/span A"></y>
+<y style="grid-row:4; grid-column:-2/span A-start 2"></y>
+<y style="grid-row:5; grid-column:-3/span A-start 2"></y>
+<y style="grid-row:6; grid-column:-4/span A-start 2"></y>
+<y style="grid-row:7; grid-column:-5/span A-start 2"></y>
+<y style="grid-row:8; grid-column:A-start -1/span A-start 2"></y>
+<y style="grid-row:9; grid-column:B -1/span A-start 2"></y>
+<y style="grid-row:10; grid-column:A-start -2/span A-start 2"></y>
+<y style="grid-row:11; grid-column:A-start -3/span A-start 2"></y>
+<y style="grid-row:12; grid-column:A-start -4/span A-start 2"></y>
+<y style="grid-row:13; grid-column:A-start -5/span A-start 2"></y>
+<y style="grid-row:14; grid-column:A-start/span A-start 2"></y>
+<y style="grid-row:15; grid-column:B/span B"></y>
+<y style="grid-row:16; grid-column:A-start 1/span A-start 2"></y>
+<y style="grid-row:17; grid-column:A-start 2/span A-start 2"></y>
+<y style="grid-row:18; grid-column:A-start 3/span A-start 2"></y>
+<y style="grid-row:19; grid-column:A-start 4/span A-start 2"></y>
+<y style="grid-row:20; grid-column:A-start 5/span A-start 2"></y>
+</div>
+
+</body>
+</html>
--- a/layout/reftests/css-grid/reftest.list
+++ b/layout/reftests/css-grid/reftest.list
@@ -7,16 +7,19 @@ fails == grid-whitespace-handling-1b.xht
 == grid-placement-definite-002.html grid-placement-definite-002-ref.html
 == grid-placement-definite-003.html grid-placement-definite-003-ref.html
 == grid-placement-negative-lines-001.html grid-placement-negative-lines-001-ref.html
 == grid-placement-auto-row-sparse-001.html grid-placement-auto-row-sparse-001-ref.html
 == grid-placement-auto-row-dense-001.html grid-placement-auto-row-dense-001-ref.html
 == grid-placement-auto-col-sparse-001.html grid-placement-auto-col-sparse-001-ref.html
 == grid-placement-auto-col-dense-001.html grid-placement-auto-col-dense-001-ref.html
 == grid-placement-implicit-named-areas-001.html grid-placement-implicit-named-areas-001-ref.html
+== grid-placement-named-lines-001.html grid-placement-named-lines-001-ref.html
+== grid-placement-named-lines-002.html grid-placement-named-lines-002-ref.html
+== grid-placement-named-lines-003.html grid-placement-named-lines-003-ref.html
 == grid-track-sizing-001.html grid-track-sizing-001-ref.html
 == grid-track-sizing-002.html grid-track-sizing-002-ref.html
 == grid-abspos-items-001.html grid-abspos-items-001-ref.html
 == grid-abspos-items-002.html grid-abspos-items-002-ref.html
 == grid-abspos-items-003.html grid-abspos-items-003-ref.html
 == grid-abspos-items-004.html grid-abspos-items-004-ref.html
 == grid-abspos-items-005.html grid-abspos-items-005-ref.html
 == grid-abspos-items-006.html grid-abspos-items-006-ref.html