summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/cssom/CSSStyleRule.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/cssom/CSSStyleRule.html')
-rw-r--r--testing/web-platform/tests/css/cssom/CSSStyleRule.html113
1 files changed, 113 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/cssom/CSSStyleRule.html b/testing/web-platform/tests/css/cssom/CSSStyleRule.html
new file mode 100644
index 0000000000..3acdfb1285
--- /dev/null
+++ b/testing/web-platform/tests/css/cssom/CSSStyleRule.html
@@ -0,0 +1,113 @@
+<!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>