layout/style/test/test_group_insertRule.html

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4   <title>CSS Variables Allowed Syntax</title>
     5   <link rel="author" title="L. David Baron" href="http://dbaron.org/">
     6   <link rel="author" title="Mozilla Corporation" href="http://mozilla.com/" />
     7   <link rel="help" href="http://www.w3.org/TR/css3-conditional/#the-cssgroupingrule-interface">
     8   <meta name="assert" content="requirements in definition of insertRule">
     9   <script src="/resources/testharness.js"></script>
    10   <script src="/resources/testharnessreport.js"></script>
    11 <style id="style">
    12 @media print {}
    13 </style>
    14 <script id="metadata_cache">/*
    15 {
    16   "rule_type": {},
    17   "rule_length": {},
    18   "insert_import_throws": {},
    19   "insert_index_throws1": {},
    20   "insert_index_throws2": {},
    21   "insert_media_succeed": {},
    22   "insert_style_succeed": {},
    23   "insert_bad_media_throw": {},
    24   "insert_empty_throw": {},
    25   "insert_garbage_after_media_throw": {},
    26   "insert_garbage_after_style_throw": {},
    27   "insert_two_media_throw": {},
    28   "insert_style_media_throw": {},
    29   "insert_media_style_throw": {},
    30   "insert_two_style_throw": {},
    31   "insert_retval": {}
    32 }
    33 */</script>
    34 </head>
    35 <body onload="run()">
    36 <div id=log></div>
    37 <div id="test"></div>
    38 <script>
    40   var sheet = document.getElementById("style").sheet;
    42   var grouping_rule = sheet.cssRules[0];
    44   test(function() {
    45          assert_equals(grouping_rule.type, CSSRule.MEDIA_RULE,
    46                        "Rule type of @media rule");
    47        },
    48        "rule_type");
    50   test(function() {
    51          assert_equals(grouping_rule.cssRules.length, 0,
    52                        "Starting cssRules.length of @media rule");
    53        },
    54        "rule_length");
    56   test(function() {
    57          assert_throws("HIERARCHY_REQUEST_ERR",
    58                        function() {
    59                          grouping_rule.insertRule("@import url(foo.css);", 0);
    60                        },
    61                        "inserting a disallowed rule should throw HIERARCHY_REQUEST_ERR");
    62        },
    63        "insert_import_throws");
    65   test(function() {
    66          assert_throws("INDEX_SIZE_ERR",
    67                        function() {
    68                          grouping_rule.insertRule("p { color: green }", 1);
    69                        },
    70                        "inserting at a bad index throws INDEX_SIZE_ERR");
    71        },
    72        "insert_index_throws1");
    73   test(function() {
    74          grouping_rule.insertRule("p { color: green }", 0);
    75          assert_equals(grouping_rule.cssRules.length, 1,
    76                        "Modified cssRules.length of @media rule");
    77          grouping_rule.insertRule("p { color: blue }", 1);
    78          assert_equals(grouping_rule.cssRules.length, 2,
    79                        "Modified cssRules.length of @media rule");
    80          grouping_rule.insertRule("p { color: aqua }", 1);
    81          assert_equals(grouping_rule.cssRules.length, 3,
    82                        "Modified cssRules.length of @media rule");
    83          assert_throws("INDEX_SIZE_ERR",
    84                        function() {
    85                          grouping_rule.insertRule("p { color: green }", 4);
    86                        },
    87                        "inserting at a bad index throws INDEX_SIZE_ERR");
    88          assert_equals(grouping_rule.cssRules.length, 3,
    89                        "Modified cssRules.length of @media rule");
    90        },
    91        "insert_index_throws2");
    93   test(function() {
    94          while (grouping_rule.cssRules.length > 0) {
    95            grouping_rule.deleteRule(0);
    96          }
    97          grouping_rule.insertRule("@media print {}", 0);
    98          assert_equals(grouping_rule.cssRules.length, 1,
    99                        "Modified cssRules.length of @media rule");
   100          assert_equals(grouping_rule.cssRules[0].type, CSSRule.MEDIA_RULE,
   101                        "inserting syntactically correct media rule succeeds");
   102        },
   103        "insert_media_succeed");
   104   test(function() {
   105          while (grouping_rule.cssRules.length > 0) {
   106            grouping_rule.deleteRule(0);
   107          }
   108          grouping_rule.insertRule("p { color: yellow }", 0);
   109          assert_equals(grouping_rule.cssRules.length, 1,
   110                        "Modified cssRules.length of @media rule");
   111          assert_equals(grouping_rule.cssRules[0].type, CSSRule.STYLE_RULE,
   112                        "inserting syntactically correct style rule succeeds");
   113        },
   114        "insert_style_succeed");
   115   test(function() {
   116          while (grouping_rule.cssRules.length > 0) {
   117            grouping_rule.deleteRule(0);
   118          }
   119          assert_throws("SYNTAX_ERR",
   120                        function() {
   121                          grouping_rule.insertRule("@media bad syntax;", 0);
   122                        },
   123                        "inserting syntactically invalid rule throws syntax error");
   124          assert_equals(grouping_rule.cssRules.length, 0,
   125                        "Modified cssRules.length of @media rule");
   126        },
   127        "insert_bad_media_throw");
   128   test(function() {
   129          while (grouping_rule.cssRules.length > 0) {
   130            grouping_rule.deleteRule(0);
   131          }
   132          assert_throws("SYNTAX_ERR",
   133                        function() {
   134                          grouping_rule.insertRule("", 0);
   135                        },
   136                        "inserting empty rule throws syntax error");
   137          assert_equals(grouping_rule.cssRules.length, 0,
   138                        "Modified cssRules.length of @media rule");
   139        },
   140        "insert_empty_throw");
   141   test(function() {
   142          while (grouping_rule.cssRules.length > 0) {
   143            grouping_rule.deleteRule(0);
   144          }
   145          assert_throws("SYNTAX_ERR",
   146                        function() {
   147                          grouping_rule.insertRule("@media print {} foo", 0);
   148                        },
   149                        "inserting rule with garbage afterwards throws syntax error");
   150          assert_equals(grouping_rule.cssRules.length, 0,
   151                        "Modified cssRules.length of @media rule");
   152        },
   153        "insert_garbage_after_media_throw");
   154   test(function() {
   155          while (grouping_rule.cssRules.length > 0) {
   156            grouping_rule.deleteRule(0);
   157          }
   158          assert_throws("SYNTAX_ERR",
   159                        function() {
   160                          grouping_rule.insertRule("p { color: yellow } foo", 0);
   161                        },
   162                        "inserting rule with garbage afterwards throws syntax error");
   163          assert_equals(grouping_rule.cssRules.length, 0,
   164                        "Modified cssRules.length of @media rule");
   165        },
   166        "insert_garbage_after_style_throw");
   167   test(function() {
   168          while (grouping_rule.cssRules.length > 0) {
   169            grouping_rule.deleteRule(0);
   170          }
   171          assert_throws("SYNTAX_ERR",
   172                        function() {
   173                          grouping_rule.insertRule("@media print {} @media print {}", 0);
   174                        },
   175                        "inserting multiple rules throws syntax error");
   176          assert_equals(grouping_rule.cssRules.length, 0,
   177                        "Modified cssRules.length of @media rule");
   178        },
   179        "insert_two_media_throw");
   180   test(function() {
   181          while (grouping_rule.cssRules.length > 0) {
   182            grouping_rule.deleteRule(0);
   183          }
   184          assert_throws("SYNTAX_ERR",
   185                        function() {
   186                          grouping_rule.insertRule("p { color: yellow } @media print {}", 0);
   187                        },
   188                        "inserting multiple rules throws syntax error");
   189          assert_equals(grouping_rule.cssRules.length, 0,
   190                        "Modified cssRules.length of @media rule");
   191        },
   192        "insert_style_media_throw");
   193   test(function() {
   194          while (grouping_rule.cssRules.length > 0) {
   195            grouping_rule.deleteRule(0);
   196          }
   197          assert_throws("SYNTAX_ERR",
   198                        function() {
   199                          grouping_rule.insertRule("@media print {} p { color: yellow }", 0);
   200                        },
   201                        "inserting multiple rules throws syntax error");
   202          assert_equals(grouping_rule.cssRules.length, 0,
   203                        "Modified cssRules.length of @media rule");
   204        },
   205        "insert_media_style_throw");
   206   test(function() {
   207          while (grouping_rule.cssRules.length > 0) {
   208            grouping_rule.deleteRule(0);
   209          }
   210          assert_throws("SYNTAX_ERR",
   211                        function() {
   212                          grouping_rule.insertRule("p { color: yellow } p { color: yellow }", 0);
   213                        },
   214                        "inserting multiple rules throws syntax error");
   215          assert_equals(grouping_rule.cssRules.length, 0,
   216                        "Modified cssRules.length of @media rule");
   217        },
   218        "insert_two_style_throw");
   220   test(function() {
   221          while (grouping_rule.cssRules.length > 0) {
   222            grouping_rule.deleteRule(0);
   223          }
   224          var res = grouping_rule.insertRule("p { color: green }", 0);
   225          assert_equals(res, 0, "return value should be index");
   226          assert_equals(grouping_rule.cssRules.length, 1,
   227                        "Modified cssRules.length of @media rule");
   228          res = grouping_rule.insertRule("p { color: green }", 0);
   229          assert_equals(res, 0, "return value should be index");
   230          assert_equals(grouping_rule.cssRules.length, 2,
   231                        "Modified cssRules.length of @media rule");
   232          res = grouping_rule.insertRule("p { color: green }", 2);
   233          assert_equals(res, 2, "return value should be index");
   234          assert_equals(grouping_rule.cssRules.length, 3,
   235                        "Modified cssRules.length of @media rule");
   236        },
   237        "insert_retval");
   240 </script>
   241 </body>
   242 </html>

mercurial