<!DOCTYPE html>
<html>
<head>
    <title>Query selector benchmark.</title>
    <script src="../resources/runner.js"></script>
</head>
<body>
    
</body>
<script>

var iframe = document.createElement("iframe");
iframe.style.display = "none";
document.body.appendChild(iframe);

function verifySizeExpectation(result, expectedSize)
{
    if (result.length != expectedSize)
        throw "The query did not return the expected results."
}

var test = {
    description: "This tests the performance of querySelector for a variety of common use cases.",
    setup: function() {
        // In order to restrict caching between operations, the tree is rebuilt from scratch.
        var spec = PerfTestRunner.loadFile("resources/query-selector.html");
        iframe.contentDocument.firstChild.innerHTML = spec;
    },
    run: function() {
        var iFrameDocument = iframe.contentDocument;

        for (var repeat = 0; repeat < 5; ++repeat) {
            /// Various multiselector. About 15% of the queries.
            for (var i = 0; i < 150; ++i) {
                // Complex descent.
                var result = iFrameDocument.querySelectorAll("html body div>#complex-multi-rules1 .some-class li[data-bar].some-class");
                verifySizeExpectation(result, 1);

                // id tag.
                verifySizeExpectation(iFrameDocument.querySelectorAll("#complex-multi-rules2 acronym"), 1);
                verifySizeExpectation(iFrameDocument.querySelectorAll("[id='complex-multi-rules2'] a"), 1);

                // Multiple id + selector, sharing the same id.
                result = iFrameDocument.querySelectorAll("#complex-multi-rules3 source, #complex-multi-rules3 li, #complex-multi-rules3 td");
                verifySizeExpectation(result, 11);
                result = iFrameDocument.querySelectorAll("[id='complex-multi-rules3'] source, [id='complex-multi-rules3'] li, [id='complex-multi-rules3'] td");
                verifySizeExpectation(result, 11);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules3 .some-class, #complex-multi-rules3 .other-class");
                verifySizeExpectation(result, 7);
                result = iFrameDocument.querySelectorAll("[id='complex-multi-rules3'] .some-class, [id='complex-multi-rules3'] li, [id='complex-multi-rules3'] .other-class");
                verifySizeExpectation(result, 7);

                // Several Ids.
                result = iFrameDocument.querySelectorAll("#complex-multi-rules4 #complex-multi-rules4-sub1 #complex-multi-rules4-sub2 #complex-multi-rules4-sub3");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules4 [id='complex-multi-rules4-sub1'] #complex-multi-rules4-sub2 [id='complex-multi-rules4-sub3']");
                result = iFrameDocument.querySelectorAll("[id='complex-multi-rules4'] [id='complex-multi-rules4-sub1'] [id='complex-multi-rules4-sub2'] [id='complex-multi-rules4-sub3']");
                verifySizeExpectation(result, 1);

                // Id sandwich: Multiple ids with selectors in between.
                result = iFrameDocument.querySelectorAll("#complex-multi-rules5 div #complex-multi-rules5-left ul li.other-class #complex-multi-rules5-right table tr>td");
                verifySizeExpectation(result, 2);
                result = iFrameDocument.querySelectorAll("div#complex-multi-rules5>div div#complex-multi-rules5-left ul .other-class p img#complex-multi-rules5-image");
                verifySizeExpectation(result, 1);

                // Named form attribute under hierarchy.
                result = iFrameDocument.querySelectorAll("input[name='complex-multi-rules6-file-input']");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("form input[name='complex-multi-rules6-file-input']");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("form[name='complex-multi-rules6-form'] input[name='complex-multi-rules6-file-input']");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("form[name='complex-multi-rules6-form'] div input[name='complex-multi-rules6-file-input']");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("form[name='complex-multi-rules6-form'] div div input[name='complex-multi-rules6-file-input']");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("form[name='complex-multi-rules6-form']>div>div>input[name='complex-multi-rules6-file-input']");
                verifySizeExpectation(result, 1);

                // Hierarchy of tag and class.
                result = iFrameDocument.querySelectorAll("div div a div div p.result-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("div div.some-class a.other-class div.another-class div p.result-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("div>div>a div div p.result-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("div>div.some-class>a.other-class>div.another-class>div>p.result-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("div div a div div p.result-class, div div.some-class a div div p.result-class, div div.some-class a.other-class div div p.result-class, div div.some-class a.other-class div.another-class div p.result-class");
                verifySizeExpectation(result, 1);
            }

            // tag.class. About 10% of the queries
            for (var i = 0; i < 100; ++i) {
                result = iFrameDocument.querySelectorAll("details.details-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("summary.summary-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("article.article-class");
                verifySizeExpectation(result, 1);
            }

            // Single selector query, 75% of the queries. Split between:
            //    -tag
            //    -[attribute]
            //         -exist
            //         -value=something
            //    -#id
            //    -.class
            for (var i = 0; i < 750; ++i) {
                // Tags.
                result = iFrameDocument.querySelectorAll("details");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("summary");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("article");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("head");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("body");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("form");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("input");
                verifySizeExpectation(result, 1);

                // Attributes exists.
                result = iFrameDocument.querySelectorAll("[data-foo]");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("[data-bar]");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("[title]");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("[href]");
                verifySizeExpectation(result, 2);

                // Attribute = value.
                result = iFrameDocument.querySelectorAll("[data-foo=bar]");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("[data-bar=baz]");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("[title='WebKit Tempalte Framework']");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("[href='http://www.webkit.org/']");
                verifySizeExpectation(result, 1);

                // Id.
                result = iFrameDocument.querySelectorAll("#complex-multi-rules1");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules2");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules3");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules4");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules5");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules6");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules7");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll("#complex-multi-rules8");
                verifySizeExpectation(result, 1);

                // Id with duplicate.
                result = iFrameDocument.querySelectorAll("#duplicate-id");
                verifySizeExpectation(result, 3);

                // .class.
                result = iFrameDocument.querySelectorAll(".details-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll(".summary-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll(".article-class");
                verifySizeExpectation(result, 1);
                result = iFrameDocument.querySelectorAll(".result-class");
                verifySizeExpectation(result, 1);
            }
        }
    }
}
PerfTestRunner.measureTime(test);
</script>
</html>