1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/style/test/test_group_insertRule.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,243 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>CSS Variables Allowed Syntax</title> 1.8 + <link rel="author" title="L. David Baron" href="http://dbaron.org/"> 1.9 + <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" /> 1.10 + <link rel="help" href="http://www.w3.org/TR/css3-conditional/#the-cssgroupingrule-interface"> 1.11 + <meta name="assert" content="requirements in definition of insertRule"> 1.12 + <script src="/resources/testharness.js"></script> 1.13 + <script src="/resources/testharnessreport.js"></script> 1.14 +<style id="style"> 1.15 +@media print {} 1.16 +</style> 1.17 +<script id="metadata_cache">/* 1.18 +{ 1.19 + "rule_type": {}, 1.20 + "rule_length": {}, 1.21 + "insert_import_throws": {}, 1.22 + "insert_index_throws1": {}, 1.23 + "insert_index_throws2": {}, 1.24 + "insert_media_succeed": {}, 1.25 + "insert_style_succeed": {}, 1.26 + "insert_bad_media_throw": {}, 1.27 + "insert_empty_throw": {}, 1.28 + "insert_garbage_after_media_throw": {}, 1.29 + "insert_garbage_after_style_throw": {}, 1.30 + "insert_two_media_throw": {}, 1.31 + "insert_style_media_throw": {}, 1.32 + "insert_media_style_throw": {}, 1.33 + "insert_two_style_throw": {}, 1.34 + "insert_retval": {} 1.35 +} 1.36 +*/</script> 1.37 +</head> 1.38 +<body onload="run()"> 1.39 +<div id=log></div> 1.40 +<div id="test"></div> 1.41 +<script> 1.42 + 1.43 + var sheet = document.getElementById("style").sheet; 1.44 + 1.45 + var grouping_rule = sheet.cssRules[0]; 1.46 + 1.47 + test(function() { 1.48 + assert_equals(grouping_rule.type, CSSRule.MEDIA_RULE, 1.49 + "Rule type of @media rule"); 1.50 + }, 1.51 + "rule_type"); 1.52 + 1.53 + test(function() { 1.54 + assert_equals(grouping_rule.cssRules.length, 0, 1.55 + "Starting cssRules.length of @media rule"); 1.56 + }, 1.57 + "rule_length"); 1.58 + 1.59 + test(function() { 1.60 + assert_throws("HIERARCHY_REQUEST_ERR", 1.61 + function() { 1.62 + grouping_rule.insertRule("@import url(foo.css);", 0); 1.63 + }, 1.64 + "inserting a disallowed rule should throw HIERARCHY_REQUEST_ERR"); 1.65 + }, 1.66 + "insert_import_throws"); 1.67 + 1.68 + test(function() { 1.69 + assert_throws("INDEX_SIZE_ERR", 1.70 + function() { 1.71 + grouping_rule.insertRule("p { color: green }", 1); 1.72 + }, 1.73 + "inserting at a bad index throws INDEX_SIZE_ERR"); 1.74 + }, 1.75 + "insert_index_throws1"); 1.76 + test(function() { 1.77 + grouping_rule.insertRule("p { color: green }", 0); 1.78 + assert_equals(grouping_rule.cssRules.length, 1, 1.79 + "Modified cssRules.length of @media rule"); 1.80 + grouping_rule.insertRule("p { color: blue }", 1); 1.81 + assert_equals(grouping_rule.cssRules.length, 2, 1.82 + "Modified cssRules.length of @media rule"); 1.83 + grouping_rule.insertRule("p { color: aqua }", 1); 1.84 + assert_equals(grouping_rule.cssRules.length, 3, 1.85 + "Modified cssRules.length of @media rule"); 1.86 + assert_throws("INDEX_SIZE_ERR", 1.87 + function() { 1.88 + grouping_rule.insertRule("p { color: green }", 4); 1.89 + }, 1.90 + "inserting at a bad index throws INDEX_SIZE_ERR"); 1.91 + assert_equals(grouping_rule.cssRules.length, 3, 1.92 + "Modified cssRules.length of @media rule"); 1.93 + }, 1.94 + "insert_index_throws2"); 1.95 + 1.96 + test(function() { 1.97 + while (grouping_rule.cssRules.length > 0) { 1.98 + grouping_rule.deleteRule(0); 1.99 + } 1.100 + grouping_rule.insertRule("@media print {}", 0); 1.101 + assert_equals(grouping_rule.cssRules.length, 1, 1.102 + "Modified cssRules.length of @media rule"); 1.103 + assert_equals(grouping_rule.cssRules[0].type, CSSRule.MEDIA_RULE, 1.104 + "inserting syntactically correct media rule succeeds"); 1.105 + }, 1.106 + "insert_media_succeed"); 1.107 + test(function() { 1.108 + while (grouping_rule.cssRules.length > 0) { 1.109 + grouping_rule.deleteRule(0); 1.110 + } 1.111 + grouping_rule.insertRule("p { color: yellow }", 0); 1.112 + assert_equals(grouping_rule.cssRules.length, 1, 1.113 + "Modified cssRules.length of @media rule"); 1.114 + assert_equals(grouping_rule.cssRules[0].type, CSSRule.STYLE_RULE, 1.115 + "inserting syntactically correct style rule succeeds"); 1.116 + }, 1.117 + "insert_style_succeed"); 1.118 + test(function() { 1.119 + while (grouping_rule.cssRules.length > 0) { 1.120 + grouping_rule.deleteRule(0); 1.121 + } 1.122 + assert_throws("SYNTAX_ERR", 1.123 + function() { 1.124 + grouping_rule.insertRule("@media bad syntax;", 0); 1.125 + }, 1.126 + "inserting syntactically invalid rule throws syntax error"); 1.127 + assert_equals(grouping_rule.cssRules.length, 0, 1.128 + "Modified cssRules.length of @media rule"); 1.129 + }, 1.130 + "insert_bad_media_throw"); 1.131 + test(function() { 1.132 + while (grouping_rule.cssRules.length > 0) { 1.133 + grouping_rule.deleteRule(0); 1.134 + } 1.135 + assert_throws("SYNTAX_ERR", 1.136 + function() { 1.137 + grouping_rule.insertRule("", 0); 1.138 + }, 1.139 + "inserting empty rule throws syntax error"); 1.140 + assert_equals(grouping_rule.cssRules.length, 0, 1.141 + "Modified cssRules.length of @media rule"); 1.142 + }, 1.143 + "insert_empty_throw"); 1.144 + test(function() { 1.145 + while (grouping_rule.cssRules.length > 0) { 1.146 + grouping_rule.deleteRule(0); 1.147 + } 1.148 + assert_throws("SYNTAX_ERR", 1.149 + function() { 1.150 + grouping_rule.insertRule("@media print {} foo", 0); 1.151 + }, 1.152 + "inserting rule with garbage afterwards throws syntax error"); 1.153 + assert_equals(grouping_rule.cssRules.length, 0, 1.154 + "Modified cssRules.length of @media rule"); 1.155 + }, 1.156 + "insert_garbage_after_media_throw"); 1.157 + test(function() { 1.158 + while (grouping_rule.cssRules.length > 0) { 1.159 + grouping_rule.deleteRule(0); 1.160 + } 1.161 + assert_throws("SYNTAX_ERR", 1.162 + function() { 1.163 + grouping_rule.insertRule("p { color: yellow } foo", 0); 1.164 + }, 1.165 + "inserting rule with garbage afterwards throws syntax error"); 1.166 + assert_equals(grouping_rule.cssRules.length, 0, 1.167 + "Modified cssRules.length of @media rule"); 1.168 + }, 1.169 + "insert_garbage_after_style_throw"); 1.170 + test(function() { 1.171 + while (grouping_rule.cssRules.length > 0) { 1.172 + grouping_rule.deleteRule(0); 1.173 + } 1.174 + assert_throws("SYNTAX_ERR", 1.175 + function() { 1.176 + grouping_rule.insertRule("@media print {} @media print {}", 0); 1.177 + }, 1.178 + "inserting multiple rules throws syntax error"); 1.179 + assert_equals(grouping_rule.cssRules.length, 0, 1.180 + "Modified cssRules.length of @media rule"); 1.181 + }, 1.182 + "insert_two_media_throw"); 1.183 + test(function() { 1.184 + while (grouping_rule.cssRules.length > 0) { 1.185 + grouping_rule.deleteRule(0); 1.186 + } 1.187 + assert_throws("SYNTAX_ERR", 1.188 + function() { 1.189 + grouping_rule.insertRule("p { color: yellow } @media print {}", 0); 1.190 + }, 1.191 + "inserting multiple rules throws syntax error"); 1.192 + assert_equals(grouping_rule.cssRules.length, 0, 1.193 + "Modified cssRules.length of @media rule"); 1.194 + }, 1.195 + "insert_style_media_throw"); 1.196 + test(function() { 1.197 + while (grouping_rule.cssRules.length > 0) { 1.198 + grouping_rule.deleteRule(0); 1.199 + } 1.200 + assert_throws("SYNTAX_ERR", 1.201 + function() { 1.202 + grouping_rule.insertRule("@media print {} p { color: yellow }", 0); 1.203 + }, 1.204 + "inserting multiple rules throws syntax error"); 1.205 + assert_equals(grouping_rule.cssRules.length, 0, 1.206 + "Modified cssRules.length of @media rule"); 1.207 + }, 1.208 + "insert_media_style_throw"); 1.209 + test(function() { 1.210 + while (grouping_rule.cssRules.length > 0) { 1.211 + grouping_rule.deleteRule(0); 1.212 + } 1.213 + assert_throws("SYNTAX_ERR", 1.214 + function() { 1.215 + grouping_rule.insertRule("p { color: yellow } p { color: yellow }", 0); 1.216 + }, 1.217 + "inserting multiple rules throws syntax error"); 1.218 + assert_equals(grouping_rule.cssRules.length, 0, 1.219 + "Modified cssRules.length of @media rule"); 1.220 + }, 1.221 + "insert_two_style_throw"); 1.222 + 1.223 + test(function() { 1.224 + while (grouping_rule.cssRules.length > 0) { 1.225 + grouping_rule.deleteRule(0); 1.226 + } 1.227 + var res = grouping_rule.insertRule("p { color: green }", 0); 1.228 + assert_equals(res, 0, "return value should be index"); 1.229 + assert_equals(grouping_rule.cssRules.length, 1, 1.230 + "Modified cssRules.length of @media rule"); 1.231 + res = grouping_rule.insertRule("p { color: green }", 0); 1.232 + assert_equals(res, 0, "return value should be index"); 1.233 + assert_equals(grouping_rule.cssRules.length, 2, 1.234 + "Modified cssRules.length of @media rule"); 1.235 + res = grouping_rule.insertRule("p { color: green }", 2); 1.236 + assert_equals(res, 2, "return value should be index"); 1.237 + assert_equals(grouping_rule.cssRules.length, 3, 1.238 + "Modified cssRules.length of @media rule"); 1.239 + }, 1.240 + "insert_retval"); 1.241 + 1.242 + 1.243 +</script> 1.244 +</body> 1.245 +</html> 1.246 +