blob: 351f3f4ccc340b760d48e4a25d9cf7436c9d92e3 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>CSSPageRule interface</title>
<link href="mailto:cdumez@apple.com" rel="author" title="Chris Dumez">
<link href="https://drafts.csswg.org/cssom/#the-csspagerule-interface" rel="help">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style id="styleElement">
@page :left {
margin-left: 3cm;
margin-right: 4cm;
}
</style>
</head>
<body>
<script>
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 CSSPageRule);
}, "CSSRule and CSSPageRule types");
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.PAGE_RULE);
assert_equals(typeof rule.cssText, "string");
assert_equals(rule.cssText, "@page :left { margin-left: 3cm; margin-right: 4cm; }");
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 CSSPageRule attributes");
test(function() {
assert_equals(rule.selectorText, "@page :left");
assert_true(rule.style instanceof CSSStyleDeclaration);
}, "Values of CSSPageRule attributes");
test(function() {
assert_equals(rule.style.marginLeft, "3cm", "marginLeft");
assert_equals(rule.style.marginRight, "4cm", "marginRight");
rule.style.marginLeft = "5px";
rule.style.marginRight = "6px";
assert_equals(rule.style.marginLeft, "5px");
assert_equals(rule.style.marginRight, "6px");
}, "Mutability of CSSPageRule's style attribute");
test(function() {
rule.style = "margin-left: 6cm; margin-right: 8cm;";
assert_equals(rule.style.marginLeft, "6cm", "marginLeft");
assert_equals(rule.style.marginRight, "8cm", "marginRight");
}, "CSSPageRule's style has [PutForwards]");
</script>
</body>
</html>