Commit de8187fe authored by Ian Kilpatrick's avatar Ian Kilpatrick Committed by Chromium LUCI CQ

[GridNG] Apply justify-content, alignment-content.

As above. This patch implements the core content alignment logic. E.g.
determining the offset at which the tracks should start, and the space
between them (gutter-size - this include the grid-gap if any).

Creates a new struct "TrackAlignmentGeometry" which contains these
two values. Effectively the process is now:
GridGap -> TrackAlignmentGeometry -> SetOffsets.

The most significant difference is that TrackAlignmentGeometry includes
the grid-gap, and the BorderScrollPadding start offset.

Bug: 1045599
Change-Id: Idb4d550f0d8b2aca306945a46d41b5a30a20bca4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2622586
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: default avatarEthan Jimenez <ethavar@microsoft.com>
Reviewed-by: default avatarKurt Catti-Schmidt <kschmi@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#845494}
parent d6afb6f3
......@@ -232,11 +232,6 @@ class CORE_EXPORT NGGridLayoutAlgorithm
LayoutUnit GridGap(GridTrackSizingDirection track_direction,
LayoutUnit available_size = kIndefiniteSize) const;
// Calculates inline and block offsets for all tracks.
Vector<LayoutUnit> ComputeSetOffsets(
const NGGridLayoutAlgorithmTrackCollection& track_collection,
LayoutUnit grid_gap) const;
// Layout the |grid_items| based on the offsets provided.
void PlaceGridItems(const Vector<GridItemData>& grid_items,
const Vector<LayoutUnit>& column_set_offsets,
......
......@@ -3439,8 +3439,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-p
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-005.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-006.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-and-autofit-tracks-007.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-content-alignment-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-gaps-001.html [ Crash Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-gaps-rtl-001.html [ Crash Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html [ Crash ]
......@@ -3482,9 +3480,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/gri
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-distribution.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-vertical-lr.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content-vertical-rl.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-content.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-align-justify-overflow.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-alignment-style-changes-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-alignment-style-changes-002.html [ Failure ]
......@@ -3514,7 +3509,6 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/gri
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-005.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-container-auto-margins-scrollbars-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-container-baseline-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-and-self-alignment-002.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-auto-sized-tracks-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-overflow-001.html [ Failure ]
......@@ -3523,26 +3517,8 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/gri
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-with-span-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-with-span-vertical-lr-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-alignment-with-span-vertical-rl-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-002.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-003.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-004.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-005.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-006.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-007.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-008.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-009.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-010.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-011.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-012.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-013.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-014.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-015.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-016.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-017.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-018.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-019.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-020.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-021.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-022.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-content-distribution-023.html [ Failure ]
......@@ -3583,6 +3559,7 @@ crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/gri
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-5.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-6.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-7.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-place-content-001.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html [ Crash Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html [ Crash Failure ]
crbug.com/1045599 virtual/layout-ng-grid/external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html [ Crash Failure ]
......@@ -3947,9 +3924,6 @@ crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-items-should-
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-justify-content-distribution-vertical-lr.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-justify-content-distribution-vertical-rl.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-justify-content-distribution.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-justify-content-vertical-lr.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-justify-content-vertical-rl.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-justify-content.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-only-abspos-item-computed-style-crash.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-preferred-logical-widths.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/grid-self-baseline-two-dimensional.html [ Failure ]
......@@ -3990,7 +3964,6 @@ crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/percent-of-indefin
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/percent-of-indefinite-track-size.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/percent-padding-margin-resolution-grid-item-update.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/percent-padding-margin-resolution-grid-item.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/percent-resolution-grid-item-children.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/percent-track-breadths-regarding-container-size.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/positioned-grid-container-percentage-tracks.html [ Failure ]
crbug.com/1045599 virtual/layout-ng-grid/fast/css-grid-layout/preferred-width-computed-after-layout.html [ Failure ]
......
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-space-evenly">
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="The fallback alignment for 'space-evenly' should be 'center'.">
<p>Test passes if there is a filled green square.</p>
<div style="display: grid; width: 50px; height: 50px; align-content: space-evenly; justify-content: space-evenly;">
<div style="width: 100px; height: 100px; background: green; position: relative; top: 25px; left: 25px;"></div>
</div>
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-space-around">
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="The fallback alignment for 'space-around' should be 'center'.">
<p>Test passes if there is a filled green square.</p>
<div style="display: grid; width: 50px; height: 50px; align-content: space-around; justify-content: space-around;">
<div style="width: 100px; height: 100px; background: green; position: relative; top: 25px; left: 25px;"></div>
</div>
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-space-between">
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
<meta name="assert" content="The fallback alignment for 'space-between' should be 'start'.">
<p>Test passes if there is a filled green square.</p>
<div style="display: grid; width: 50px; height: 50px; align-content: space-between; justify-content: space-between;">
<div style="width: 100px; height: 100px; background: green;"></div>
</div>
This is a testharness.js-based test.
PASS .grid 1
FAIL .grid 2 assert_equals:
<div class="grid small content-box center">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 40
FAIL .grid 3 assert_equals:
<div class="grid small content-box end">
<div data-offset-x="0" data-offset-y="0">X</div>
</div>
offsetLeft expected 0 but got 40
PASS .grid 4
FAIL .grid 5 assert_equals:
<div class="grid small content-box space-around">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 40
PASS .grid 6
FAIL .grid 7 assert_equals:
<div class="grid small border-box center">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 40
FAIL .grid 8 assert_equals:
<div class="grid small border-box end">
<div data-offset-x="0" data-offset-y="0">X</div>
</div>
offsetLeft expected 0 but got 40
PASS .grid 9
FAIL .grid 10 assert_equals:
<div class="grid small border-box space-around">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 40
PASS .grid 11
FAIL .grid 12 assert_equals:
<div class="grid big content-box center">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 0
FAIL .grid 13 assert_equals:
<div class="grid big content-box end">
<div data-offset-x="40" data-offset-y="40">X</div>
</div>
offsetLeft expected 40 but got 0
PASS .grid 14
FAIL .grid 15 assert_equals:
<div class="grid big content-box space-around">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 0
PASS .grid 16
FAIL .grid 17 assert_equals:
<div class="grid big border-box center">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 0
FAIL .grid 18 assert_equals:
<div class="grid big border-box end">
<div data-offset-x="40" data-offset-y="40">X</div>
</div>
offsetLeft expected 40 but got 0
PASS .grid 19
FAIL .grid 20 assert_equals:
<div class="grid big border-box space-around">
<div data-offset-x="20" data-offset-y="20">X</div>
</div>
offsetLeft expected 20 but got 0
Harness: the test ran to completion.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment