Skip to content

Commit

Permalink
Correctly test CSSStyleRule.style.
Browse files Browse the repository at this point in the history
Remove the assert_readonly test and add one to verify that assigning to
CSSStyleRule.style correctly forwards to CSSStyleRule.style.cssText.

We currently test for whether CSSStyleRule.style is read-only by
trying to assign to it; however, the spec has it as actually:

interface CSSStyleRule : CSSRule {
  ...
  [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
};

See: https://drafts.csswg.org/cssom/

The `PutForwards=cssText` means that assigning to CSSStyleRule.style
should actually assign to style.cssText.
  • Loading branch information
jyc committed Jun 12, 2017
1 parent 2a78fae commit 18dbfce
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
2 changes: 1 addition & 1 deletion tests/wpt/metadata/MANIFEST.json
Expand Up @@ -553764,7 +553764,7 @@
"testharness"
],
"cssom/CSSStyleRule.html": [
"b7cfe3da8454d5c64a25c440e0776c80d8c3a751",
"83a876458ba609b81c86354160549ab11b018d38",
"testharness"
],
"cssom/CSSStyleSheet.html": [
Expand Down
4 changes: 2 additions & 2 deletions tests/wpt/metadata/cssom/CSSStyleRule.html.ini
Expand Up @@ -9,9 +9,9 @@
[Values of CSSRule attributes]
expected: FAIL

[Existence, writability and type of CSSStyleRule attributes]
[Values of CSSStyleRule attributes]
expected: FAIL

[Values of CSSStyleRule attributes]
[Existence and type of CSSStyleRule attributes]
expected: FAIL

20 changes: 18 additions & 2 deletions tests/wpt/web-platform-tests/cssom/CSSStyleRule.html
Expand Up @@ -67,8 +67,24 @@
assert_idl_attribute(rule, "selectorText");
assert_equals(typeof rule.selectorText, "string");
assert_idl_attribute(rule, "style");
assert_readonly(rule, "style");
}, "Existence, writability and type of CSSStyleRule attributes");
}, "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");
Expand Down

0 comments on commit 18dbfce

Please sign in to comment.