<!DOCTYPE html>
<html>
<head>
    <title>Pseudo classes with escaped start parenthesis</title>
    <script src="../../resources/testharness.js"></script>
    <script src="../../resources/testharnessreport.js"></script>
    <style>:-webkit-any\( {}</style>
    <style>:nth-child\( {}</style>
    <style>:nth-of-type\( {}</style>
    <style>:nth-last-child\( {}</style>
    <style>:nth-last-of-type\( {}</style>
    <style>:lang\( {}</style>
    <style>:not\( {}</style>
    <style>:cue\( {}</style>
    <style>:part\( {}</style>
    <style>:host\( {}</style>
</head>
<body>
    <p id="log"></p>
    <script>
        var sheets = document.styleSheets;

        test(function(){
            assert_equals(sheets.length, 10, "StyleSheets.length");
        }, "All stylesheets present")

        for (var i=0; i<sheets.length; i++) {
            test(function(){
                assert_equals(sheets[i].cssRules.length, 0, "cssRules.length");
            }, "Drop \"" + sheets[i].ownerNode.firstChild.data + "\"");
        }
    </script>
</body>
</html>
