<!DOCTYPE html>
<html>
<head>
<script src="../resources/runner.js"></script>
<style>
  .root .child {}
</style>
</head>
<body>
<div id="root"></div>
<script>
function insertStyleSheet(css)
{
    var styleElement = document.createElement("style");
    styleElement.textContent = css;
    document.head.appendChild(styleElement);
    return styleElement;
}

function cssStrWithClassSelectors(count) {
    var selector = '.a' + count + ' .b' + count + ' { color: red } ';
    // Intentionally repeat the same classes many times, to test duplicate optimizations.
    return selector + selector + selector + selector + selector + selector + selector;
}

function cssStrWithAttributeSelectors(count) {
    var selector = '[attrA' + count + '="1"]' + ' [attrB' + count + '="1"]' + ' { color: red } ';
    // Intentionally repeat the same classes many times, to test duplicate optimizations.
    return selector + selector + selector + selector + selector + selector + selector;
}

function runFunction()
{
    var numRules = 1000;
    var arr = new Array(numRules);
    for (var i = 0 ; i < numRules; i++) {
        arr[i] = cssStrWithClassSelectors(i);
    }
    for (var i = 0 ; i < numRules; i++) {
        arr[numRules + i] = cssStrWithAttributeSelectors(i);
    }
    var styleElement = insertStyleSheet(arr.join(' '));

    // Force style recalc.
    document.body.offsetTop;

    styleElement.parentNode.removeChild(styleElement);
}

PerfTestRunner.measureRunsPerSecond({
    description: "Measures performance of inserting a stylesheet of 2000 different CSS rules, each of which is duplicated 7 times to test duplicate rule optimizations.",
    run: runFunction
});

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