<!DOCTYPE html>
<html>
<head>
<title>Custom element constructor sets value of IS attribute to custom element type, if it is not equal to name</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="If TYPE is not the same as NAME, set the value of ELEMENT's IS attribute to TYPE">
<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();
    HTML5_ELEMENTS.forEach(function(tagName) {
        if (HTML5_DOCUMENT_ELEMENTS.indexOf(tagName) !== -1) {
            return;
        }
        var obj = doc.createElement(tagName);
        var name = 'x-a-' + tagName;
        var proto = Object.create(obj.constructor.prototype);
        var GeneratedConstructor = doc.registerElement(name, {prototype: proto, extends: tagName});
        var customElement = new GeneratedConstructor();

        assert_equals(customElement.getAttribute('is'), name,
            'Value of the IS attribute should be set to type');
    });
}, 'Test that the constructor of a type extension sets the IS attribute value to the type');


test(function() {
    var doc = newHTMLDocument();
    HTML5_ELEMENTS.forEach(function(tagName) {
        if (HTML5_DOCUMENT_ELEMENTS.indexOf(tagName) !== -1) {
            return;
        }
        var name = 'x-b-' + tagName;
        var GeneratedConstructor = doc.registerElement(name);
        var customElement = new GeneratedConstructor();

        assert_false(customElement.hasAttribute('is'),
            'IS attribute should not present if local name is the same as type');
    });
}, 'Test that the constructor of a custom element does not set the IS attribute if local name is the same as type');
</script>
</body>
</html>
