44 lines
1.7 KiB
HTML
44 lines
1.7 KiB
HTML
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
|
|
<div></div>
|
|
<div class=styled><div></div></div>
|
|
<div><div class=styled></div></div>
|
|
|
|
<div id=host></div>
|
|
|
|
<script>
|
|
var host = document.getElementById('host');
|
|
var shadow = host.attachShadow({mode: 'closed'});
|
|
shadow.innerHTML = `
|
|
<div></div>
|
|
<div class=styled><div></div></div>
|
|
<div><div class=styled></div></div>
|
|
`;
|
|
|
|
function testInvalidation(scope, cssText, shouldInvalidate, name)
|
|
{
|
|
test(() => {
|
|
internals.updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks();
|
|
|
|
var style = document.createElement("style");
|
|
style.textContent = cssText;
|
|
scope.appendChild(style);
|
|
|
|
var styledDiv = scope.querySelectorAll("div.styled");
|
|
for (var div of styledDiv)
|
|
assert_equals(internals.styleChangeType(div), shouldInvalidate ? "InlineStyleChange" : "NoStyleChange");
|
|
|
|
var notStyledDiv = scope.querySelectorAll("div:not(.styled)");
|
|
for (var div of notStyledDiv)
|
|
assert_equals(internals.styleChangeType(div), "NoStyleChange");
|
|
}, name);
|
|
}
|
|
|
|
testInvalidation(document.body, ".styled { color: red }", true, "Test that adding stylesheet with matching selector invalidates in document scope");
|
|
testInvalidation(document.body, ".nothere { color: red }", false, "Test that adding stylesheet without matching selector does not invalidate in document scope");
|
|
testInvalidation(shadow, ".styled { color: red }", true, "Test that adding stylesheet with matching selector invalidates in shadow scope");
|
|
testInvalidation(shadow, ".nothere { color: red }", false, "Test that adding stylesheet without matching selector does not invalidate in shadow scope");
|
|
|
|
</script>
|