2 <script src="../../../resources/testharness.js"></script>
3 <script src="../../../resources/testharnessreport.js"></script>
6 function createRegisterParameters() {
8 prototype: Object.create(HTMLElement.prototype, { thisIsPrototype: { value: true } })
18 // hyphen-containing names from the applicable specifications,
19 // namely the SVG and the MathML.
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);
37 }, 'invalid and reserved names');
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"');
50 var validNameTagMap = {
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');
61 }, 'strange but valid names');