| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>CSS Paged Media: parsing @page selectors</title> | |
| <link rel="author" title="Mozilla" href="https://mozilla.org"/> | |
| <link rel="help" href="https://drafts.csswg.org/css-page/#page-selectors"/> | |
| <meta name="assert" content="Test that @page selectors are parsed correctly."> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| @page a, B { | |
| size: 1in; | |
| } | |
| @page A,b,C { | |
| size: 2in; | |
| } | |
| @page auto { | |
| size: 3in; | |
| } | |
| @page something, auto { | |
| size: 4in; | |
| } | |
| @page auto, other_thing { | |
| size: 5in; | |
| } | |
| @page _a, Z { | |
| size: 6in; | |
| } | |
| @page -b, y { | |
| size: 7in; | |
| } | |
| @page _abcd { | |
| size: 8in; | |
| } | |
| @page n,-XYZ { | |
| size: 9in; | |
| } | |
| </style> | |
| <script> | |
| let expectedForSelector = { | |
| "a, B" : "size: 1in;", | |
| "A, b, C" : "size: 2in;", | |
| "auto" : "size: 3in;", | |
| "something, auto" : "size: 4in;", | |
| "auto, other_thing" : "size: 5in;", | |
| "_a, Z" : "size: 6in;", | |
| "-b, y" : "size: 7in;", | |
| "_abcd" : "size: 8in;", | |
| "n, -XYZ" : "size: 9in;" | |
| }; | |
| let styleSheets = document.styleSheets; | |
| for (let sheet of styleSheets) { | |
| let rules = sheet.cssRules; | |
| for (let rule of rules) { | |
| if (rule.type == CSSRule.PAGE_RULE) { | |
| let expected = expectedForSelector[rule.selectorText]; | |
| test(function(){ | |
| assert_equals(rule.style.cssText, expected, "unexpected @page contents"); | |
| }, "contents for selector ['" + rule.selectorText + "']"); | |
| delete expectedForSelector[rule.selectorText]; | |
| } | |
| } | |
| } | |
| // Validate that we can assign an empty selector | |
| test(function() { | |
| let rule = styleSheets[0].cssRules[0]; | |
| assert_equals(rule.type, CSSRule.PAGE_RULE, "expected first rule to be @page"); | |
| rule.selectorText = ""; | |
| assert_equals(rule.selectorText, "", "unexpected selector when assigning blank string"); | |
| }, "expected empty selector when assigning blank string"); | |
| test(function() { | |
| assert_equals(Object.keys(expectedForSelector).length, 0, "missing @page selectors"); | |
| }); | |
| </script> |