1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <!DOCTYPE HTML>
- <html>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=649740
- -->
- <head>
- <title>Test for Bug 649740</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <style id="style">
- </style>
- </head>
- <body>
- <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=649740">Mozilla Bug 649740</a>
- <p id="display1"></p>
- <p id="display2"></p>
- <pre id="test">
- <script type="application/javascript">
- /** Test for Bug 649740 **/
- function condition(s) {
- return s.replace(/^@supports\s*/, '').replace(/ \s*{\s*}\s*$/, '');
- }
- var styleSheetText =
- "@supports(color: green){ }\n" +
- "@supports (color: green) { }\n" +
- "@supports ((color: green)) { }\n" +
- "@supports (color: green) and (color: blue) { }\n" +
- "@supports ( Font: 20px serif ! Important) { }";
- function runTest() {
- var style = document.getElementById("style");
- style.textContent = styleSheetText;
- var sheet = style.sheet;
- is(condition(sheet.cssRules[0].cssText), "(color: green)");
- is(condition(sheet.cssRules[1].cssText), "(color: green)");
- is(condition(sheet.cssRules[2].cssText), "((color: green))");
- is(condition(sheet.cssRules[3].cssText), "(color: green) and (color: blue)");
- is(condition(sheet.cssRules[4].cssText), "( Font: 20px serif ! Important)");
- var cs1 = getComputedStyle(document.getElementById("display1"), "");
- var cs2 = getComputedStyle(document.getElementById("display2"), "");
- function check_balanced_condition(condition, expected_match) {
- style.textContent = "#display1, #display2 { text-decoration: overline }\n" +
- "@supports " + condition + "{\n" +
- " #display1 { text-decoration: line-through }\n" +
- "}\n" +
- "#display2 { text-decoration: underline }\n";
- is(cs1.textDecoration,
- expected_match ? "line-through" : "overline",
- "@supports condition \"" + condition + "\" should " +
- (expected_match ? "" : "NOT ") + "match");
- is(cs2.textDecoration, "underline",
- "@supports condition \"" + condition + "\" should be balanced");
- }
- check_balanced_condition("not (color: green)", false);
- check_balanced_condition("not (colour: green)", true);
- check_balanced_condition("not(color: green)", false);
- check_balanced_condition("not(colour: green)", false);
- check_balanced_condition("not/* */(color: green)", false);
- check_balanced_condition("not/* */(colour: green)", false);
- check_balanced_condition("not /* */ (color: green)", false);
- check_balanced_condition("not /* */ (colour: green)", true);
- check_balanced_condition("(color: green) and (color: blue)", true);
- check_balanced_condition("(color: green) /* */ /* */ and /* */ /* */ (color: blue)", true);
- check_balanced_condition("(color: green) and(color: blue)", false);
- check_balanced_condition("(color: green) and/* */(color: blue)", false);
- check_balanced_condition("(color: green)and (color: blue)", false);
- check_balanced_condition("(color: green) or (color: blue)", true);
- check_balanced_condition("(color: green) /* */ /* */ or /* */ /* */ (color: blue)", true);
- check_balanced_condition("(color: green) or(color: blue)", false);
- check_balanced_condition("(color: green) or/* */(color: blue)", false);
- check_balanced_condition("(color: green)or (color: blue)", false);
- SimpleTest.finish();
- }
- SimpleTest.waitForExplicitFinish();
- runTest();
- </script>
- </pre>
- </body>
- </html>
|