blob: 29730c27c0bc8bc6b9954eb2ce0637461aa7393f [file] [edit]
<!DOCTYPE html>
<title>CSS Values: The ident() Function (parsing)</title>
<link rel="help" href="https://drafts.csswg.org/css-values-5/#ident">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
<script>
// Any property that accepts <custom-ident> will do.
let prop = 'view-transition-name';
// ident() is an arbitrary substitution function, so only its argument grammar is validated at parse
// time: ident( <declaration-value> ). The argument is parsed as <ident-arg>+ at computed-value time.
// https://github.com/w3c/csswg-drafts/issues/14213
test_invalid_value(prop, 'ident()');
test_invalid_value(prop, 'ident( )');
test_invalid_value(prop, 'ident({})');
test_invalid_value(prop, 'ident(a, b)');
// Not an <ident-arg>+, so these are valid here and invalid at computed-value time.
test_valid_value(prop, 'ident(rgb(1, 2, 3))');
test_valid_value(prop, 'ident(5px)');
// The argument round-trips as specified, with no whitespace normalization.
test_valid_value(prop, 'ident(myident)');
test_valid_value(prop, 'ident( myident)');
test_valid_value(prop, 'ident(myident )');
test_valid_value(prop, 'ident("myident")');
test_valid_value(prop, 'ident("myident" 3)');
test_valid_value(prop, 'ident(3 "myident")');
test_valid_value(prop, 'ident("my" "ident")');
test_valid_value(prop, 'ident(my "ident")');
test_valid_value(prop, 'ident("my" ident)');
test_valid_value(prop, 'ident(my ident)');
test_valid_value(prop, 'ident(-- myident)');
test_valid_value(prop, 'ident(my 3 3 3 3 ident)')
// Check for support in specific properties (WIP):
let ident = 'ident("myident" 42)';
// https://drafts.csswg.org/css-view-transitions/#view-transition-name-prop
test_valid_value('view-transition-name', ident);
</script>