<!DOCTYPE html>
<html>
    <head>
        <title>CSSOM Parsing Test: @font-face rules toString() as valid interfaces</title>
        <link rel="author" title="Paul Irish" href="mailto:paul.irish@gmail.com">
        <link rel="reviewer" title="Ms2ger" href="mailto:ms2ger@gmail.com"> <!--  2012-06-17  -->
        <link rel="help" href="https://drafts.csswg.org/css-fonts-4/#om-fontface">

        <meta name="flags" content="dom">

        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>
    </head>

    <body>
        <div id="log"></div>


        <style id="teststyles">
        @font-face {
            src: url(http://foo/bar/font.ttf);
        }
        @font-face {
            font-family: STIXGeneral;
            src: local(STIXGeneral), url(/stixfonts/STIXGeneral.otf);
            unicode-range: U+000-49F, U+2000-27FF, U+2900-2BFF, U+1D400-1D7FF;
        }
        @font-face {
            font-family: MainText;
            src: url(http://example.com/font.ttf);
            font-variant: oldstyle-nums proportional-nums styleset(1,3);
        }

       @font-face {
            font-family: BodyText;
            src: local("HiraMaruPro-W4");
            font-variant: proportional-width;
            font-feature-settings: "ital"; /* Latin italics within CJK text feature */
        }
        </style>


        <script>
            var validRules = document.getElementById('teststyles').sheet.cssRules;

            test(function(){
                for (var i = 0; i < validRules.length; ++i) {
                    assert_equals(validRules.item(i).toString(), '[object CSSFontFaceRule]');
                }
            }, '@font-face declarations are instances of CSSFontFaceRule')


            test(function(){
                for (var i = 0; i < validRules.length; ++i) {
                    assert_equals(validRules.item(i).style.toString(), '[object CSSStyleDeclaration]');
                }
            }, 'The style attribute must return a CSSStyleDeclaration block')

        </script>


    </body>
</html>
