| <!DOCTYPE html> |
| <style> |
| div { color: red; } |
| </style> |
| <style> |
| @supports (display:block) { |
| div:not(.outside).valid { color: green; } |
| } |
| div:not(.inside).valid { |
| color:green; |
| } |
| </style> |
| <style> |
| div.nocondition.inside { color: green; } |
| @supports { |
| div:not(.outside).nocondition { color: red; } |
| } |
| div:not(.inside).nocondition { |
| color:green; |
| } |
| </style> |
| <style> |
| div.norule.outside { color: green; } |
| @supports (display:block) |
| div:not(.inside).norule { |
| color:red; |
| } |
| </style> |
| <style> |
| @supports; |
| div:not(.inside).semicolon { |
| color:green; |
| } |
| </style> |
| <div class="result inside valid">This should be green if not() pseudo class selector works inside @supports rule.</div> |
| <div class="result outside valid">This should be green if not() pseudo class selector works after/outside @supports rule.</div> |
| |
| <div class="result inside nocondition">This should be green if not() pseudo class selector DOES NOT work inside @supports rule without condition.</div> |
| <div class="result outside nocondition">This should be green if not() pseudo class selector works after/outside @supports rule without condition.</div> |
| |
| <div class="result outside norule">This should be green if not() pseudo class selector DOES NOT work after/outside @supports rule without rule.</div> |
| |
| <div class="result outside semicolon">This should be green if not() pseudo class selector works after/outside @supports rule without condition and rule.</div> |
| |
| <script src="../resources/js-test-pre.js"></script> |
| <script> |
| description("Test that @supports doesn't break 'not' pseudo class selector."); |
| |
| |
| shouldBeDefined("CSSRule.SUPPORTS_RULE"); |
| |
| evalAndLog("rules = document.styleSheets[1].cssRules"); |
| shouldEvaluateTo("rules.length", 2); |
| shouldBe("rules[0].type", "CSSRule.SUPPORTS_RULE"); |
| shouldEvaluateTo("rules[0].cssRules.length", 1); |
| shouldBe("rules[0].cssRules[0].type", "CSSRule.STYLE_RULE"); |
| shouldBeEqualToString("rules[0].cssRules[0].style.color", "green"); |
| shouldBe("rules[1].type", "CSSRule.STYLE_RULE"); |
| shouldBeEqualToString("rules[1].style.color", "green"); |
| |
| evalAndLog("rules = document.styleSheets[2].cssRules"); |
| shouldEvaluateTo("rules.length", 2); |
| shouldBe("rules[1].type", "CSSRule.STYLE_RULE"); |
| shouldBeEqualToString("rules[1].style.color", "green"); |
| |
| evalAndLog("rules = document.styleSheets[3].cssRules"); |
| shouldEvaluateTo("rules.length", 1); |
| shouldBe("rules[0].type", "CSSRule.STYLE_RULE"); |
| shouldBeEqualToString("rules[0].style.color", "green"); |
| |
| debug("Checks all elements are green."); |
| var results = document.getElementsByClassName("result"); |
| for (var i = 0; i < results.length; i++) { |
| var result = results[i]; |
| shouldBeEqualToString("getComputedStyle(result, null).color", "rgb(0, 128, 0)"); |
| } |
| </script> |
| <script src="../resources/js-test-post.js"></script> |