Files
sousa-gecko/testing/web-platform/tests/css/css-values/urls/url-request-modifiers-serialize.sub.html
T
jj 1c1711c965 Bug 2037276 [wpt PR 59632] - Silently ignore unknown CSS URL modifiers, a=testonly
Automatic update from web-platform-tests
Silently ignore unknown CSS URL modifiers

A CSSWG resolution[1] says that unknown modifiers should be silently
ignored rather than invalidating the whole function. We shouldn't allow
duplicated modifiers[2], which makes that slightly more tricky, so we
also need to track whether (which?) unknown modifiers are duplicated.

[1] https://github.com/w3c/csswg-drafts/issues/1603#issuecomment-467221081
[2] https://github.com/w3c/csswg-drafts/issues/12151#issuecomment-3009005578

Bug: 435625756
Change-Id: I74f4979605713173b32ea6da4a244d39de6d815c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7807092
Reviewed-by: Fredrik Söderquist <fs@opera.com>
Commit-Queue: jj <jj@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1624624}

--

wpt-commits: 0513a9e6e4beca68d576ed0f9dca0e5c0f358681
wpt-pr: 59632
2026-05-12 08:45:52 +00:00

85 lines
7.4 KiB
HTML

<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-values-5/#request-url-modifiers">
<link rel="author" title="Sam Weinig" href="mailto:weinig@webkit.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
<div id=target></div>
<script>
// No modifiers
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png")');
// <cross-origin-modifier> = cross-origin(anonymous | use-credentials)
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(use-credentials))');
// <integrity-modifier> = integrity(<string>)
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" integrity("sha384-foobar"))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" integrity(""))');
// <referrer-policy-modifier> = referrer-policy(no-referrer | no-referrer-when-downgrade | same-origin | origin | strict-origin | origin-when-cross-origin | strict-origin-when-cross-origin | unsafe-url)
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(no-referrer-when-downgrade))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(same-origin))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(origin))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(strict-origin))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(origin-when-cross-origin))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(strict-origin-when-cross-origin))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(unsafe-url))');
// Multiple modifiers
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) integrity("sha384-foobar"))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" integrity("sha384-foobar") cross-origin(anonymous))', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) integrity("sha384-foobar"))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" integrity("sha384-foobar") referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(no-referrer) integrity("sha384-foobar"))', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" integrity("sha384-foobar") referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(no-referrer) cross-origin(anonymous))', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) integrity("sha384-foobar") referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" integrity("sha384-foobar") referrer-policy(no-referrer) cross-origin(anonymous))', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) integrity("sha384-foobar") referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(no-referrer) cross-origin(anonymous) integrity("sha384-foobar"))', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) integrity("sha384-foobar") referrer-policy(no-referrer))');
test_valid_value('background-image', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" referrer-policy(no-referrer) integrity("sha384-foobar") cross-origin(anonymous))', 'url("http://{{hosts[][]}}:{{ports[http][0]}}/css/support/1x1-green.png" cross-origin(anonymous) integrity("sha384-foobar") referrer-policy(no-referrer))');
// Unknown <url-modifier>s are silently ignored, and so are dropped
// from the serialized form...
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar(baz))',
'url("/css/support/1x1-green.png")');
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar)',
'url("/css/support/1x1-green.png")');
// ...but if there is a valid <url-modifier> following an unknown
// modifier, it should still be recognized.
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar(baz) cross-origin(anonymous))',
'url("/css/support/1x1-green.png" cross-origin(anonymous))');
test_valid_value('background-image',
'url("/css/support/1x1-green.png" cross-origin(anonymous) foobar(a b c))',
'url("/css/support/1x1-green.png" cross-origin(anonymous))');
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar(nes(ted)) integrity("sha384-foobar"))',
'url("/css/support/1x1-green.png" integrity("sha384-foobar"))');
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar([brackets {braces}]) referrer-policy(no-referrer))',
'url("/css/support/1x1-green.png" referrer-policy(no-referrer))');
// Outdated modifier names (no dashes) are unknown and so are silently ignored.
test_valid_value('background-image',
'url("/css/support/1x1-green.png" crossorigin(anonymous))',
'url("/css/support/1x1-green.png")');
test_valid_value('background-image',
'url("/css/support/1x1-green.png" referrerpolicy(no-referrer))',
'url("/css/support/1x1-green.png")');
// An ident-form unknown modifier and a function-form unknown modifier
// with the same name are not duplicates of each other, since they're
// syntactically distinct.
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar foobar(42))',
'url("/css/support/1x1-green.png")');
test_valid_value('background-image',
'url("/css/support/1x1-green.png" foobar(42) foobar)',
'url("/css/support/1x1-green.png")');
</script>