<html>
<body>
    <p>Test for Blink bug <a href="https://code.google.com/p/chromium/issues/detail?id=228870">228870</a>: CSS parser incorrectly handles invalid @keyframes key values</p>
    <style>
        @keyframes foo {
            0 {foo: bar;}
        }

        #test1 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            0, 100% {foo: bar;}
        }

        #test2 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            10%, none {foo: bar;}
        }

        #test3 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            -10%, from {foo: bar;}
        }

        #test4 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            0 {foo: bar;} from
        }

        #test5 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            {foo: bar;}
        }

        #test6 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            10%
        }

        #test7 {
            display: none;
        }
    </style>

    <style>
        @keyframes foo {
            from (}) {}
            #(}) {}
        }

        #test8 {
            display: none;
        }
    </style>

    <div id="test1">Test 1 failed (INTEGER single key)</div>
    <div id="test2">Test 2 failed (INTEGER in a key list)</div>
    <div id="test3">Test 3 failed (unknown IDENT in a key list)</div>
    <div id="test4">Test 4 failed (out-of-range percentage key value in a key list)</div>
    <div id="test5">Test 5 failed (key list with no block)</div>
    <div id="test6">Test 6 failed (no key list)</div>
    <div id="test7">Test 7 failed (no declaration block)</div>
    <div id="test8">Test 8 failed (handling invalid perentheses block)</div>
</body>
<script type="text/javascript">
if (window.testRunner)
    testRunner.dumpAsText();
</script>
</html>
