<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="../resources/runner.js"></script>
</head>
<body>

<div id="wrapper">
    <div id="host"></div>
</div>

<script>
var numShadowRoots = 20;
var numDivsInHost = 10;
var nLoops = 300;

function setup()
{
    var nDivs = numDivsInHost;

    for (var i = 0; i < nDivs; ++i) {
        var div = document.createElement('div');
        div.appendChild(document.createTextNode('div' + i));
        host.appendChild(div);
    }

    for (var i = 0; i < numShadowRoots; ++i) {
        var content = document.createElement('shadow');
        var shadowRoot = host.webkitCreateShadowRoot();
        shadowRoot.appendChild(content);
    }
}

function run()
{
    var host = document.getElementById('host');
    var nLoops = window.nLoops;

    var div = document.createElement('div');
    for (var i = 0; i < nLoops; ++i) {
        host.appendChild(div);
        host.removeChild(div);
        host.offsetLeft;
    }
}

function done()
{
    wrapper.innerHTML = '';
}


setup();

PerfTestRunner.measureTime({
    description: "Measure Distribution and Layout time in a case there are multiple ShadowRoots",
    run: run,
    done: done
});
</script>
</body>
</html>
