c3f975738cef72be2c2cf9f893b80f21bfdec92f
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / dom / custom / element-names.html
1 <!DOCTYPE html>
2 <script src="../../../resources/testharness.js"></script>
3 <script src="../../../resources/testharnessreport.js"></script>
4 <body>
5 <script>
6 function createRegisterParameters() {
7     return {
8         prototype: Object.create(HTMLElement.prototype, { thisIsPrototype: { value: true } })
9     };
10 }
11
12 test(function () {
13     var invalidNames = [
14         // Hyphen missing:
15         'foo',
16         'xfoo',
17         // Reserved names:
18         // hyphen-containing names from the applicable specifications,
19         // namely the SVG and the MathML.
20         'annotation-xml',
21         'color-profile',
22         'font-face',
23         'font-face-src',
24         'font-face-uri',
25         'font-face-format',
26         'font-face-name',
27         'missing-glyph'
28     ];
29
30     for (var i = 0; i < invalidNames.length; i++) {
31         var invalidName = invalidNames[i];
32         assert_throws('SYNTAX_ERR', function (){
33             document.registerElement(invalidName, createRegisterParameters());
34         }, 'register invalid custom element name: ' + invalidName);
35     }
36
37 }, 'invalid and reserved names');
38
39 test(function (){
40     document.registerElement('x-foo', createRegisterParameters());
41     assert_throws('NOT_SUPPORTED_ERR', function (){
42         document.registerElement('x-foo', createRegisterParameters());
43     }, 'register already registered "x-foo"');
44     assert_throws('NOT_SUPPORTED_ERR', function (){
45         document.registerElement('X-FOO', createRegisterParameters());
46     }, 'register "X-FOO", same as already registered "x-foo"');
47 }, 'name conflicts');
48
49 test(function () {
50     var validNameTagMap = {
51         'y-bar': 'Y-BAR',
52         'yz-bar': 'YZ-BAR',
53         'y-z-bar': 'Y-Z-BAR',
54         'y--bar' : 'Y--BAR'
55     };
56     for(var elementName in validNameTagMap) {
57         var expectedTagName = validNameTagMap[elementName];
58         var tagName = (new (document.registerElement(elementName, createRegisterParameters()))()).tagName;
59         assert_equals(tagName, expectedTagName, tagName + ' must be treated as a custom element');
60     }
61 }, 'strange but valid names');
62
63 </script>