| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>CSSOM CSSRule CSSStyleRule interface</title> | |
| <link rel="author" title="Letitia Lew" href="mailto:lew.letitia@gmail.com"> | |
| <link rel="help" href="http://www.w3.org/TR/cssom-1/#css-rules"> | |
| <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssrule-interface"> | |
| <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssstylerule-interface"> | |
| <meta name="flags" content="dom"> | |
| <meta name="assert" content="All properties for this CSSStyleRule instance of CSSRule are initialized correctly"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style id="styleElement" type="text/css"> | |
| div { margin: 10px; padding: 0px; } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="log"></div> | |
| <script type="text/javascript"> | |
| var rule; | |
| setup(function() { | |
| var styleSheet = document.getElementById("styleElement").sheet; | |
| var ruleList = styleSheet.cssRules; | |
| rule = ruleList[0]; | |
| }); | |
| test(function() { | |
| assert_true(rule instanceof CSSRule); | |
| assert_true(rule instanceof CSSStyleRule); | |
| }, "CSSRule and CSSStyleRule types"); | |
| test(function() { | |
| assert_equals(rule.STYLE_RULE, 1); | |
| assert_equals(rule.IMPORT_RULE, 3); | |
| assert_equals(rule.MEDIA_RULE, 4); | |
| assert_equals(rule.FONT_FACE_RULE, 5); | |
| assert_equals(rule.PAGE_RULE, 6); | |
| assert_equals(rule.NAMESPACE_RULE, 10); | |
| assert_idl_attribute(rule, "type"); | |
| assert_equals(typeof rule.type, "number"); | |
| }, "Type of CSSRule#type and constant values"); | |
| test(function() { | |
| assert_true(rule instanceof CSSRule); | |
| assert_idl_attribute(rule, "cssText"); | |
| assert_idl_attribute(rule, "parentRule"); | |
| assert_idl_attribute(rule, "parentStyleSheet"); | |
| }, "Existence of CSSRule attributes"); | |
| test(function() { | |
| assert_readonly(rule, "type"); | |
| assert_readonly(rule, "parentRule"); | |
| assert_readonly(rule, "parentStyleSheet"); | |
| }, "Writability of CSSRule attributes"); | |
| test(function() { | |
| assert_equals(rule.type, rule.STYLE_RULE); | |
| assert_equals(typeof rule.cssText, "string"); | |
| assert_equals(rule.cssText, "div { margin: 10px; padding: 0px; }"); | |
| assert_equals(rule.parentRule, null); | |
| assert_true(rule.parentStyleSheet instanceof CSSStyleSheet); | |
| }, "Values of CSSRule attributes"); | |
| test(function() { | |
| assert_idl_attribute(rule, "selectorText"); | |
| assert_equals(typeof rule.selectorText, "string"); | |
| assert_idl_attribute(rule, "style"); | |
| }, "Existence and type of CSSStyleRule attributes"); | |
| test(function() { | |
| // CSSStyleRule.style has PutForwards=cssText and SameObject. | |
| var initial = rule.style.cssText; | |
| var style = rule.style; | |
| rule.style = ""; | |
| assert_equals(rule.style.cssText, ""); | |
| assert_equals(rule.style, style); | |
| rule.style = "margin: 42px;"; | |
| assert_equals(rule.style.margin, "42px"); | |
| assert_equals(rule.style, style); | |
| rule.style = initial; | |
| assert_equals(rule.style, style); | |
| }, "Assigning to CSSStyleRule.style assigns to cssText; CSSStyleRule.style returns the same object"); | |
| test(function() { | |
| assert_equals(rule.selectorText, "div"); | |
| assert_true(rule.style instanceof CSSStyleDeclaration); | |
| }, "Values of CSSStyleRule attributes"); | |
| test(function() { | |
| assert_equals(rule.style.margin, "10px"); | |
| assert_equals(rule.style.padding, "0px"); | |
| rule.style.padding = "5px"; | |
| rule.style.border = "1px solid"; | |
| assert_equals(rule.style.padding, "5px"); | |
| assert_equals(rule.style.border, "1px solid"); | |
| }, "Mutability of CSSStyleRule's style attribute"); | |
| test(function() { | |
| rule.style = "margin: 15px; padding: 2px;"; | |
| assert_equals(rule.style.margin, "15px", "margin"); | |
| assert_equals(rule.style.padding, "2px", "padding"); | |
| }, "CSSStyleRule's style has [PutForwards]"); | |
| </script> | |
| </body> | |
| </html> |