<!DOCTYPE html>
<html>
<head>
    <title>CSS Test: CSSOM StyleSheet insertRule with import and omitted second argument</title>
    <link rel="author" title="Sendil Kumar N" href="mailto:sendilkumarn.opensource@gmail.com">
    <link rel="help" href="https://drafts.csswg.org/cssom/">
    <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssrule-interface">
    <meta name="flags" content="dom">
    <script src="/resources/testharness.js" type="text/javascript"></script>
    <script src="/resources/testharnessreport.js" type="text/javascript"></script>
    <style id="styleElement">
        @import url("support/a-green.css");
    </style>
</head>
<body>
<div id="log"></div>
<script type="text/javascript">
    var sheet = document.getElementById("styleElement").sheet;
    test(function() {
        assert_equals(sheet.cssRules.length, 1);
        assert_throws("HierarchyRequestError", function() { sheet.insertRule("p { color: green; }"); });
        assert_equals(sheet.cssRules.length, 1);
    }, "insertRule with import and omitted index argument");

    test(function() {
        assert_equals(sheet.cssRules.length, 1);
        assert_throws("HierarchyRequestError", function() { sheet.insertRule("p { color: yellow; }", undefined); });
        assert_equals(sheet.cssRules.length, 1);
        assert_equals(sheet.cssRules.item(0).cssText, "@import url(\"support/a-green.css\");");
    }, "insertRule with import and undefined index argument");
</script>
</body>
</html>
