| <!DOCTYPE html> | |
| <title>CSS Nesting: CSSNestedDeclarations CSSOM (whitespace)</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-nesting-1/#nested-declarations-rule"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script> | |
| // https://drafts.csswg.org/cssom/#serialize-a-css-rule | |
| test(() => { | |
| let s = new CSSStyleSheet(); | |
| s.replaceSync(` | |
| .a { | |
| & { } | |
| left: 1px; | |
| & { } | |
| right: 1px; | |
| } | |
| `); | |
| assert_equals(s.cssRules.length, 1); | |
| let a_rule = s.cssRules[0]; | |
| assert_equals(a_rule.cssRules.length, 4); | |
| for (let child_rule of a_rule.cssRules) { | |
| child_rule.style = ''; | |
| } | |
| assert_equals(a_rule.cssText, '.a {\n & { }\n & { }\n}'); | |
| }, 'Empty CSSNestedDeclarations do not affect outer serialization'); | |
| // https://drafts.csswg.org/cssom/#serialize-a-css-rule | |
| test(() => { | |
| let s = new CSSStyleSheet(); | |
| s.replaceSync(` | |
| .a { | |
| @media (width > 1px) { | |
| & { } | |
| left: 1px; | |
| & { } | |
| right: 1px; | |
| } | |
| } | |
| `); | |
| assert_equals(s.cssRules.length, 1); | |
| let outer = s.cssRules[0]; | |
| assert_equals(outer.cssRules.length, 1); | |
| // @media | |
| let media = outer.cssRules[0]; | |
| assert_equals(media.cssRules.length, 4); | |
| for (let child_rule of media.cssRules) { | |
| child_rule.style = ''; | |
| } | |
| assert_equals(media.cssText, '@media (width > 1px) {\n & { }\n & { }\n}'); | |
| }, 'Empty CSSNestedDeclarations do not affect outer serialization (nested grouping rule)'); | |
| </script> |