<!DOCTYPE html>
<html>
<head>
<title>Unresolved element interface must be HTMLElement, if the namespace is HTML Namespace</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="When an unresolved element is created, it's element interface must be HTMLElement, if the 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();
    doc.body.innerHTML = '<x-a id="x-a"></x-a>';
    var customElement = doc.querySelector('#x-a');

    assert_not_equals(customElement, null, 'Unregistered custom element should not be null');

    assert_class_string(customElement, 'HTMLElement',
        'Unresolved custom element must be a HTML element');
}, 'Test interface of unresolved element, created via innerHTML property');


test(function() {
    var doc = newHTMLDocument();
    var customElement = doc.createElement('x-b');

    assert_class_string(customElement, 'HTMLElement',
        'Unresolved custom element must be a HTML element');
}, 'Test interface of unresolved element, created by Document.createElement');


test(function() {
    var doc = newHTMLDocument();
    var customElement = doc.createElementNS(HTML_NAMESPACE, 'x-c');

    assert_class_string(customElement, 'HTMLElement',
        'Unresolved custom element must be a HTML element');
}, 'Test interface of unresolved element, created by Document.createElementNS');


testInIFrame('../resources/x-element.html', function(doc) {
    var customElement = doc.getElementById('x-element');

    assert_not_equals(customElement, null, 'Unregistered custom element should not be null');

    assert_class_string(customElement, 'HTMLElement',
        'Unresolved custom element must be a HTML element');
}, 'Test unresolved element interface in loaded HTML document');
</script>
</body>
</html>
