<!DOCTYPE html>
<html>
<head>
<title>Custom element constructor sets local name to the name from custom element definition</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
<meta name="assert" content="Set ELEMENT's local name to NAME">
<link rel="help" href="http://www.w3.org/TR/custom-elements/#instantiating-custom-elements">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../testcommon.js"></script>
<link rel="stylesheet" href="/resources/testharness.css">
</head>
<body>
<div id="log"></div>
<script>
test(function() {
    var doc = newHTMLDocument();
    var GeneratedConstructor = doc.registerElement('x-a');
    var customElement = new GeneratedConstructor();
    assert_equals(customElement.localName, 'x-a',
        'Custom element local name should be equal to the name in custom element definition');
}, 'Custom element constructor sets local name to the name from custom element definition');


test(function() {
    var doc = newHTMLDocument();
    HTML5_ELEMENTS.forEach(function(tagName) {
        var obj = doc.createElement(tagName);
        var name = 'x-b-' + tagName;
        var proto = Object.create(obj.constructor.prototype);
        var GeneratedConstructor = doc.registerElement(name, {
            prototype: proto,
            extends: tagName
        });
        var customElement = new GeneratedConstructor();

        assert_equals(customElement.localName, tagName,
            'Custom element local name should be equal to the name in custom element definition');
    });
}, 'Custom element constructor sets local name to the name from custom element definition. ' +
    'Test constructor of extended HTML element');
</script>
</body>
</html>
