summaryrefslogtreecommitdiffstats
path: root/layout/style/test
diff options
context:
space:
mode:
Diffstat (limited to 'layout/style/test')
-rw-r--r--layout/style/test/chrome/chrome-only-media-queries.js1
-rw-r--r--layout/style/test/mochitest.toml5
-rw-r--r--layout/style/test/property_database.js306
-rw-r--r--layout/style/test/test_hover_quirk.html32
-rw-r--r--layout/style/test/test_non_content_accessible_pseudos.html1
-rw-r--r--layout/style/test/test_selectors.html1
-rw-r--r--layout/style/test/test_style_struct_copy_constructors.html14
7 files changed, 197 insertions, 163 deletions
diff --git a/layout/style/test/chrome/chrome-only-media-queries.js b/layout/style/test/chrome/chrome-only-media-queries.js
index aaf313a526..d17976149b 100644
--- a/layout/style/test/chrome/chrome-only-media-queries.js
+++ b/layout/style/test/chrome/chrome-only-media-queries.js
@@ -31,4 +31,5 @@ const CHROME_ONLY_QUERIES = [
"(-moz-gtk-theme-family: adwaita)",
"(-moz-gtk-theme-family: breeze)",
"(-moz-gtk-theme-family: yaru)",
+ "(forced-colors: requested)",
];
diff --git a/layout/style/test/mochitest.toml b/layout/style/test/mochitest.toml
index 54ad9736f2..cc5f26708f 100644
--- a/layout/style/test/mochitest.toml
+++ b/layout/style/test/mochitest.toml
@@ -6,16 +6,13 @@ prefs = [
"gfx.font_loader.delay=0",
"layout.css.container-queries.enabled=true",
"layout.css.individual-transform.enabled=true",
- "layout.css.motion-path-ray.enabled=true",
- "layout.css.motion-path-basic-shapes.enabled=true",
- "layout.css.motion-path-coord-box.enabled=true",
- "layout.css.motion-path-offset-position.enabled=true",
"layout.css.motion-path-url.enabled=true",
"layout.css.backdrop-filter.enabled=true",
"layout.css.fit-content-function.enabled=true",
"layout.css.scroll-driven-animations.enabled=true",
"layout.css.animation-composition.enabled=true",
"layout.css.basic-shape-rect.enabled=true",
+ "layout.css.basic-shape-shape.enabled=true",
"layout.css.basic-shape-xywh.enabled=true",
"layout.css.transform-box-content-stroke.enabled=true",
"layout.css.transition-behavior.enabled=true",
diff --git a/layout/style/test/property_database.js b/layout/style/test/property_database.js
index 2e8b4c71a3..c63d65926e 100644
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -1035,6 +1035,36 @@ if (IsCSSPropertyPrefEnabled("layout.css.basic-shape-rect.enabled")) {
);
}
+var basicShapeShapeValues = [];
+var basicShapeShapeValuesWithFillRule = [];
+if (IsCSSPropertyPrefEnabled("layout.css.basic-shape-shape.enabled")) {
+ basicShapeShapeValuesWithFillRule.push(
+ "shape(evenodd from 0px 0px, line to 10px 10px)",
+ "shape(nonzero from 0px 0px, line to 10px 10px)"
+ );
+
+ basicShapeShapeValues.push(
+ "shape(from 0px 0%, line to 10px 10%)",
+ "shape(from 10px 10px, move by 10px 5px, line by 20px 40%, close)",
+ "shape(from 10px 10px, hline by 10px, vline to 5rem)",
+ "shape(from 10px 10px, vline by 5%, hline to 1vw)",
+ "shape(from 10px 10px, curve to 50px 20px via 10rem 1%)",
+ "shape(from 10px 10px, smooth to 50px 20px via 10rem 1%)",
+ "shape(from 10% 1rem, arc to 50px 1pt of 20% cw large rotate 25deg)"
+ );
+
+ // It's fine to include this for properties which don't support shape(),
+ // e.g. shape-outside, because they must reject these values.
+ basicShapeInvalidValues.push(
+ "shape()",
+ "shape(evenodd, from 0px 0px)",
+ "shape(from 0px 0px line to 10px 10px)",
+ "shape(from 0px 0px)",
+ "shape(close)",
+ "shape(nonzero, close)"
+ );
+}
+
if (/* mozGradientsEnabled */ true) {
// Maybe one day :(
// Extend gradient lists with valid/invalid moz-prefixed expressions:
@@ -6841,6 +6871,130 @@ var gCSSProperties = {
"left 10px top",
],
},
+ offset: {
+ domProp: "offset",
+ inherited: false,
+ type: CSS_TYPE_TRUE_SHORTHAND,
+ subproperties: [
+ "offset-path",
+ "offset-distance",
+ "offset-rotate",
+ "offset-anchor",
+ "offset-position",
+ ],
+ initial_values: ["none"],
+ other_values: [
+ "none 30deg reverse",
+ "none 50px reverse 30deg",
+ "none calc(10px + 20%) auto",
+ "none reverse",
+ "none / left center",
+ "path('M 0 0 H 1') -200% auto",
+ "path('M 0 0 H 1') -200%",
+ "path('M 0 0 H 1') 50px",
+ "path('M 0 0 H 1') auto",
+ "path('M 0 0 H 1') reverse 30deg 50px",
+ "path('M 0 0 H 1')",
+ "path('m 20 0 h 100') -7rad 8px / auto",
+ "path('m 0 30 v 100') -7rad 8px / left top",
+ "path('m 0 0 h 100') -7rad 8px",
+ "path('M 0 0 H 100') 100px 0deg",
+ "top right / top left",
+ "top right ray(45deg closest-side)",
+ "50% 50% ray(0rad farthest-side)",
+ ],
+ invalid_values: [
+ "100px 0deg path('m 0 0 h 100')",
+ "30deg",
+ "auto 30deg 100px",
+ "auto / none",
+ "none /",
+ "none / 100px 20px 30deg",
+ "path('M 20 30 A 60 70 80') bottom",
+ "path('M 20 30 A 60 70 80') bottom top",
+ "path('M 20 30 A 60 70 80') 100px 200px",
+ "path('M 20 30 A 60 70 80') reverse auto",
+ "path('M 20 30 A 60 70 80') reverse 10px 30deg",
+ "path('M 20 30 A 60 70 80') /",
+ ],
+ },
+ "offset-anchor": {
+ domProp: "offsetAnchor",
+ inherited: false,
+ type: CSS_TYPE_LONGHAND,
+ initial_values: ["auto"],
+ other_values: [
+ "left bottom",
+ "center center",
+ "calc(20% + 10px) center",
+ "right 30em",
+ "10px 20%",
+ "left -10px top -20%",
+ "right 10% bottom 20em",
+ ],
+ invalid_values: ["none", "10deg", "left 10% top"],
+ },
+ "offset-distance": {
+ domProp: "offsetDistance",
+ inherited: false,
+ type: CSS_TYPE_LONGHAND,
+ initial_values: ["0"],
+ other_values: ["10px", "10%", "190%", "-280%", "calc(30px + 40%)"],
+ invalid_values: ["none", "45deg"],
+ },
+ "offset-path": {
+ domProp: "offsetPath",
+ inherited: false,
+ type: CSS_TYPE_LONGHAND,
+ initial_values: ["none"],
+ other_values: [
+ "ray(0deg)",
+ "ray(45deg closest-side)",
+ "ray(0rad farthest-side)",
+ "ray(0.5turn closest-corner contain)",
+ "ray(200grad farthest-corner)",
+ "ray(sides 180deg)",
+ "ray(contain farthest-side 180deg)",
+ "ray(calc(180deg - 45deg) farthest-side)",
+ "ray(0deg at center center)",
+ "ray(at 10% 10% 1rad)",
+ ]
+ .concat(pathValues.other_values)
+ .concat(basicShapeOtherValues)
+ .concat(basicShapeXywhRectValues)
+ .concat(basicShapeShapeValues),
+ invalid_values: [
+ "path('')",
+ "ray(closest-side)",
+ "ray(0deg, closest-side)",
+ "ray(contain 0deg closest-side contain)",
+ ].concat(pathValues.invalid_values),
+ },
+ "offset-position": {
+ domProp: "offsetPosition",
+ inherited: false,
+ type: CSS_TYPE_LONGHAND,
+ initial_values: ["normal"],
+ other_values: [
+ "auto",
+ "left bottom",
+ "center center",
+ "calc(20% + 10px) center",
+ "right 30em",
+ "10px 20%",
+ "left -10px top -20%",
+ "right 10% bottom 20em",
+ ],
+ invalid_values: ["none", "10deg", "left 10% top"],
+ },
+ "offset-rotate": {
+ domProp: "offsetRotate",
+ inherited: false,
+ type: CSS_TYPE_LONGHAND,
+ initial_values: ["auto"],
+ other_values: ["reverse", "0deg", "0rad reverse", "-45deg", "5turn auto"],
+ invalid_values: ["none", "10px", "reverse 0deg reverse", "reverse auto"],
+ },
opacity: {
domProp: "opacity",
inherited: false,
@@ -8827,7 +8981,9 @@ var gCSSProperties = {
.concat(basicShapeSVGBoxValues)
.concat(basicShapeOtherValues)
.concat(basicShapeOtherValuesWithFillRule)
- .concat(basicShapeXywhRectValues),
+ .concat(basicShapeXywhRectValues)
+ .concat(basicShapeShapeValues)
+ .concat(basicShapeShapeValuesWithFillRule),
invalid_values: [
"path(nonzero)",
"path(abs, 'M 10 10 L 10 10 z')",
@@ -13409,158 +13565,10 @@ gCSSProperties["scrollbar-width"] = {
invalid_values: ["1px"],
};
-gCSSProperties["offset"] = {
- domProp: "offset",
- inherited: false,
- type: CSS_TYPE_TRUE_SHORTHAND,
- subproperties: [
- "offset-path",
- "offset-distance",
- "offset-rotate",
- "offset-anchor",
- ],
- initial_values: ["none"],
- other_values: [
- "none 30deg reverse",
- "none 50px reverse 30deg",
- "none calc(10px + 20%) auto",
- "none reverse",
- "none / left center",
- "path('M 0 0 H 1') -200% auto",
- "path('M 0 0 H 1') -200%",
- "path('M 0 0 H 1') 50px",
- "path('M 0 0 H 1') auto",
- "path('M 0 0 H 1') reverse 30deg 50px",
- "path('M 0 0 H 1')",
- "path('m 20 0 h 100') -7rad 8px / auto",
- "path('m 0 30 v 100') -7rad 8px / left top",
- "path('m 0 0 h 100') -7rad 8px",
- "path('M 0 0 H 100') 100px 0deg",
- ],
- invalid_values: [
- "100px 0deg path('m 0 0 h 100')",
- "30deg",
- "auto 30deg 100px",
- "auto / none",
- "none /",
- "none / 100px 20px 30deg",
- "path('M 20 30 A 60 70 80') bottom",
- "path('M 20 30 A 60 70 80') bottom top",
- "path('M 20 30 A 60 70 80') 100px 200px",
- "path('M 20 30 A 60 70 80') reverse auto",
- "path('M 20 30 A 60 70 80') reverse 10px 30deg",
- "path('M 20 30 A 60 70 80') /",
- ],
-};
-
-gCSSProperties["offset-path"] = {
- domProp: "offsetPath",
- inherited: false,
- type: CSS_TYPE_LONGHAND,
- initial_values: ["none"],
- other_values: [...pathValues.other_values],
- invalid_values: ["path('')"].concat(pathValues.invalid_values),
-};
-
-if (IsCSSPropertyPrefEnabled("layout.css.motion-path-ray.enabled")) {
- gCSSProperties["offset-path"]["other_values"].push(
- "ray(0deg)",
- "ray(45deg closest-side)",
- "ray(0rad farthest-side)",
- "ray(0.5turn closest-corner contain)",
- "ray(200grad farthest-corner)",
- "ray(sides 180deg)",
- "ray(contain farthest-side 180deg)",
- "ray(calc(180deg - 45deg) farthest-side)",
- "ray(0deg at center center)",
- "ray(at 10% 10% 1rad)"
- );
-
- gCSSProperties["offset-path"]["invalid_values"].push(
- "ray(closest-side)",
- "ray(0deg, closest-side)",
- "ray(contain 0deg closest-side contain)"
- );
-}
-
-if (IsCSSPropertyPrefEnabled("layout.css.motion-path-basic-shapes.enabled")) {
- gCSSProperties["offset-path"]["other_values"].push(
- ...basicShapeOtherValues,
- ...basicShapeXywhRectValues
- );
-}
-
if (IsCSSPropertyPrefEnabled("layout.css.motion-path-url.enabled")) {
gCSSProperties["offset-path"]["other_values"].push("url(#svgPath)");
}
-gCSSProperties["offset-distance"] = {
- domProp: "offsetDistance",
- inherited: false,
- type: CSS_TYPE_LONGHAND,
- initial_values: ["0"],
- other_values: ["10px", "10%", "190%", "-280%", "calc(30px + 40%)"],
- invalid_values: ["none", "45deg"],
-};
-
-gCSSProperties["offset-rotate"] = {
- domProp: "offsetRotate",
- inherited: false,
- type: CSS_TYPE_LONGHAND,
- initial_values: ["auto"],
- other_values: ["reverse", "0deg", "0rad reverse", "-45deg", "5turn auto"],
- invalid_values: ["none", "10px", "reverse 0deg reverse", "reverse auto"],
-};
-
-gCSSProperties["offset-anchor"] = {
- domProp: "offsetAnchor",
- inherited: false,
- type: CSS_TYPE_LONGHAND,
- initial_values: ["auto"],
- other_values: [
- "left bottom",
- "center center",
- "calc(20% + 10px) center",
- "right 30em",
- "10px 20%",
- "left -10px top -20%",
- "right 10% bottom 20em",
- ],
- invalid_values: ["none", "10deg", "left 10% top"],
-};
-
-if (
- IsCSSPropertyPrefEnabled("layout.css.motion-path-offset-position.enabled")
-) {
- gCSSProperties["offset"]["subproperties"].push("offset-position");
- gCSSProperties["offset"]["other_values"].push("top right / top left");
-
- if (IsCSSPropertyPrefEnabled("layout.css.motion-path-ray.enabled")) {
- gCSSProperties["offset"]["other_values"].push(
- "top right ray(45deg closest-side)",
- "50% 50% ray(0rad farthest-side)"
- );
- }
-
- gCSSProperties["offset-position"] = {
- domProp: "offsetPosition",
- inherited: false,
- type: CSS_TYPE_LONGHAND,
- initial_values: ["normal"],
- other_values: [
- "auto",
- "left bottom",
- "center center",
- "calc(20% + 10px) center",
- "right 30em",
- "10px 20%",
- "left -10px top -20%",
- "right 10% bottom 20em",
- ],
- invalid_values: ["none", "10deg", "left 10% top"],
- };
-}
-
{
let linear_function_other_values = [
"linear(0, 1)",
diff --git a/layout/style/test/test_hover_quirk.html b/layout/style/test/test_hover_quirk.html
index 61e19f2a60..7a78185178 100644
--- a/layout/style/test/test_hover_quirk.html
+++ b/layout/style/test/test_hover_quirk.html
@@ -54,6 +54,18 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=783213
#dynamic-test:hover > * {
background: rgb(0, 255, 0);
}
+
+ #dynamic-test-2 :is(button,input,a){
+ background-color:yellow !important;
+ }
+
+ #dynamic-test-2 :is(button,input,a):hover{
+ background-color:lime !important;
+ }
+
+ #dynamic-test-2 :is(button,input):focus{
+ background-color:skyblue !important;
+ }
</style>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
@@ -97,6 +109,21 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=783213
is(getComputedStyle(document.getElementById('should-be-green-on-hover')).backgroundColor,
"rgb(0, 255, 0)",
"Dynamic change should invalidate properly");
+
+ synthesizeMouseAtCenter(document.getElementById('button'), {type: "mousemove"});
+ is(getComputedStyle(document.getElementById('button')).backgroundColor,
+ "rgb(0, 255, 0)",
+ "Button hover should be green");
+
+ synthesizeMouseAtCenter(document.getElementById('input'), {type: "mousemove"});
+ is(getComputedStyle(document.getElementById('input')).backgroundColor,
+ "rgb(0, 255, 0)",
+ "Input hover should be green");
+
+ synthesizeMouseAtCenter(document.getElementById('link-2'), {type: "mousemove"});
+ is(getComputedStyle(document.getElementById('link-2')).backgroundColor,
+ "rgb(0, 255, 0)",
+ "Link hover should be green");
SimpleTest.finish();
});
</script>
@@ -113,6 +140,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=783213
<a id="link" href="#">Link<span class="child"></span></a><br>
<div id="div" class="parent">Div <span><span class="child"></span></span></div><br>
</div>
+ <div id="dynamic-test-2">
+ <button id="button">Button</button>
+ <input id="input" value="Input">
+ <a id="link-2"href="">Link</a>
+ </div>
<pre id="test"></pre>
</body>
</html>
diff --git a/layout/style/test/test_non_content_accessible_pseudos.html b/layout/style/test/test_non_content_accessible_pseudos.html
index 81493b1a4a..5f2d15d6a2 100644
--- a/layout/style/test/test_non_content_accessible_pseudos.html
+++ b/layout/style/test/test_non_content_accessible_pseudos.html
@@ -30,7 +30,6 @@ const NON_CONTENT_ACCESIBLE_PSEUDOS = [
":-moz-dir-attr-rtl",
":-moz-dir-attr-like-auto",
":-moz-autofill-preview",
- ":-moz-lwtheme",
":-moz-is-html",
":-moz-locale-dir(rtl)",
":-moz-locale-dir(ltr)",
diff --git a/layout/style/test/test_selectors.html b/layout/style/test/test_selectors.html
index d688139d3c..684e9d6524 100644
--- a/layout/style/test/test_selectors.html
+++ b/layout/style/test/test_selectors.html
@@ -1077,7 +1077,6 @@ function runTests() {
test_balanced_unparseable(":dir");
// Test chrome-only -moz-lwtheme
- test_balanced_unparseable(":-moz-lwtheme");
test_balanced_unparseable(":-moz-broken");
test_balanced_unparseable(":-moz-tree-row(selected)");
diff --git a/layout/style/test/test_style_struct_copy_constructors.html b/layout/style/test/test_style_struct_copy_constructors.html
index 95f727a58d..bce5a4e32c 100644
--- a/layout/style/test/test_style_struct_copy_constructors.html
+++ b/layout/style/test/test_style_struct_copy_constructors.html
@@ -64,6 +64,12 @@ for (var prop in gCSSProperties) {
}
/** Test using inheritance **/
+
+// TODO(bug 1887221): Zoom right now doesn't apply to explicitly inherited
+// values, so remove it to get consistent results.
+gRule1.style.removeProperty("zoom");
+gRule2.style.removeProperty("zoom");
+
for (var prop in gCSSProperties) {
var info = gCSSProperties[prop];
if (info.inherited && !("subproperties" in info)) {
@@ -79,14 +85,6 @@ for (var prop in gCSSProperties) {
}
}
-for (var prop in gCSSProperties) {
- var info = gCSSProperties[prop];
- if (!("subproperties" in info)) {
- gRule1.style.removeProperty(prop);
- gRule2.style.removeProperty(prop);
- }
-}
-
</script>
</pre>
</body>