<!DOCTYPE html>
<html>
<head>
<title>If prototype is already an interface prototype object, Document.registerElement() throws a NotSupportedError</title>
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="If PROTOTYPE is already an interface prototype object for any interface object, throw a NotSupportedError and stop">
<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) {
        var obj = doc.createElement(tagName);
        var name = 'x-a-' + tagName;
        assert_throws('NotSupportedError', function() {
            doc.registerElement(name, {prototype: obj.constructor.prototype});
        }, 'Exception should be thrown in case of attempt to register element ' +
            'if prototype is already an interface prototype object (' + name + ')');
    });
}, 'Test Document.registerElement() throws NotSupportedError ' +
    'if prototype is already an interface prototype object');


test(function() {
    var doc = newHTMLDocument();
    var proto = Object.create(HTMLElement.prototype);
    doc.registerElement('x-b', {
        prototype: proto
    });
    assert_throws('NotSupportedError', function() {
        doc.registerElement('x-b', {
            prototype: proto
        });
    }, 'Exception should be thrown if registring custom element type with already used prototype');
}, 'Test Document.registerElement() throws NotSupportedError ' +
    'if prototype is already used for another custom element type');
</script>
</body>
</html>
