<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>CSSOM -  CSSKeyframesRule interface</title>
    <link rel="help" href="https://drafts.csswg.org/css-animations/#interface-csskeyframesrule">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <style>
        @keyframes foo {
            0% { top: 0px; }
            100% { top: 200px; }
        }
        @keyframes empty {}
    </style>

    <script>
    test(function () {
        var keyframe = document.styleSheets[0].cssRules[0];
        assert_equals(keyframe.name, "foo", "CSSKeyframesRule name attribute");
        assert_equals(keyframe.cssRules.length, 2, "CSSKeyframesRule cssRule length attribute");
        assert_equals(keyframe.cssRules[0].cssText, "0% { top: 0px; }", "CSSKeyframesRule cssRule cssText attribute");
        assert_equals(keyframe.cssRules[1].cssText, "100% { top: 200px; }", "CSSKeyframesRule cssRule cssText attribute");

        keyframe.appendRule("50% { top: 100px; }");
        assert_equals(keyframe.cssRules.length, 3, "CSSKeyframesRule cssRule length attribute after appendRule function");
        assert_equals(keyframe.cssRules[0].cssText, "0% { top: 0px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");
        assert_equals(keyframe.cssRules[1].cssText, "100% { top: 200px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");
        assert_equals(keyframe.cssRules[2].cssText, "50% { top: 100px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");

        keyframe.appendRule("0% { top: 50px; }");
        assert_equals(keyframe.cssRules.length, 4, "CSSKeyframesRule cssRule length attribute after appendRule function");
        assert_equals(keyframe.cssRules[0].cssText, "0% { top: 0px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");
        assert_equals(keyframe.cssRules[1].cssText, "100% { top: 200px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");
        assert_equals(keyframe.cssRules[2].cssText, "50% { top: 100px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");
        assert_equals(keyframe.cssRules[3].cssText, "0% { top: 50px; }", "CSSKeyframesRule cssRule cssText attribute after appendRule function");

        var find1 = keyframe.findRule("50%");
        assert_equals(find1.cssText, "50% { top: 100px; }", "CSSKeyframesRule findRule function");
        var find2 = keyframe.findRule("0%");
        assert_equals(find2.cssText, "0% { top: 50px; }", "CSSKeyframesRule findRule function");
        var find3 = keyframe.findRule("70%");
        assert_equals(find3, null, "CSSKeyframesRule findRule function");

        keyframe.deleteRule("100%");
        assert_equals(keyframe.cssRules.length, 3, "CSSKeyframesRule cssRule length attribute after deleteRule function");
        assert_equals(keyframe.cssRules[0].cssText, "0% { top: 0px; }", "CSSKeyframesRule cssRule cssText attribute after deleteRule function");
        assert_equals(keyframe.cssRules[1].cssText, "50% { top: 100px; }", "CSSKeyframesRule cssRule cssText attribute after deleteRule function");
        assert_equals(keyframe.cssRules[2].cssText, "0% { top: 50px; }", "CSSKeyframesRule cssRule cssText attribute after deleteRule function");
        assert_equals(keyframe.cssRules[3], undefined, "CSSKeyframesRule cssRule cssText attribute after deleteRule function");

        keyframe.deleteRule("80%");
        assert_equals(keyframe.cssRules.length, 3, "CSSKeyframesRule cssRule length attribute after deleteRule function");
        assert_equals(keyframe.cssRules[0].cssText, "0% { top: 0px; }", "CSSKeyframesRule cssRule cssText attribute after deleteRule function");
        assert_equals(keyframe.cssRules[1].cssText, "50% { top: 100px; }", "CSSKeyframesRule cssRule cssText attribute after deleteRule function");
        assert_equals(keyframe.cssRules[2].cssText, "0% { top: 50px; }", "CSSKeyframesRule cssRule cssText attribute after deleteRule function");
        assert_equals(keyframe.cssRules[3], undefined, "CSSKeyframesRule cssRule cssText attribute after deleteRule function");

        var empty = document.styleSheets[0].cssRules[1];
        empty.name = "bar";
        assert_equals(empty.name, "bar", "CSSKeyframesRule name setter");
        assert_equals(empty.cssText.replace(/\s/g, ""), "@keyframesbar{}", "CSSKeyframesRule cssText attribute");

        empty.name = "initial";
        assert_equals(empty.name, "initial", "CSSKeyframesRule name setter, CSS-wide keyword");
        assert_equals(empty.cssText.replace(/\s/g, ""), "@keyframes\"initial\"{}", "CSSKeyframesRule cssText attribute with CSS-wide keyword name");

        empty.name = "none";
        assert_equals(empty.name, "none", "CSSKeyframesRule name setter, 'none'");
        assert_equals(empty.cssText.replace(/\s/g, ""), "@keyframes\"none\"{}", "CSSKeyframesRule cssText attribute with 'none' name");
    });
    </script>
</head>
</html>
