<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<p id="description"></p>
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
    <g id="g"></g>
    <rect id="rect"></rect>
    <svg id="svg"></svg>
</svg>
<pre id="console"></pre>
<script>
description("Tests to ensure that shadow element cannot be created in elements having dynamically created shadow root.");

function testToAddShadowRoot(element, success) {
    debug(element.nodeName);

    if (success)
        shouldNotBe("element.createShadowRoot()", "null");
    else
        shouldThrow("element.createShadowRoot()");
}

var elementsToSuccess = [
    document.createElement('div'),
    document.createElement('span'),
    document.createElement('a'),
    document.createElement('section'),
    document.getElementById('g'),
    document.getElementById('rect'),
    document.getElementById('svg'),
];

// See crbug.com/234020 .
var elementsToFail = [
    document.createElement('input'),
    document.createElement('embed'),
    document.createElement('object'),
    document.createElement('audio'),
    document.createElement('video'),
    document.createElement('select'),
    document.createElement('img'),
    document.createElement('textarea'),
    document.createElement('iframe'),
    document.createElement('canvas'),
    document.createElement('meter'),
    document.createElement('progress'),
    document.createElement('keygen'),
    document.createElement('video'),
    document.createElement('audio'),
    document.createElement('fieldset'),
];

for (var i = 0; i < elementsToSuccess.length; ++i) {
    var element = elementsToSuccess[i];
    testToAddShadowRoot(element, true);
}

for (var i = 0; i < elementsToFail.length; ++i) {
    var element = elementsToFail[i];
    testToAddShadowRoot(element, false);
}

var successfullyParsed = true;
</script>
</body>
</html>
