<!DOCTYPE html>
<html>
<head>
<title>Unresolved element interface must be HTMLUnknownElement, if the namespace is neither HTML Namespace nor SVG Namespace</title>
<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 HTMLUnknownElement, if the namespace is neither HTML Namespace nor SVG 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>
var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';

test(function() {
    var doc = newHTMLDocument();
    doc.body.innerHTML =
        '<math xmlns="' + MATHML_NAMESPACE + '">' +
            '<x-a id="x-a"></x-a>' +
        '</math>';
    var xa = doc.querySelector('#x-a');

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

    // According https://code.google.com/p/chromium/issues/detail?id=336377
    // expected class string is Element
    assert_class_string(xa, 'Element', 'Unresolved custom element must be an Element');
}, 'Test interface of unresolved element with MathML namespace, created via innerHTML property');


test(function() {
    var doc = newHTMLDocument();
    var xa = doc.createElementNS(MATHML_NAMESPACE, 'x-b');

    assert_class_string(xa, 'Element',
        'Unresolved custom element must be a HTMLUnknownElement');
}, 'Test interface of unresolved element with MathML namespace, ' +
    'created by Document.createElementNS');


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

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

    assert_class_string(customElement, 'Element',
        'Unresolved custom element must be a Element');
}, 'Test interface of unresolved element in loaded HTML document with embedded MathML elements');
</script>
</body>
</html>
