Files
firefox/testing/web-platform/tests/css/cssom/CSSGroupingRule-insertRule.html
T
Stephen McGruerandBoris Zbarsky e6edfaec5e Bug 1611245 [wpt PR 21392] - Replace some assert_throws('Something', stuff) calls with assert_throws_dom, a=testonly
Automatic update from web-platform-tests
Replace some assert_throws('Something', stuff) calls with assert_throws_dom. (#21392)

This diff was generated by running:

  find . -type f -print0 | xargs -0 perl -pi -e "BEGIN { \$/ = undef; } s/assert_throws\(([ \n]*'[A-Za-z_]*') *(, *.)/assert_throws_dom(\1\2/gs"

in bash (doesn't work in tcsh, due to the $ inside "").

This does affect indentation poorly in cases when the first arg was on the same
line as the assert_throws, there was a newline after the ',' after the first
arg, and the following args were lined up with the first arg.  Fixing that,
especially when there are multiple lines after the first arg, is not trivial
with a regexp.

Co-authored-by: Boris Zbarsky <[email protected]>

--

wpt-commits: d5103044974ae41deb6e099649d7520c374aa36b
wpt-pr: 21392
2020-01-27 15:36:07 +00:00

119 lines
4.0 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSSOM - CSSGroupingRule - insertRule</title>
<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function create(t) {
var style = document.createElement('style');
style.appendChild(document.createTextNode('@media all { * {} }'));
document.head.appendChild(style);
t.add_cleanup(function() {
document.head.removeChild(style);
});
assert_true(!!style.sheet, 'setup - sheet defined');
assert_equals(
style.sheet.cssRules.length, 1, 'setup - grouping rule created'
);
assert_equals(
style.sheet.cssRules[0].cssRules.length, 1, 'setup - rule created'
);
return style.sheet.cssRules[0];
}
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
var result;
result = groupingRule.insertRule('.foo {}', 0);
assert_equals(groupingRule.cssRules.length, 2);
assert_not_equals(groupingRule.cssRules[0].cssText, first);
assert_equals(groupingRule.cssRules[1].cssText, first);
assert_equals(result, 0, 'result');
}, 'index before first');
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
var result;
result = groupingRule.insertRule('.foo {}', 1);
assert_equals(groupingRule.cssRules.length, 2);
assert_equals(groupingRule.cssRules[0].cssText, first);
assert_not_equals(groupingRule.cssRules[1].cssText, first);
assert_equals(result, 1);
}, 'index after final');
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
var result;
result = groupingRule.insertRule('.foo {}');
assert_equals(groupingRule.cssRules.length, 2);
assert_not_equals(groupingRule.cssRules[0].cssText, first);
assert_equals(groupingRule.cssRules[1].cssText, first);
assert_equals(result, 0);
}, 'index not specified');
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
assert_throws_dom('IndexSizeError', function() {
// The syntax error is intentional; it verifies that the insertion
// index is validated prior to the CSS text.
groupingRule.insertRule('???', 2);
});
assert_equals(groupingRule.cssRules.length, 1);
assert_equals(groupingRule.cssRules[0].cssText, first);
}, 'index exceeds length');
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
assert_throws_dom('SyntaxError', function() {
groupingRule.insertRule('???', 0);
});
assert_equals(groupingRule.cssRules.length, 1);
assert_equals(groupingRule.cssRules[0].cssText, first);
}, 'CSS parsing error');
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
assert_throws_dom('HierarchyRequestError', function() {
groupingRule.insertRule('@import url("foo.css");', 0);
});
assert_equals(groupingRule.cssRules.length, 1);
assert_equals(groupingRule.cssRules[0].cssText, first);
}, 'constraint violation');
test(function (t) {
var groupingRule = create(t);
var first = groupingRule.cssRules[0].cssText;
assert_throws_dom('HierarchyRequestError', function() {
groupingRule.insertRule('@namespace url(http://www.w3.org/1999/xhtml);', 0);
});
assert_equals(groupingRule.cssRules.length, 1);
assert_equals(groupingRule.cssRules[0].cssText, first);
}, 'disallowed namespace rule');
</script>
</head>
</html>