<!DOCTYPE html>
<html>
<head>
<title>When an HTML Document is loaded in a browsing context, a new registry must be created and associated with this document</title>
<meta name="author" title="Aleksei Yu. Semenov" href="mailto:a.semenov@unipro.ru">
<meta name="author" title="Sergey G. Grekhov" href="mailto:sgrekhov@unipro.ru">
<meta name="assert" content="When an HTML Document is loaded in a browsing context, a new registry must be created and associated with this document.">
<link rel="help" href="http://www.w3.org/TR/custom-elements/#creating-and-passing-registries">
<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>
testInIFrame('../resources/blank.html', function(doc) {
    try {
        doc.registerElement('x-element');
    } catch (e) {
        assert_unreached('Unexpected exception, while registering a valid custom element');
    }
}, 'Document, loaded into browsing context, must have a new empty registry');


testInIFrame('../resources/blank.html', function(loadedDocument) {
    var createdDocument = document.implementation.createHTMLDocument('Test Document');
    // Let's check that loadedDocument and createdDocument use different registeries.
    createdDocument.registerElement('x-element');
    try {
        loadedDocument.registerElement('x-element');
    } catch (e) {
        assert_unreached('Unexpected exception while registering a custom element ' +
            'in a document, which has it\'s own registry');
    }
}, 'Document, loaded into browsing context, must have a new empty registry, ' +
        'which is different from other documents\' registries');
</script>
</body>
</html>
