forked from kdashg/gecko-cinn
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1924877 [wpt PR 48630] - HTML: alpha and colorspace attribute, a=…
…testonly Automatic update from web-platform-tests HTML: alpha and colorspace attribute Context: whatwg/html#10456. -- wpt-commits: 05ae498a46fd05d85b867fb1457df94a10dc4bb4 wpt-pr: 48630
- Loading branch information
1 parent
ecb4de1
commit 2449d89
Showing
3 changed files
with
284 additions
and
0 deletions.
There are no files selected for viewing
29 changes: 29 additions & 0 deletions
29
testing/web-platform/tests/html/semantics/forms/the-input-element/color-attributes.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
test(() => { | ||
const input = document.createElement("input"); | ||
input.type = "color"; | ||
input.setAttribute("alpha", "blah"); | ||
assert_equals(input.getAttribute("alpha"), "blah"); | ||
assert_true(input.alpha); | ||
input.alpha = false; | ||
assert_false(input.hasAttribute("alpha")); | ||
input.alpha = "blah"; | ||
assert_true(input.alpha); | ||
assert_equals(input.getAttribute("alpha"), ""); | ||
}, "<input type=color>: alpha attribute"); | ||
|
||
test(() => { | ||
const input = document.createElement("input"); | ||
input.type = "color"; | ||
input.setAttribute("colorspace", "blah"); | ||
assert_equals(input.getAttribute("colorspace"), "blah"); | ||
assert_equals(input.colorSpace, "limited-srgb"); | ||
input.colorSpace = null; | ||
assert_equals(input.getAttribute("colorspace"), "null"); | ||
assert_equals(input.colorSpace, "limited-srgb"); | ||
input.colorSpace = "DISPLAY-P3"; | ||
assert_equals(input.getAttribute("colorspace"), "DISPLAY-P3"); | ||
assert_equals(input.colorSpace, "display-p3"); | ||
input.colorSpace = "DıSPLAY-P3"; | ||
assert_equals(input.getAttribute("colorspace"), "DıSPLAY-P3"); | ||
assert_equals(input.colorSpace, "limited-srgb"); | ||
}, "<input type=color>: colorspace attribute"); |
1 change: 1 addition & 0 deletions
1
...antics/forms/the-input-element/color.html → ...ms/the-input-element/color.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
<!DOCTYPE html> | ||
<!-- This test can be removed once all browsers support the alpha and colorspace attributes. --> | ||
<meta charset=utf-8> | ||
<title>Form input type=color</title> | ||
<link rel="author" title="Denis Ah-Kang" href="mailto:[email protected]"> | ||
|
254 changes: 254 additions & 0 deletions
254
testing/web-platform/tests/html/semantics/forms/the-input-element/color.window.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,254 @@ | ||
// META: script=/css/support/color-testcommon.js | ||
|
||
// While assert_equals is fine for hex, it's not for hexalpha, p3, and p3alpha. We use the default | ||
// epsilon of 0.0001. | ||
const assert_colors = set_up_fuzzy_color_test(); | ||
|
||
[ | ||
{ | ||
value: "", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "#ffffff", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1)" | ||
}, | ||
{ | ||
value: "#ffffff08", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1 / 0.031373)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1 / 0.031373)" | ||
}, | ||
{ | ||
value: "#FFFFFF", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1)" | ||
}, | ||
{ | ||
value: "#0F0F0F", | ||
hex: "#0f0f0f", | ||
hexalpha: "color(srgb 0.058824 0.058824 0.058824)", | ||
p3: "color(display-p3 0.058824 0.058824 0.058824)", | ||
p3alpha: "color(display-p3 0.058824 0.058824 0.058824)" | ||
}, | ||
{ | ||
value: "#fff", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1)" | ||
}, | ||
{ | ||
value: "fffffff", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "#gggggg", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "foobar", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "#ffffff\u0000", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "#ffffff;", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: " #ffffff", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1)" | ||
}, | ||
{ | ||
value: "#ffffff ", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1)" | ||
}, | ||
{ | ||
value: " #ffffff ", | ||
hex: "#ffffff", | ||
hexalpha: "color(srgb 1 1 1)", | ||
p3: "color(display-p3 1 1 1)", | ||
p3alpha: "color(display-p3 1 1 1)" | ||
}, | ||
{ | ||
value: "crimson", | ||
hex: "#dc143c", | ||
hexalpha: "color(srgb 0.862745 0.078431 0.235294)", | ||
p3: "color(display-p3 0.791711 0.191507 0.257367)", | ||
p3alpha: "color(display-p3 0.791711 0.191507 0.257367)" | ||
}, | ||
{ | ||
value: "bisque", | ||
hex: "#ffe4c4", | ||
hexalpha: "color(srgb 1 0.894118 0.768627)", | ||
p3: "color(display-p3 0.982297 0.8979 0.783276)", | ||
p3alpha: "color(display-p3 0.982297 0.8979 0.783276)" | ||
}, | ||
{ | ||
value: "currentColor", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "transparent", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0 / 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0 / 0)" | ||
}, | ||
{ | ||
value: "inherit", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
}, | ||
{ | ||
value: "rgb(1,1,1)", | ||
hex: "#010101", | ||
hexalpha: "color(srgb 0.003922 0.003922 0.003922)", | ||
p3: "color(display-p3 0.003922 0.003922 0.003922)", | ||
p3alpha: "color(display-p3 0.003922 0.003922 0.003922)" | ||
}, | ||
{ | ||
value: "rgb(1,1,1,1)", | ||
hex: "#010101", | ||
hexalpha: "color(srgb 0.003922 0.003922 0.003922)", | ||
p3: "color(display-p3 0.003922 0.003922 0.003922)", | ||
p3alpha: "color(display-p3 0.003922 0.003922 0.003922)" | ||
}, | ||
{ | ||
value: "rgb(1,1,1,0.5)", | ||
hex: "#010101", | ||
hexalpha: "color(srgb 0.003922 0.003922 0.003922 / 0.501961)", | ||
p3: "color(display-p3 0.003922 0.003922 0.003922)", | ||
p3alpha: "color(display-p3 0.003922 0.003922 0.003922 / 0.501961)" | ||
}, | ||
{ | ||
value: "#FFFFF\u1F4A9", | ||
hex: "#000000", | ||
hexalpha: "color(srgb 0 0 0)", | ||
p3: "color(display-p3 0 0 0)", | ||
p3alpha: "color(display-p3 0 0 0)" | ||
} | ||
].forEach(({ value, hex, hexalpha, p3, p3alpha }) => { | ||
["limited-srgb", "display-p3"].forEach(colorSpace => { | ||
[false, true].forEach(alpha => { | ||
const nameValue = value === "" ? "the empty string" : value === undefined ? "no value" : "'" + value + "'"; | ||
test(() => { | ||
const input = document.createElement("input"); | ||
input.type = "color"; | ||
if (value !== undefined) { | ||
input.setAttribute("value", value); | ||
} | ||
assert_equals(input.value, hex, "value is hex"); | ||
input.colorSpace = colorSpace; | ||
assert_equals(input.colorSpace, colorSpace, "color space"); | ||
if (colorSpace === "limited-srgb") { | ||
assert_equals(input.value, hex, "value is hex"); | ||
} else { | ||
assert_colors(input.value, p3); | ||
} | ||
input.alpha = alpha; | ||
assert_equals(input.alpha, alpha, "alpha"); | ||
if (colorSpace === "limited-srgb" && !alpha) { | ||
assert_equals(input.value, hex, "value is hex"); | ||
} else if (colorSpace === "limited-srgb" && alpha) { | ||
assert_colors(input.value, hexalpha); | ||
} else if (colorSpace === "display-p3" && !alpha) { | ||
assert_colors(input.value, p3); | ||
} else { | ||
assert_colors(input.value, p3alpha); | ||
} | ||
}, `Testing ${nameValue} with color space '${colorSpace}' and ${alpha ? 'with' : ' without'} alpha (setAttribute("value"))`); | ||
|
||
test(() => { | ||
const input = document.createElement("input"); | ||
input.type = "color"; | ||
// In this test we set alpha before we set value to avoid the value sanitization algorithm | ||
// taking away the alpha channel from the input. | ||
input.alpha = true; | ||
if (value !== undefined) { | ||
input.value = value; | ||
} | ||
assert_colors(input.value, hexalpha); | ||
input.colorSpace = colorSpace; | ||
assert_equals(input.colorSpace, colorSpace, "color space"); | ||
if (colorSpace === "limited-srgb") { | ||
assert_colors(input.value, hexalpha); | ||
} else { | ||
assert_colors(input.value, p3alpha); | ||
} | ||
input.alpha = alpha; | ||
assert_equals(input.alpha, alpha, "alpha"); | ||
if (colorSpace === "limited-srgb" && !alpha) { | ||
assert_equals(input.value, hex, "value is hex"); | ||
} else if (colorSpace === "limited-srgb" && alpha) { | ||
assert_colors(input.value, hexalpha); | ||
} else if (colorSpace === "display-p3" && !alpha) { | ||
assert_colors(input.value, p3); | ||
} else { | ||
assert_colors(input.value, p3alpha); | ||
} | ||
}, `Testing ${nameValue} with color space '${colorSpace}' and ${alpha ? 'with' : ' without'} alpha (value)`); | ||
}); | ||
}); | ||
}); | ||
|
||
test(() => { | ||
const input = document.createElement("input"); | ||
input.type = "color"; | ||
assert_equals(input.value, "#000000"); | ||
input.value = "ActiveBorder"; | ||
assert_not_equals(input.value, "#000000"); | ||
}, "System colors are parsed"); | ||
|
||
test(() => { | ||
const input = document.createElement("input"); | ||
input.type = "color"; | ||
input.alpha = true; | ||
input.colorSpace = "display-p3"; | ||
input.value = "color(display-p3 3 none .2 / .6)"; | ||
assert_equals(input.value, "color(display-p3 3 0 0.2 / 0.6)"); | ||
}, "Display P3 colors can be out-of-bounds"); |