<!DOCTYPE html>
<html>
<head>
<title>Shadow DOM: Element interface shadowRoot attribute</title>
<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
<meta name="assert" content="shadowRoot attribute on Element interface must return the associated open shadow tree if there is one">
<link rel="help" href="https://w3c.github.io/webcomponents/spec/shadow/#the-shadowroot-interface">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel='stylesheet' href='/resources/testharness.css'>
</head>
<body>
<div id="log"></div>
<script>

test(function () {
    assert_true('shadowRoot' in Element.prototype, 'shadowRoot must be defined on Element prototype');
    assert_true('shadowRoot' in document.createElement('div'), 'shadowRoot must be defined on an instance of div element');
    assert_false('shadowRoot' in Node.prototype, 'shadowRoot must not be defined on Node prototype');
    assert_false('shadowRoot' in Text.prototype, 'shadowRoot must not be defined on Text prototype');
    assert_false('shadowRoot' in document.createTextNode(''), 'shadowRoot must not be defined on an instance of Text node');
    assert_false('shadowRoot' in Comment.prototype, 'shadowRoot must not be defined on Comment prototype');
    assert_false('shadowRoot' in document.createComment(''), 'shadowRoot must not be defined on an instance of Comment node');
    assert_false('shadowRoot' in Document.prototype, 'shadowRoot must not be defined on Document prototype');
    assert_false('shadowRoot' in document, 'shadowRoot must not be defined on an instance of Document');
    assert_false('shadowRoot' in DocumentFragment.prototype, 'shadowRoot must not be defined on DocumentFragment prototype');
    assert_false('shadowRoot' in (new DOMParser).parseFromString('', 'text/html'), 'shadowRoot must not be defined on an instance of DocumentFragment node');
}, 'shadowRoot must be defined on Element prototype');

test(function () {
    var host = document.createElement('div');
    assert_equals(host.shadowRoot, null, 'shadowRoot must return null when the host does not have a shadow tree attached to it');

    var openShadowRoot = host.attachShadow({mode: 'open'});
    assert_equals(host.shadowRoot, openShadowRoot, 'shadowRoot must return the open shadow root attachShadow attached');
}, 'shadowRoot attribute must return the open shadow root associated with the element');

test(function () {
    var host = document.createElement('div');
    host.attachShadow({mode: 'closed'});
    assert_equals(host.shadowRoot, null);
}, 'shadowRoot attribute must return null if the shadow root attached to the element is closed');

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