<!
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>