Bug 1938619 - Add a pref (disabled by default) to enable intrinsic sizing of flexible grid tracks based on grid items that span multiple tracks. r=layout-grid-reviewers,dholbert
The pref layout.css.grid-flex-spanning-items-intrinsic-sizing.enabled is expected to be removed once these regressions are fixed. This should be a good compromise between maintaining the code from bug 1916849, and avoiding breakage/extra backouts. Differential Revision: https://phabricator.services.mozilla.com/D235089
This commit is contained in:
@@ -6814,6 +6814,10 @@ void nsGridContainerFrame::Tracks::ResolveIntrinsicSize(
|
|||||||
// Set eIsFlexing on the item state here to speed up
|
// Set eIsFlexing on the item state here to speed up
|
||||||
// FindUsedFlexFraction later.
|
// FindUsedFlexFraction later.
|
||||||
gridItem.mState[mAxis] |= ItemState::eIsFlexing;
|
gridItem.mState[mAxis] |= ItemState::eIsFlexing;
|
||||||
|
if (!StaticPrefs::
|
||||||
|
layout_css_grid_flex_spanning_items_intrinsic_sizing_enabled()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
items = &flexSpanningItems;
|
items = &flexSpanningItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9527,6 +9527,13 @@
|
|||||||
mirror: always
|
mirror: always
|
||||||
rust: true
|
rust: true
|
||||||
|
|
||||||
|
# Perform intrinsic sizing of flexible grid tracks based on grid items that
|
||||||
|
# span more than one track.
|
||||||
|
- name: layout.css.grid-flex-spanning-items-intrinsic-sizing.enabled
|
||||||
|
type: bool
|
||||||
|
value: false
|
||||||
|
mirror: always
|
||||||
|
|
||||||
# Is support for :has() enabled?
|
# Is support for :has() enabled?
|
||||||
- name: layout.css.has-selector.enabled
|
- name: layout.css.has-selector.enabled
|
||||||
type: RelaxedAtomicBool
|
type: RelaxedAtomicBool
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
[grid-flex-track-intrinsic-sizes-001.html]
|
||||||
|
expected:
|
||||||
|
if (os == "android") and fission: [OK, TIMEOUT]
|
||||||
|
['grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
|
||||||
|
expected: FAIL
|
||||||
@@ -1,3 +1,14 @@
|
|||||||
[grid-flex-track-intrinsic-sizes-002.html]
|
[grid-flex-track-intrinsic-sizes-002.html]
|
||||||
|
expected:
|
||||||
|
if (os == "android") and fission: [OK, TIMEOUT]
|
||||||
['grid' with: grid-template-columns: 1fr 1fr 1fr; and grid-template-rows: 1fr 1fr 1fr;]
|
['grid' with: grid-template-columns: 1fr 1fr 1fr; and grid-template-rows: 1fr 1fr 1fr;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr auto auto auto; and grid-template-rows: 1fr auto auto auto;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr 1fr 1fr 1fr; and grid-template-rows: 1fr 1fr 1fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
['grid' with: grid-template-columns: 1fr 1fr 1fr 4fr; and grid-template-rows: 1fr 1fr 1fr 4fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|||||||
@@ -1,6 +1,74 @@
|
|||||||
[grid-flex-track-intrinsic-sizes-003.html]
|
[grid-flex-track-intrinsic-sizes-003.html]
|
||||||
|
expected:
|
||||||
|
if (os == "android") and fission: [OK, TIMEOUT]
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[min-content min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
|
[min-content min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr min-content; and grid-template-rows: 1fr min-content;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr 1fr; and grid-template-rows: 0fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr minmax(25px, 1fr); and grid-template-rows: 1fr minmax(25px, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr max-content; and grid-template-rows: 1fr max-content;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 0fr); and grid-template-rows: 0fr minmax(0, 0fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr 0fr; and grid-template-rows: 1fr 0fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr auto; and grid-template-rows: 0fr auto;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr 3fr; and grid-template-rows: 1fr 3fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[50px min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
|
[50px min item 'grid' with: grid-template-columns: 0.5fr auto; and grid-template-rows: 0.5fr auto;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr 0fr; and grid-template-rows: 0fr 0fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr minmax(0, 1fr); and grid-template-rows: 0fr minmax(0, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[min-content min item 'grid' with: grid-template-columns: 0fr 0fr 1fr; and grid-template-rows: 0fr 0fr 1fr;]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 1fr minmax(0, 1fr); and grid-template-rows: 1fr minmax(0, 1fr);]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[50px min item 'grid' with: grid-template-columns: 0fr min-content; and grid-template-rows: 0fr min-content;]
|
||||||
|
expected: FAIL
|
||||||
|
|||||||
Reference in New Issue
Block a user