<!DOCTYPE html>
<html>
<head>
<title>Default namespace is HTML namespace</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="Default namespace is HTML namespace">
<link rel="help" href="http://www.w3.org/TR/custom-elements/#registering-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 HTML namespace');
}, 'Default namespace is HTML namespace');


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 HTML namespace');
    });
}, 'Default namespace is HTML namespace. Test constructor of extended HTML element');
</script>
</body>
</html>
