Files
sousa-gecko/testing/web-platform/tests/css/cssom/cssimportrule.html
T
Sam Sneddon 76f34b7e9d Bug 1929165 [wpt PR 48965] - Fix #7169: rewrite assert_readonly to check property descriptors, a=testonly
Automatic update from web-platform-tests
Fix #7169: rewrite assert_readonly to check property descriptors

This changes the implementation to only check that the property
descriptor makes the property readonly; it doesn't actually check its
behaviour. As detailed in the above issue, there's too many ways for
this test to be otherwise bogus, thus we should go for the simple
implementation.

This also fixes /css/cssom/cssimportrule.html, which previously
asserted that CSSImportRule#media was readonly, which was a
meaningless test, as even after the [PutForwards] [[Set]] call had
occured, the attribute being tested still returned the same object,
because it is defined with [SameObject].

--

wpt-commits: 877d18df86bb73b9b0f591eb0a56f38206d4b185
wpt-pr: 48965
2024-11-07 14:50:47 +00:00

125 lines
5.5 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>CSSOM CSSRule CSSImportRule 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-cssimportrule-interface">
<meta name="flags" content="dom">
<meta name="assert" content="All properties for this CSSImportRule instance of CSSRule are initialized correctly">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style id="styleElement" type="text/css">
@import url("support/a-green.css");
@import url("support/a-green.css") screen;
@import url("support/a-green.css") all;
@import url("support/a-green") supports((display: flex) or (display: block));
@import url('quote"quote');
@page { background-color: red; }
</style>
</head>
<body>
<div id="log"></div>
<script type="text/javascript">
var styleSheet, ruleList, rule, ruleWithMedia, ruleWithMediaAll, ruleWithSupports, ruleWithQuote;
setup(function() {
styleSheet = document.getElementById("styleElement").sheet;
ruleList = styleSheet.cssRules;
rule = ruleList[0];
ruleWithMedia = ruleList[1];
ruleWithMediaAll = ruleList[2];
ruleWithSupports = ruleList[3];
ruleWithQuote = ruleList[4];
});
test(function() {
assert_true(rule instanceof CSSRule);
assert_true(rule instanceof CSSImportRule);
assert_true(ruleWithMedia instanceof CSSRule);
assert_true(ruleWithMedia instanceof CSSImportRule);
assert_true(ruleWithSupports instanceof CSSRule);
assert_true(ruleWithSupports instanceof CSSImportRule);
}, "CSSRule and CSSImportRule 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");
assert_readonly(rule, "type");
assert_readonly(rule, "parentRule");
assert_readonly(rule, "parentStyleSheet");
}, "Existence and writability of CSSRule attributes");
test(function() {
assert_equals(rule.type, rule.IMPORT_RULE);
assert_equals(typeof rule.cssText, "string");
assert_equals(rule.cssText, '@import url("support/a-green.css");');
assert_equals(ruleWithMedia.cssText, '@import url("support/a-green.css") screen;');
assert_equals(ruleWithMediaAll.cssText, '@import url("support/a-green.css") all;');
assert_equals(ruleWithSupports.cssText, '@import url("support/a-green") supports((display: flex) or (display: block));');
assert_equals(ruleWithQuote.cssText, '@import url("quote\\\"quote");');
assert_equals(rule.parentRule, null);
assert_true(rule.parentStyleSheet instanceof CSSStyleSheet);
}, "Values of CSSRule attributes");
test(function() {
assert_idl_attribute(rule, "href");
assert_idl_attribute(rule, "media");
assert_idl_attribute(rule, "styleSheet");
assert_readonly(rule, "href");
assert_readonly(rule, "styleSheet");
}, "Existence and writability of CSSImportRule attributes");
test(function() {
assert_equals(typeof rule.href, "string");
assert_true(rule.media instanceof MediaList);
assert_true(rule.styleSheet instanceof CSSStyleSheet);
assert_true(ruleWithMedia.media.length > 0);
assert_equals(ruleWithMedia.media.mediaText, "screen");
}, "Values of CSSImportRule attributes");
test(function() {
ruleWithMedia.media = "print";
assert_equals(ruleWithMedia.media.mediaText, "print");
}, "CSSImportRule : MediaList mediaText attribute should be updated due to [PutForwards]");
test(function() {
var ruleWithPage = ruleList[5];
ruleWithPage.style = "margin-top: 10px;"
assert_equals(ruleWithPage.style.cssText, "margin-top: 10px;");
}, "CSSStyleDeclaration cssText attribute should be updated due to [PutForwards]");
test(function() {
styleSheet.media = "screen";
assert_equals(styleSheet.media.mediaText, "screen");
}, "StyleSheet : MediaList mediaText attribute should be updated due to [PutForwards]");
test(function() {
assert_idl_attribute(ruleWithSupports, "supportsText");
assert_readonly(ruleWithSupports, "supportsText");
}, "Existence and writability of CSSImportRule supportsText attribute");
test(function() {
assert_equals(ruleWithSupports.supportsText, "(display: flex) or (display: block)");
}, "Value of CSSImportRule supportsText attribute");
</script>
</body>
</html>