<!DOCTYPE html>
<html>
<head>
<title>Custom element constructor sets local namespace to the namespace from custom element definition</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="Custom element constructor sets custom element namespace to the namespace in custom element definition">
<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.namespaceURI, HTML_NAMESPACE,
        'Custom element namespace should be equal to namespace in custom element definition');
}, 'Custom element constructor sets namespace to the namespace 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.namespaceURI, HTML_NAMESPACE,
            'Custom element namespace should be equal to namespace in custom element definition');
    });
}, 'Custom element constructor sets namespace to the namespace from custom element definition. ' +
    'Test constructor of extended HTML element');
</script>
</body>
</html>
