60 lines
3.7 KiB
HTML
60 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>CSS Images Module Level 4: parsing invalid gradients with color interpolation methods</title>
|
|
<link rel="author" title="Sam Weinig" href="mailto:weinig@apple.com">
|
|
<link rel="author" title="CGQAQ" href="mailto:m.jason.liu@gmail.com">
|
|
<link rel="help" href="https://drafts.csswg.org/css-images-4/#gradients">
|
|
<link rel="help" href="https://drafts.csswg.org/css-color-4/#color-interpolation-method">
|
|
<meta name="assert" content="gradients supports the addition of color-interpolation-method to the grammar">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/css/support/parsing-testcommon.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
|
|
function test_each_interpolation_method(gradientFunction) {
|
|
test_invalid_value(`background-image`, `${gradientFunction}(, red, blue)`)
|
|
|
|
for (const colorSpace of [ "lab", "oklab", "srgb", "srgb-linear", "xyz", "xyz-d50", "xyz-d65" ]) {
|
|
const colorInterpolationMethod = colorSpace
|
|
|
|
test_invalid_value(`background-image`, `${gradientFunction}(red, blue, ${colorInterpolationMethod})`) // interpolation method after color stops
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${colorSpace} ${colorSpace}, red, blue)`) // duplicated color space
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${colorSpace} shorter hue, red, blue)`) // invalid color space for hue modifier
|
|
}
|
|
|
|
for (const colorSpace of [ "hsl", "hwb", "lch", "oklch" ]) {
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${colorSpace} foo hue, red, blue)`) // invalid hue method
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${colorSpace} hue, red, blue)`) // missing interpolation method
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${colorSpace} ${colorSpace}, red, blue)`) // duplicated color space
|
|
|
|
for (const hueInterpolationMethod of [ "shorter", "longer", "increasing", "decreasing", "specified" ]) {
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${colorSpace} ${hueInterpolationMethod}, red, blue)`) // missing 'hue' keyword
|
|
test_invalid_value(`background-image`, `${gradientFunction}(${hueInterpolationMethod} hue ${colorSpace}, red, blue)`) // hue method before color space
|
|
test_invalid_value(`background-image`, `${gradientFunction}(red, blue, ${colorSpace} ${hueInterpolationMethod} hue)`) // interpolation method after color stops
|
|
}
|
|
}
|
|
}
|
|
|
|
test_each_interpolation_method("linear-gradient")
|
|
test_each_interpolation_method("radial-gradient")
|
|
test_each_interpolation_method("conic-gradient")
|
|
|
|
// lacking of color-space after `in`
|
|
test_invalid_value(`background-image`, `linear-gradient(in, black, transparent)`)
|
|
test_invalid_value(`background-image`, `linear-gradient(45deg in, black, transparent)`)
|
|
test_invalid_value(`background-image`, `linear-gradient(in 45deg, black, transparent)`)
|
|
test_invalid_value(`background-image`, `linear-gradient(in to right, black, transparent)`)
|
|
test_invalid_value(`background-image`, `radial-gradient(closest-side in, black, transparent)`)
|
|
test_invalid_value(`background-image`, `conic-gradient(in from 90deg, black, transparent)`)
|
|
// lacking of `hue` keyword
|
|
test_invalid_value(`background-image`, `linear-gradient(90deg in hsl longer, black, transparent)`)
|
|
test_invalid_value(`background-image`, `linear-gradient(90deg in hsl shorter, black)`)
|
|
test_invalid_value(`background-image`, `linear-gradient(to right in hsl increasing, black, transparent)`)
|
|
test_invalid_value(`background-image`, `linear-gradient(to right in hsl decreasing, black, transparent)`)
|
|
</script>
|
|
</body>
|
|
</html>
|