Issue #1838 - Part 1: Remove CSS grid preference

Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1398492
This commit is contained in:
FranklinDM 2022-04-02 00:49:25 +08:00 • committed by roytam1
commit 4f059d2c8b
15 changed files with 585 additions and 664 deletions

View file

@ -2,9 +2,6 @@
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!--
user_pref("layout.css.grid.enabled", true);
-->
<script> <script>
function boom() function boom()

View file

@ -467,7 +467,7 @@ load 1116104.html
load 1127198-1.html load 1127198-1.html
load 1140198.html load 1140198.html
load 1143535.html load 1143535.html
pref(layout.css.grid.enabled,true) load 1156588.html load 1156588.html
load 1162813.xul load 1162813.xul
load 1163583.html load 1163583.html
load 1234622-1.html load 1234622-1.html

View file

@ -145,7 +145,6 @@ using namespace mozilla::layers;
using namespace mozilla::layout; using namespace mozilla::layout;
using namespace mozilla::gfx; using namespace mozilla::gfx;
#define GRID_ENABLED_PREF_NAME "layout.css.grid.enabled"
#define GRID_TEMPLATE_SUBGRID_ENABLED_PREF_NAME "layout.css.grid-template-subgrid-value.enabled" #define GRID_TEMPLATE_SUBGRID_ENABLED_PREF_NAME "layout.css.grid-template-subgrid-value.enabled"
#define WEBKIT_PREFIXES_ENABLED_PREF_NAME "layout.css.prefixes.webkit" #define WEBKIT_PREFIXES_ENABLED_PREF_NAME "layout.css.prefixes.webkit"
#define DISPLAY_FLOW_ROOT_ENABLED_PREF_NAME "layout.css.display-flow-root.enabled" #define DISPLAY_FLOW_ROOT_ENABLED_PREF_NAME "layout.css.display-flow-root.enabled"
@ -198,51 +197,6 @@ static ContentMap& GetContentMap() {
return *sContentMap; return *sContentMap;
} }
// When the pref "layout.css.grid.enabled" changes, this function is invoked
// to let us update kDisplayKTable, to selectively disable or restore the
// entries for "grid" and "inline-grid" in that table.
static void
GridEnabledPrefChangeCallback(const char* aPrefName, void* aClosure)
{
MOZ_ASSERT(strncmp(aPrefName, GRID_ENABLED_PREF_NAME,
ArrayLength(GRID_ENABLED_PREF_NAME)) == 0,
"We only registered this callback for a single pref, so it "
"should only be called for that pref");
static int32_t sIndexOfGridInDisplayTable;
static int32_t sIndexOfInlineGridInDisplayTable;
static bool sAreGridKeywordIndicesInitialized; // initialized to false
bool isGridEnabled =
Preferences::GetBool(GRID_ENABLED_PREF_NAME, false);
if (!sAreGridKeywordIndicesInitialized) {
// First run: find the position of "grid" and "inline-grid" in
// kDisplayKTable.
sIndexOfGridInDisplayTable =
nsCSSProps::FindIndexOfKeyword(eCSSKeyword_grid,
nsCSSProps::kDisplayKTable);
MOZ_ASSERT(sIndexOfGridInDisplayTable >= 0,
"Couldn't find grid in kDisplayKTable");
sIndexOfInlineGridInDisplayTable =
nsCSSProps::FindIndexOfKeyword(eCSSKeyword_inline_grid,
nsCSSProps::kDisplayKTable);
MOZ_ASSERT(sIndexOfInlineGridInDisplayTable >= 0,
"Couldn't find inline-grid in kDisplayKTable");
sAreGridKeywordIndicesInitialized = true;
}
// OK -- now, stomp on or restore the "grid" entries in kDisplayKTable,
// depending on whether the grid pref is enabled vs. disabled.
if (sIndexOfGridInDisplayTable >= 0) {
nsCSSProps::kDisplayKTable[sIndexOfGridInDisplayTable].mKeyword =
isGridEnabled ? eCSSKeyword_grid : eCSSKeyword_UNKNOWN;
}
if (sIndexOfInlineGridInDisplayTable >= 0) {
nsCSSProps::kDisplayKTable[sIndexOfInlineGridInDisplayTable].mKeyword =
isGridEnabled ? eCSSKeyword_inline_grid : eCSSKeyword_UNKNOWN;
}
}
// When the pref "layout.css.prefixes.webkit" changes, this function is invoked // When the pref "layout.css.prefixes.webkit" changes, this function is invoked
// to let us update kDisplayKTable, to selectively disable or restore the // to let us update kDisplayKTable, to selectively disable or restore the
// entries for "-webkit-box" and "-webkit-inline-box" in that table. // entries for "-webkit-box" and "-webkit-inline-box" in that table.
@ -7575,8 +7529,6 @@ struct PrefCallbacks
PrefChangedFunc func; PrefChangedFunc func;
}; };
static const PrefCallbacks kPrefCallbacks[] = { static const PrefCallbacks kPrefCallbacks[] = {
{ GRID_ENABLED_PREF_NAME,
GridEnabledPrefChangeCallback },
{ WEBKIT_PREFIXES_ENABLED_PREF_NAME, { WEBKIT_PREFIXES_ENABLED_PREF_NAME,
WebkitPrefixEnabledPrefChangeCallback }, WebkitPrefixEnabledPrefChangeCallback },
{ TEXT_ALIGN_UNSAFE_ENABLED_PREF_NAME, { TEXT_ALIGN_UNSAFE_ENABLED_PREF_NAME,

View file

@ -3,10 +3,6 @@
<head> <head>
<script> <script>
/*
user_pref("layout.css.grid.enabled", true);
*/
function boom() function boom()
{ {
document.getElementById("r").appendChild(document.createTextNode("B")); document.getElementById("r").appendChild(document.createTextNode("B"));

View file

@ -2,9 +2,6 @@
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<!--
user_pref("layout.css.grid.enabled", true);
-->
<script> <script>
function boom() function boom()
{ {

View file

@ -566,7 +566,7 @@ load 986899.html
load 1001233.html load 1001233.html
load 1001258-1.html load 1001258-1.html
load 1003441.xul load 1003441.xul
pref(layout.css.grid.enabled,true) load 1015562.html load 1015562.html
asserts(1-2) load 1015563-1.html asserts(1-2) load 1015563-1.html
asserts(1-2) load 1015563-2.html asserts(1-2) load 1015563-2.html
asserts(0-300) load 1015844.html # bug 574889 asserts(0-300) load 1015844.html # bug 574889
@ -589,7 +589,7 @@ load 1146107.html
load 1146114.html load 1146114.html
load 1153695.html load 1153695.html
load 1156222.html load 1156222.html
pref(layout.css.grid.enabled,true) load 1156257.html load 1156257.html
load 1157011.html load 1157011.html
load 1169420-1.html load 1169420-1.html
load 1169420-2.html load 1169420-2.html
@ -601,9 +601,9 @@ load 1222783.xhtml
load 1223568-1.html load 1223568-1.html
load 1223568-2.html load 1223568-2.html
load 1224230-1.html load 1224230-1.html
pref(layout.css.grid.enabled,true) load 1225118.html load 1225118.html
pref(layout.css.grid.enabled,true) load 1225376.html load 1225376.html
pref(layout.css.grid.enabled,true) load 1225592.html load 1225592.html
load 1229437-1.html load 1229437-1.html
load 1229437-2.html load 1229437-2.html
pref(dom.details_element.enabled,true) load details-containing-only-text.html pref(dom.details_element.enabled,true) load details-containing-only-text.html

View file

@ -1841,7 +1841,7 @@ fuzzy-if(skiaContent,1,24000) == 1025914-1.html 1025914-1-ref.html
== 1050493-1.html 1050493-1-ref.html == 1050493-1.html 1050493-1-ref.html
== 1050788-1.html about:blank == 1050788-1.html about:blank
== 1053035-1-flex.html 1053035-1-ref.html == 1053035-1-flex.html 1053035-1-ref.html
test-pref(layout.css.grid.enabled,true) == 1053035-1-grid.html 1053035-1-ref.html == 1053035-1-grid.html 1053035-1-ref.html
== 1059167-1.html 1059167-1-ref.html == 1059167-1.html 1059167-1-ref.html
== 1059498-1.html 1059498-1-ref.html == 1059498-1.html 1059498-1-ref.html
== 1059498-2.html 1059498-1-ref.html == 1059498-2.html 1059498-1-ref.html

View file

@ -1,5 +1,3 @@
default-preferences pref(layout.css.grid.enabled,true)
fails == grid-whitespace-handling-1a.xhtml grid-whitespace-handling-1-ref.xhtml fails == grid-whitespace-handling-1a.xhtml grid-whitespace-handling-1-ref.xhtml
fails == grid-whitespace-handling-1b.xhtml grid-whitespace-handling-1-ref.xhtml fails == grid-whitespace-handling-1b.xhtml grid-whitespace-handling-1-ref.xhtml
== grid-whitespace-handling-2.xhtml grid-whitespace-handling-2-ref.xhtml == grid-whitespace-handling-2.xhtml grid-whitespace-handling-2-ref.xhtml

View file

@ -1,6 +1,6 @@
fuzzy-if(OSX>=1008,55,4) == numbering-1.html numbering-1-ref.html fuzzy-if(OSX>=1008,55,4) == numbering-1.html numbering-1-ref.html
== numbering-2.html numbering-2-ref.html == numbering-2.html numbering-2-ref.html
pref(layout.css.grid.enabled,true) fuzzy-if(OSX>=1008,8,1) == numbering-3.html numbering-3-ref.html fuzzy-if(OSX>=1008,8,1) == numbering-3.html numbering-3-ref.html
fuzzy-if(OSX>=1008,72,2) == numbering-4.html numbering-4-ref.html fuzzy-if(OSX>=1008,72,2) == numbering-4.html numbering-4-ref.html
== ol-reversed-1a.html ol-reversed-1-ref.html == ol-reversed-1a.html ol-reversed-1-ref.html
asserts(1) == ol-reversed-1b.html ol-reversed-1-ref.html # bug 478135 asserts(1) == ol-reversed-1b.html ol-reversed-1-ref.html # bug 478135

View file

@ -2104,21 +2104,20 @@ CSS_PROP_SHORTHAND(
grid, grid,
Grid, Grid,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled") "")
CSS_PROP_SHORTHAND( CSS_PROP_SHORTHAND(
grid-area, grid-area,
grid_area, grid_area,
GridArea, GridArea,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled") "")
CSS_PROP_POSITION( CSS_PROP_POSITION(
grid-auto-columns, grid-auto-columns,
grid_auto_columns, grid_auto_columns,
GridAutoColumns, GridAutoColumns,
CSS_PROPERTY_PARSE_FUNCTION | CSS_PROPERTY_PARSE_FUNCTION |
CSS_PROPERTY_STORES_CALC | CSS_PROPERTY_STORES_CALC,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
0, 0,
kGridTrackBreadthKTable, kGridTrackBreadthKTable,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2127,9 +2126,8 @@ CSS_PROP_POSITION(
grid-auto-flow, grid-auto-flow,
grid_auto_flow, grid_auto_flow,
GridAutoFlow, GridAutoFlow,
CSS_PROPERTY_PARSE_FUNCTION | CSS_PROPERTY_PARSE_FUNCTION,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
0, 0,
kGridAutoFlowKTable, kGridAutoFlowKTable,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2139,9 +2137,8 @@ CSS_PROP_POSITION(
grid_auto_rows, grid_auto_rows,
GridAutoRows, GridAutoRows,
CSS_PROPERTY_PARSE_FUNCTION | CSS_PROPERTY_PARSE_FUNCTION |
CSS_PROPERTY_STORES_CALC | CSS_PROPERTY_STORES_CALC,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
0, 0,
kGridTrackBreadthKTable, kGridTrackBreadthKTable,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2151,13 +2148,13 @@ CSS_PROP_SHORTHAND(
grid_column, grid_column,
GridColumn, GridColumn,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled") "")
CSS_PROP_POSITION( CSS_PROP_POSITION(
grid-column-end, grid-column-end,
grid_column_end, grid_column_end,
GridColumnEnd, GridColumnEnd,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled", "",
0, 0,
nullptr, nullptr,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2167,9 +2164,8 @@ CSS_PROP_POSITION(
grid_column_gap, grid_column_gap,
GridColumnGap, GridColumnGap,
CSS_PROPERTY_PARSE_VALUE | CSS_PROPERTY_PARSE_VALUE |
CSS_PROPERTY_VALUE_NONNEGATIVE | CSS_PROPERTY_VALUE_NONNEGATIVE,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
VARIANT_HLP | VARIANT_CALC, VARIANT_HLP | VARIANT_CALC,
nullptr, nullptr,
offsetof(nsStylePosition, mGridColumnGap), offsetof(nsStylePosition, mGridColumnGap),
@ -2179,7 +2175,7 @@ CSS_PROP_POSITION(
grid_column_start, grid_column_start,
GridColumnStart, GridColumnStart,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled", "",
0, 0,
nullptr, nullptr,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2189,19 +2185,19 @@ CSS_PROP_SHORTHAND(
grid_gap, grid_gap,
GridGap, GridGap,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled") "")
CSS_PROP_SHORTHAND( CSS_PROP_SHORTHAND(
grid-row, grid-row,
grid_row, grid_row,
GridRow, GridRow,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled") "")
CSS_PROP_POSITION( CSS_PROP_POSITION(
grid-row-end, grid-row-end,
grid_row_end, grid_row_end,
GridRowEnd, GridRowEnd,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled", "",
0, 0,
nullptr, nullptr,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2211,9 +2207,8 @@ CSS_PROP_POSITION(
grid_row_gap, grid_row_gap,
GridRowGap, GridRowGap,
CSS_PROPERTY_PARSE_VALUE | CSS_PROPERTY_PARSE_VALUE |
CSS_PROPERTY_VALUE_NONNEGATIVE | CSS_PROPERTY_VALUE_NONNEGATIVE,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
VARIANT_HLP | VARIANT_CALC, VARIANT_HLP | VARIANT_CALC,
nullptr, nullptr,
offsetof(nsStylePosition, mGridRowGap), offsetof(nsStylePosition, mGridRowGap),
@ -2223,7 +2218,7 @@ CSS_PROP_POSITION(
grid_row_start, grid_row_start,
GridRowStart, GridRowStart,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled", "",
0, 0,
nullptr, nullptr,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2233,14 +2228,13 @@ CSS_PROP_SHORTHAND(
grid_template, grid_template,
GridTemplate, GridTemplate,
CSS_PROPERTY_PARSE_FUNCTION, CSS_PROPERTY_PARSE_FUNCTION,
"layout.css.grid.enabled") "")
CSS_PROP_POSITION( CSS_PROP_POSITION(
grid-template-areas, grid-template-areas,
grid_template_areas, grid_template_areas,
GridTemplateAreas, GridTemplateAreas,
CSS_PROPERTY_PARSE_FUNCTION | CSS_PROPERTY_PARSE_FUNCTION,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
0, 0,
nullptr, nullptr,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2251,9 +2245,8 @@ CSS_PROP_POSITION(
GridTemplateColumns, GridTemplateColumns,
CSS_PROPERTY_PARSE_FUNCTION | CSS_PROPERTY_PARSE_FUNCTION |
CSS_PROPERTY_STORES_CALC | CSS_PROPERTY_STORES_CALC |
CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH | CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
0, 0,
kGridTrackBreadthKTable, kGridTrackBreadthKTable,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,
@ -2264,9 +2257,8 @@ CSS_PROP_POSITION(
GridTemplateRows, GridTemplateRows,
CSS_PROPERTY_PARSE_FUNCTION | CSS_PROPERTY_PARSE_FUNCTION |
CSS_PROPERTY_STORES_CALC | CSS_PROPERTY_STORES_CALC |
CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH | CSS_PROPERTY_GETCS_NEEDS_LAYOUT_FLUSH,
CSS_PROPERTY_ENABLED_IN_UA_SHEETS, "",
"layout.css.grid.enabled",
0, 0,
kGridTrackBreadthKTable, kGridTrackBreadthKTable,
CSS_PROP_NO_OFFSET, CSS_PROP_NO_OFFSET,

View file

@ -1334,7 +1334,6 @@ KTableEntry nsCSSProps::kDisplayKTable[] = {
{ eCSSKeyword_ruby_base_container, StyleDisplay::RubyBaseContainer }, { eCSSKeyword_ruby_base_container, StyleDisplay::RubyBaseContainer },
{ eCSSKeyword_ruby_text, StyleDisplay::RubyText }, { eCSSKeyword_ruby_text, StyleDisplay::RubyText },
{ eCSSKeyword_ruby_text_container, StyleDisplay::RubyTextContainer }, { eCSSKeyword_ruby_text_container, StyleDisplay::RubyTextContainer },
// The next two entries are controlled by the layout.css.grid.enabled pref.
{ eCSSKeyword_grid, StyleDisplay::Grid }, { eCSSKeyword_grid, StyleDisplay::Grid },
{ eCSSKeyword_inline_grid, StyleDisplay::InlineGrid }, { eCSSKeyword_inline_grid, StyleDisplay::InlineGrid },
// The next 4 entries are controlled by the layout.css.prefixes.webkit pref. // The next 4 entries are controlled by the layout.css.prefixes.webkit pref.

View file

@ -379,8 +379,6 @@ nsLayoutStylesheetCache::For(StyleBackendType aType)
// style sheets will be re-parsed. // style sheets will be re-parsed.
// Preferences::RegisterCallback(&DependentPrefChanged, // Preferences::RegisterCallback(&DependentPrefChanged,
// "layout.css.example-pref.enabled"); // "layout.css.example-pref.enabled");
Preferences::RegisterCallback(&DependentPrefChanged,
"layout.css.grid.enabled");
Preferences::RegisterCallback(&DependentPrefChanged, Preferences::RegisterCallback(&DependentPrefChanged,
"dom.details_element.enabled"); "dom.details_element.enabled");
} }
@ -553,7 +551,7 @@ nsLayoutStylesheetCache::DependentPrefChanged(const char* aPref, void* aData)
InvalidateSheet(gStyleCache_Gecko ? &gStyleCache_Gecko->sheet_ : nullptr, \ InvalidateSheet(gStyleCache_Gecko ? &gStyleCache_Gecko->sheet_ : nullptr, \
gStyleCache_Servo ? &gStyleCache_Servo->sheet_ : nullptr); gStyleCache_Servo ? &gStyleCache_Servo->sheet_ : nullptr);
INVALIDATE(mUASheet); // for layout.css.grid.enabled // INVALIDATE(mUASheet); // for layout.css.example-pref.enabled
INVALIDATE(mHTMLSheet); // for dom.details_element.enabled INVALIDATE(mHTMLSheet); // for dom.details_element.enabled
#undef INVALIDATE #undef INVALIDATE

View file

@ -6187,12 +6187,11 @@ if (IsCSSPropertyPrefEnabled("layout.css.filters.enabled")) {
}; };
} }
if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) { var isGridTemplateSubgridValueEnabled =
var isGridTemplateSubgridValueEnabled =
IsCSSPropertyPrefEnabled("layout.css.grid-template-subgrid-value.enabled"); IsCSSPropertyPrefEnabled("layout.css.grid-template-subgrid-value.enabled");
gCSSProperties["display"].other_values.push("grid", "inline-grid"); gCSSProperties["display"].other_values.push("grid", "inline-grid");
gCSSProperties["grid-auto-flow"] = { gCSSProperties["grid-auto-flow"] = {
domProp: "gridAutoFlow", domProp: "gridAutoFlow",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
@ -6213,9 +6212,9 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"column row", "column row",
"dense row dense", "dense row dense",
] ]
}; };
gCSSProperties["grid-auto-columns"] = { gCSSProperties["grid-auto-columns"] = {
domProp: "gridAutoColumns", domProp: "gridAutoColumns",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
@ -6255,17 +6254,17 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"fit-content(auto)", "fit-content(auto)",
"fit-content(min-content)", "fit-content(min-content)",
] ]
}; };
gCSSProperties["grid-auto-rows"] = { gCSSProperties["grid-auto-rows"] = {
domProp: "gridAutoRows", domProp: "gridAutoRows",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
initial_values: gCSSProperties["grid-auto-columns"].initial_values, initial_values: gCSSProperties["grid-auto-columns"].initial_values,
other_values: gCSSProperties["grid-auto-columns"].other_values, other_values: gCSSProperties["grid-auto-columns"].other_values,
invalid_values: gCSSProperties["grid-auto-columns"].invalid_values invalid_values: gCSSProperties["grid-auto-columns"].invalid_values
}; };
gCSSProperties["grid-template-columns"] = { gCSSProperties["grid-template-columns"] = {
domProp: "gridTemplateColumns", domProp: "gridTemplateColumns",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
@ -6376,8 +6375,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
unbalanced_values: [ unbalanced_values: [
"(foo] 40px", "(foo] 40px",
] ]
}; };
if (isGridTemplateSubgridValueEnabled) { if (isGridTemplateSubgridValueEnabled) {
gCSSProperties["grid-template-columns"].other_values.push( gCSSProperties["grid-template-columns"].other_values.push(
// See https://bugzilla.mozilla.org/show_bug.cgi?id=981300 // See https://bugzilla.mozilla.org/show_bug.cgi?id=981300
"[none auto subgrid min-content max-content foo] 40px", "[none auto subgrid min-content max-content foo] 40px",
@ -6418,16 +6417,16 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"subgrid repeat(Auto-fill, [a] [b c] [] [d])", "subgrid repeat(Auto-fill, [a] [b c] [] [d])",
"subgrid repeat(auto-fill, []) repeat(auto-fill, [])" "subgrid repeat(auto-fill, []) repeat(auto-fill, [])"
); );
} }
gCSSProperties["grid-template-rows"] = { gCSSProperties["grid-template-rows"] = {
domProp: "gridTemplateRows", domProp: "gridTemplateRows",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
initial_values: gCSSProperties["grid-template-columns"].initial_values, initial_values: gCSSProperties["grid-template-columns"].initial_values,
other_values: gCSSProperties["grid-template-columns"].other_values, other_values: gCSSProperties["grid-template-columns"].other_values,
invalid_values: gCSSProperties["grid-template-columns"].invalid_values invalid_values: gCSSProperties["grid-template-columns"].invalid_values
}; };
gCSSProperties["grid-template-areas"] = { gCSSProperties["grid-template-areas"] = {
domProp: "gridTemplateAreas", domProp: "gridTemplateAreas",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
@ -6452,9 +6451,9 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"'a a' 'a .'", "'a a' 'a .'",
"'a a'\n'..'\n'a a'", "'a a'\n'..'\n'a a'",
] ]
}; };
gCSSProperties["grid-template"] = { gCSSProperties["grid-template"] = {
domProp: "gridTemplate", domProp: "gridTemplate",
inherited: false, inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND, type: CSS_TYPE_TRUE_SHORTHAND,
@ -6491,8 +6490,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"[fizz] [buzz] 'foo' / 40px", "[fizz] [buzz] 'foo' / 40px",
"'foo' / none" "'foo' / none"
] ]
}; };
if (isGridTemplateSubgridValueEnabled) { if (isGridTemplateSubgridValueEnabled) {
gCSSProperties["grid-template"].other_values.push( gCSSProperties["grid-template"].other_values.push(
"subgrid", "subgrid",
"subgrid/40px 20px", "subgrid/40px 20px",
@ -6507,9 +6506,9 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"subgrid [] / 'fizz'", "subgrid [] / 'fizz'",
"subgrid / 'fizz'" "subgrid / 'fizz'"
); );
} }
gCSSProperties["grid"] = { gCSSProperties["grid"] = {
domProp: "grid", domProp: "grid",
inherited: false, inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND, type: CSS_TYPE_TRUE_SHORTHAND,
@ -6557,9 +6556,9 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
gCSSProperties["grid-auto-flow"].invalid_values gCSSProperties["grid-auto-flow"].invalid_values
.filter((v) => v != 'none') .filter((v) => v != 'none')
) )
}; };
var gridLineOtherValues = [ var gridLineOtherValues = [
"foo", "foo",
"2", "2",
"2 foo", "2 foo",
@ -6575,8 +6574,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"span foo 2", "span foo 2",
"2 foo span", "2 foo span",
"foo 2 span", "foo 2 span",
]; ];
var gridLineInvalidValues = [ var gridLineInvalidValues = [
"", "",
"4th", "4th",
"span", "span",
@ -6598,57 +6597,57 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
"span 2 span", "span 2 span",
"span foo span", "span foo span",
"span 2 foo span", "span 2 foo span",
]; ];
gCSSProperties["grid-column-start"] = { gCSSProperties["grid-column-start"] = {
domProp: "gridColumnStart", domProp: "gridColumnStart",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ], initial_values: [ "auto" ],
other_values: gridLineOtherValues, other_values: gridLineOtherValues,
invalid_values: gridLineInvalidValues invalid_values: gridLineInvalidValues
}; };
gCSSProperties["grid-column-end"] = { gCSSProperties["grid-column-end"] = {
domProp: "gridColumnEnd", domProp: "gridColumnEnd",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ], initial_values: [ "auto" ],
other_values: gridLineOtherValues, other_values: gridLineOtherValues,
invalid_values: gridLineInvalidValues invalid_values: gridLineInvalidValues
}; };
gCSSProperties["grid-row-start"] = { gCSSProperties["grid-row-start"] = {
domProp: "gridRowStart", domProp: "gridRowStart",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ], initial_values: [ "auto" ],
other_values: gridLineOtherValues, other_values: gridLineOtherValues,
invalid_values: gridLineInvalidValues invalid_values: gridLineInvalidValues
}; };
gCSSProperties["grid-row-end"] = { gCSSProperties["grid-row-end"] = {
domProp: "gridRowEnd", domProp: "gridRowEnd",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
initial_values: [ "auto" ], initial_values: [ "auto" ],
other_values: gridLineOtherValues, other_values: gridLineOtherValues,
invalid_values: gridLineInvalidValues invalid_values: gridLineInvalidValues
}; };
// The grid-column and grid-row shorthands take values of the form // The grid-column and grid-row shorthands take values of the form
// <grid-line> [ / <grid-line> ]? // <grid-line> [ / <grid-line> ]?
var gridColumnRowOtherValues = [].concat(gridLineOtherValues); var gridColumnRowOtherValues = [].concat(gridLineOtherValues);
gridLineOtherValues.concat([ "auto" ]).forEach(function(val) { gridLineOtherValues.concat([ "auto" ]).forEach(function(val) {
gridColumnRowOtherValues.push(" foo / " + val); gridColumnRowOtherValues.push(" foo / " + val);
gridColumnRowOtherValues.push(val + "/2"); gridColumnRowOtherValues.push(val + "/2");
}); });
var gridColumnRowInvalidValues = [ var gridColumnRowInvalidValues = [
"foo, bar", "foo, bar",
"foo / bar / baz", "foo / bar / baz",
].concat(gridLineInvalidValues); ].concat(gridLineInvalidValues);
gridLineInvalidValues.forEach(function(val) { gridLineInvalidValues.forEach(function(val) {
gridColumnRowInvalidValues.push("span 3 / " + val); gridColumnRowInvalidValues.push("span 3 / " + val);
gridColumnRowInvalidValues.push(val + " / foo"); gridColumnRowInvalidValues.push(val + " / foo");
}); });
gCSSProperties["grid-column"] = { gCSSProperties["grid-column"] = {
domProp: "gridColumn", domProp: "gridColumn",
inherited: false, inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND, type: CSS_TYPE_TRUE_SHORTHAND,
@ -6659,8 +6658,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
initial_values: [ "auto", "auto / auto" ], initial_values: [ "auto", "auto / auto" ],
other_values: gridColumnRowOtherValues, other_values: gridColumnRowOtherValues,
invalid_values: gridColumnRowInvalidValues invalid_values: gridColumnRowInvalidValues
}; };
gCSSProperties["grid-row"] = { gCSSProperties["grid-row"] = {
domProp: "gridRow", domProp: "gridRow",
inherited: false, inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND, type: CSS_TYPE_TRUE_SHORTHAND,
@ -6671,29 +6670,29 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
initial_values: [ "auto", "auto / auto" ], initial_values: [ "auto", "auto / auto" ],
other_values: gridColumnRowOtherValues, other_values: gridColumnRowOtherValues,
invalid_values: gridColumnRowInvalidValues invalid_values: gridColumnRowInvalidValues
}; };
var gridAreaOtherValues = gridLineOtherValues.slice(); var gridAreaOtherValues = gridLineOtherValues.slice();
gridLineOtherValues.forEach(function(val) { gridLineOtherValues.forEach(function(val) {
gridAreaOtherValues.push("foo / " + val); gridAreaOtherValues.push("foo / " + val);
gridAreaOtherValues.push(val + "/2/3"); gridAreaOtherValues.push(val + "/2/3");
gridAreaOtherValues.push("foo / bar / " + val + " / baz"); gridAreaOtherValues.push("foo / bar / " + val + " / baz");
}); });
var gridAreaInvalidValues = [ var gridAreaInvalidValues = [
"foo, bar", "foo, bar",
"foo / bar / baz / fizz / buzz", "foo / bar / baz / fizz / buzz",
"default / foo / bar / baz", "default / foo / bar / baz",
"foo / initial / bar / baz", "foo / initial / bar / baz",
"foo / bar / inherit / baz", "foo / bar / inherit / baz",
"foo / bar / baz / unset", "foo / bar / baz / unset",
].concat(gridLineInvalidValues); ].concat(gridLineInvalidValues);
gridLineInvalidValues.forEach(function(val) { gridLineInvalidValues.forEach(function(val) {
gridAreaInvalidValues.push("foo / " + val); gridAreaInvalidValues.push("foo / " + val);
gridAreaInvalidValues.push("foo / bar / " + val); gridAreaInvalidValues.push("foo / bar / " + val);
gridAreaInvalidValues.push("foo / 4 / bar / " + val); gridAreaInvalidValues.push("foo / 4 / bar / " + val);
}); });
gCSSProperties["grid-area"] = { gCSSProperties["grid-area"] = {
domProp: "gridArea", domProp: "gridArea",
inherited: false, inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND, type: CSS_TYPE_TRUE_SHORTHAND,
@ -6711,9 +6710,9 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
], ],
other_values: gridAreaOtherValues, other_values: gridAreaOtherValues,
invalid_values: gridAreaInvalidValues invalid_values: gridAreaInvalidValues
}; };
gCSSProperties["grid-column-gap"] = { gCSSProperties["grid-column-gap"] = {
domProp: "gridColumnGap", domProp: "gridColumnGap",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
@ -6721,8 +6720,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
other_values: [ "2px", "2%", "1em", "calc(1px + 1em)", "calc(1%)", other_values: [ "2px", "2%", "1em", "calc(1px + 1em)", "calc(1%)",
"calc(1% + 1ch)" , "calc(1px - 99%)" ], "calc(1% + 1ch)" , "calc(1px - 99%)" ],
invalid_values: [ "-1px", "auto", "none", "1px 1px", "-1%", "fit-content(1px)" ], invalid_values: [ "-1px", "auto", "none", "1px 1px", "-1%", "fit-content(1px)" ],
}; };
gCSSProperties["grid-row-gap"] = { gCSSProperties["grid-row-gap"] = {
domProp: "gridRowGap", domProp: "gridRowGap",
inherited: false, inherited: false,
type: CSS_TYPE_LONGHAND, type: CSS_TYPE_LONGHAND,
@ -6730,8 +6729,8 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
other_values: [ "2px", "2%", "1em", "calc(1px + 1em)", "calc(1%)", other_values: [ "2px", "2%", "1em", "calc(1px + 1em)", "calc(1%)",
"calc(1% + 1ch)" , "calc(1px - 99%)" ], "calc(1% + 1ch)" , "calc(1px - 99%)" ],
invalid_values: [ "-1px", "auto", "none", "1px 1px", "-1%", "min-content" ], invalid_values: [ "-1px", "auto", "none", "1px 1px", "-1%", "min-content" ],
}; };
gCSSProperties["grid-gap"] = { gCSSProperties["grid-gap"] = {
domProp: "gridGap", domProp: "gridGap",
inherited: false, inherited: false,
type: CSS_TYPE_TRUE_SHORTHAND, type: CSS_TYPE_TRUE_SHORTHAND,
@ -6740,8 +6739,7 @@ if (IsCSSPropertyPrefEnabled("layout.css.grid.enabled")) {
other_values: [ "1ch 0", "1px 1%", "1em 1px", "calc(1px) calc(1%)" ], other_values: [ "1ch 0", "1px 1%", "1em 1px", "calc(1px) calc(1%)" ],
invalid_values: [ "-1px", "1px -1px", "1px 1px 1px", "inherit 1px", invalid_values: [ "-1px", "1px -1px", "1px 1px 1px", "inherit 1px",
"1px auto" ] "1px auto" ]
}; };
}
if (IsCSSPropertyPrefEnabled("layout.css.display-contents.enabled")) { if (IsCSSPropertyPrefEnabled("layout.css.display-contents.enabled")) {
gCSSProperties["display"].other_values.push("contents"); gCSSProperties["display"].other_values.push("contents");

View file

@ -1923,9 +1923,6 @@ function test_font_weight(prop) {
} }
function test_grid_gap(prop) { function test_grid_gap(prop) {
if (!SpecialPowers.getBoolPref("layout.css.grid.enabled")) {
return;
}
test_length_transition(prop); test_length_transition(prop);
test_length_clamped(prop); test_length_clamped(prop);
test_percent_transition(prop); test_percent_transition(prop);

View file

@ -2541,9 +2541,6 @@ pref("layout.css.variables.enabled", true);
// Is support for CSS overflow-clip-box enabled for non-UA sheets? // Is support for CSS overflow-clip-box enabled for non-UA sheets?
pref("layout.css.overflow-clip-box.enabled", false); pref("layout.css.overflow-clip-box.enabled", false);
// Is support for CSS grid enabled?
pref("layout.css.grid.enabled", true);
// Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled? // Is support for CSS "grid-template-{columns,rows}: subgrid X" enabled?
pref("layout.css.grid-template-subgrid-value.enabled", false); pref("layout.css.grid-template-subgrid-value.enabled", false);