Automatic update from web-platform-tests Forbid generated images as cursor via light-dark() (#60469) The 'cursor' property forbids generated images, but light-dark() resolved its branches without honoring that policy, letting a gradient become a cursor image. Gradients are re-instantiated on every style recalc, so the per-instance image-observer bookkeeping in UpdateCursorImages drifted and RemoveClient() hit a SECURITY_CHECK during layout teardown. Bug: 518872187 Change-Id: I45cab2c148b60a673f1381e560d90d6ce9d57e9c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7898340 Reviewed-by: Rune Lillesveen <futhark@chromium.org> Commit-Queue: Jason Leo <cgqaq@chromium.org> Cr-Commit-Position: refs/heads/main@{#1642106} Co-authored-by: Jason Leo <cgqaq@chromium.org> -- wpt-commits: abb03d330520ffdf458433d209e3fbd9b2842c74 wpt-pr: 60469
145 lines
4.6 KiB
HTML
145 lines
4.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>CSS UI Level 4: parsing cursor with valid values</title>
|
|
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
|
<link rel="help" href="https://drafts.csswg.org/css-ui-4/#cursor">
|
|
<meta name="assert" content="cursor supports the full required grammar.">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/css/support/parsing-testcommon.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
test_valid_value("cursor", "auto");
|
|
test_valid_value("cursor", "default");
|
|
test_valid_value("cursor", "none");
|
|
test_valid_value("cursor", "context-menu");
|
|
test_valid_value("cursor", "help");
|
|
test_valid_value("cursor", "pointer");
|
|
test_valid_value("cursor", "progress");
|
|
test_valid_value("cursor", "wait");
|
|
test_valid_value("cursor", "cell");
|
|
test_valid_value("cursor", "crosshair");
|
|
test_valid_value("cursor", "text");
|
|
test_valid_value("cursor", "vertical-text");
|
|
test_valid_value("cursor", "alias");
|
|
test_valid_value("cursor", "copy");
|
|
test_valid_value("cursor", "move");
|
|
test_valid_value("cursor", "no-drop");
|
|
test_valid_value("cursor", "not-allowed");
|
|
test_valid_value("cursor", "grab");
|
|
test_valid_value("cursor", "grabbing");
|
|
test_valid_value("cursor", "e-resize");
|
|
test_valid_value("cursor", "n-resize");
|
|
test_valid_value("cursor", "ne-resize");
|
|
test_valid_value("cursor", "nw-resize");
|
|
test_valid_value("cursor", "s-resize");
|
|
test_valid_value("cursor", "se-resize");
|
|
test_valid_value("cursor", "sw-resize");
|
|
test_valid_value("cursor", "w-resize");
|
|
test_valid_value("cursor", "ew-resize");
|
|
test_valid_value("cursor", "ns-resize");
|
|
test_valid_value("cursor", "nesw-resize");
|
|
test_valid_value("cursor", "nwse-resize");
|
|
test_valid_value("cursor", "col-resize");
|
|
test_valid_value("cursor", "row-resize");
|
|
test_valid_value("cursor", "all-scroll");
|
|
test_valid_value("cursor", "zoom-in");
|
|
test_valid_value("cursor", "zoom-out");
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'url("https://example.com/"), alias',
|
|
[
|
|
'url("https://example.com/"), alias',
|
|
'url(https://example.com/), alias'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'url("https://example.com/") 1 calc(2 + 0), copy',
|
|
[
|
|
'url("https://example.com/") 1 calc(2), copy',
|
|
'url("https://example.com/") 1 2, copy',
|
|
'url(https://example.com/) 1 2, copy'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'url("https://example.com/"), url("https://example.com/") 3 -4, move',
|
|
[
|
|
'url("https://example.com/"), url("https://example.com/") 3 -4, move',
|
|
'url(https://example.com/), url(https://example.com/) 3 -4, move'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'url("https://example.com/") 5 6, grab',
|
|
[
|
|
'url("https://example.com/") 5 6, grab',
|
|
'url(https://example.com/) 5 6, grab'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'image-set("https://example.com/" 1x) 5 6, grab',
|
|
[
|
|
'image-set(url("https://example.com/") 1x) 5 6, grab',
|
|
'image-set(url(https://example.com/) 1x) 5 6, grab'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'image-set("https://example.com/" 1x, "https://example.com/highres" 2x) 5 6, grab',
|
|
[
|
|
'image-set(url("https://example.com/") 1x, url("https://example.com/highres") 2x) 5 6, grab',
|
|
'image-set(url(https://example.com/) 1x, url(https://example.com/highres) 2x) 5 6, grab'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'light-dark(url("https://example.com/light"), url("https://example.com/dark")), pointer',
|
|
[
|
|
'light-dark(url("https://example.com/light"), url("https://example.com/dark")), pointer',
|
|
'light-dark(url(https://example.com/light), url(https://example.com/dark)), pointer'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'light-dark(url("https://example.com/light"), url("https://example.com/dark")) 5 6, grab',
|
|
[
|
|
'light-dark(url("https://example.com/light"), url("https://example.com/dark")) 5 6, grab',
|
|
'light-dark(url(https://example.com/light), url(https://example.com/dark)) 5 6, grab'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'url("https://example.com/"), light-dark(url("https://example.com/light"), url("https://example.com/dark")) 3 4, move',
|
|
[
|
|
'url("https://example.com/"), light-dark(url("https://example.com/light"), url("https://example.com/dark")) 3 4, move',
|
|
'url(https://example.com/), light-dark(url(https://example.com/light), url(https://example.com/dark)) 3 4, move'
|
|
]
|
|
);
|
|
|
|
test_valid_value(
|
|
"cursor",
|
|
'light-dark(image-set("https://example.com/" 1x), url("https://example.com/")) 5 6, grab',
|
|
[
|
|
'light-dark(image-set(url("https://example.com/") 1x), url("https://example.com/")) 5 6, grab',
|
|
'light-dark(image-set(url(https://example.com/) 1x), url(https://example.com/)) 5 6, grab'
|
|
]
|
|
);
|
|
</script>
|
|
</body>
|
|
</html>
|