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

function setup() {
    var frame = document.getElementsByTagName("iframe")[0];
    var testDoc = frame.contentDocument;
    var docText = "";
    docText += "<body><style>.foo {color:red}</style>";
    docText += "<div class='bar'>Foo</div>";
    for (var i = 0; i < 10000; ++i)
        docText += "<div class='foo'>Foo</div>";
    testDoc.body.innerHTML = docText;
    return testDoc;
}

PerfTestRunner.measureTime({
    description: "Measures performance of inserting 50 large style elements into an iframe.",
    run:function() {
        var testDoc = setup();
        var start = PerfTestRunner.now();
        testDoc.body.offsetTop;
        for (var i = 0; i < 50; i++) {
            var styleElem = testDoc.createElement("style");
            styleElem.innerText = ".bar {color:green}";
            testDoc.body.insertBefore(styleElem, testDoc.body.firstChild);
        }
        testDoc.body.offsetTop;
        return PerfTestRunner.now() - start;
    }
});
</script>
</html>
