<!DOCTYPE html>
<html>
<head>
<title>HTML Templates: Template element as a descendant of the frameset element.</title>
<meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
<meta name="assert" content="Template element can not be a descendant of the frameset element">
<link rel="help" href="https://html.spec.whatwg.org/multipage/#parsing-main-inframeset">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src='/html/resources/common.js'></script>
<link rel="stylesheet" href="/resources/testharness.css">
</head>
<body>
<div id="log"></div>
<script type="text/javascript">

testInIFrame('../resources/template-descendant-frameset.html', function(context) {
    var doc = context.iframes[0].contentDocument;

    var frameset = doc.querySelector('frameset');

    assert_equals(frameset.querySelector('template'), null,
        'Template element should not be a descendant of the frameset element');

}, 'Template element as a descendant of the frameset element. Test loading from a file');


testInIFrame('../resources/template-descendant-frameset.html', function(context) {
    var doc = context.iframes[0].contentDocument;

    var frameset = doc.querySelector('frameset');

    frameset.innerHTML = '';
    assert_equals(doc.querySelector('template'), null,
            'Initial conditions are not satisfied');

    frameset.innerHTML = '<template>some text</template>';

    assert_equals(frameset.querySelector('template'), null,
        'Template element should not be a descendant of the frameset element');

}, 'Template element as a descendant of the frameset element. '
    + 'Test template element is assigned to frameset\'s innerHTML)');


testInIFrame('../resources/template-descendant-frameset.html', function(context) {
    var doc = context.iframes[0].contentDocument;

    var frameset = doc.querySelector('frameset');

    var template = doc.createElement('template');
    frameset.appendChild(template);

    assert_equals(frameset.querySelectorAll('template').length, 1,
        'Template element should be a descendant of the frameset element');

}, 'Template element as a descendant of the frameset element. '
    + 'Test template element appended to frameset by appendChild()');


</script>
</body>
</html>
