Implement CSS Custom Properties and Values Skeleton
[WebKit-https.git] / LayoutTests / css-custom-properties-api / registerProperty.html
1 <!DOCTYPE html><!-- webkit-test-runner [ experimental:CSSCustomPropertiesAndValuesEnabled=true ] -->
2 <!-- https://chromium.googlesource.com/chromium/src/+/01ce431409e3a019858677626a983c55168da6dc/third_party/WebKit/LayoutTests/custom-properties/register-property.html -->
3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script>
5 <script>
6 // Tests for error checking during property registration
7 test(function() {
8     assert_throws(new TypeError(), () => CSS.registerProperty());
9     assert_throws(new TypeError(), () => CSS.registerProperty(undefined));
10     assert_throws(new TypeError(), () => CSS.registerProperty(true));
11     assert_throws(new TypeError(), () => CSS.registerProperty(2));
12     assert_throws(new TypeError(), () => CSS.registerProperty("css"));
13     assert_throws(new TypeError(), () => CSS.registerProperty(null));
14 }, "registerProperty requires a Dictionary type");
15 test(function() {
16     // Valid property names, shouldn't throw
17     CSS.registerProperty({name: '--name1', inherits: false});
18     CSS.registerProperty({name: '--name2, no need for escapes', inherits: false});
19     CSS.registerProperty({name: ['--name', 3], inherits: false});
20     // Invalid property names
21     assert_throws(new TypeError(), () => CSS.registerProperty({}));
22     assert_throws(new TypeError(), () => CSS.registerProperty({name: '--no-inherits'}));
23     //assert_throws(new SyntaxError(), () => CSS.registerProperty({name: 'no-leading-dash', inherits: false}));
24     //assert_throws(new SyntaxError(), () => CSS.registerProperty({name: '', inherits: false}));
25     //assert_throws(new SyntaxError(), () => CSS.registerProperty({name: '\\--name', inherits: false}));
26 }, "registerProperty requires a name matching <custom-property-name>");
27 test(function() {
28     CSS.registerProperty({name: '--syntax-test-1', inherits: false, syntax: '*'});
29     CSS.registerProperty({name: '--syntax-test-2', inherits: false, syntax: ' * '});
30     /*assert_throws(new SyntaxError(),
31         () => CSS.registerProperty({name: '--syntax-test-3', syntax: 'length'}));*/
32 }, "registerProperty only allows omitting initialValue is syntax is '*'");
33 </script>