gecko-dev/layout/style/test/test_non_content_accessible...

63 строки
2.0 KiB
HTML

<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style id="sheet"></style>
<script>
// Even though some of these no longer exist, we still do want to test that
// they aren't exposed to the web.
const NON_CONTENT_ACCESIBLE_PSEUDOS = [
"::-moz-complex-control-wrapper",
"::-moz-number-wrapper",
"::-moz-number-text",
"::-moz-number-spin-up",
"::-moz-number-spin-down",
"::-moz-number-spin-box",
"::-moz-search-clear-button",
":-moz-native-anonymous",
":-moz-use-shadow-tree-root",
":-moz-table-border-nonzero",
":-moz-browser-frame",
":-moz-devtools-highlighted",
":-moz-styleeditor-transitioning",
":-moz-user-disabled",
":-moz-handler-clicktoplay",
":-moz-handler-vulnerable-updatable",
":-moz-handler-vulnerable-no-update",
":-moz-handler-disabled",
":-moz-handler-blocked",
":-moz-handler-chrased",
":-moz-has-dir-attr",
":-moz-dir-attr-ltr",
":-moz-dir-attr-rtl",
":-moz-dir-attr-like-auto",
":-moz-autofill",
":-moz-autofill-preview",
];
if (!SpecialPowers.getBoolPref("layout.css.xul-tree-pseudos.content.enabled")) {
NON_CONTENT_ACCESIBLE_PSEUDOS.push("::-moz-tree-row", "::-moz-tree-row(foo)");
}
test(function() {
sheet.textContent = `div { color: initial }`;
assert_equals(sheet.sheet.cssRules.length, 1);
}, "sanity");
for (const pseudo of NON_CONTENT_ACCESIBLE_PSEUDOS) {
test(function() {
sheet.textContent = `${pseudo} { color: blue; }`;
assert_equals(sheet.sheet.cssRules.length, 0,
pseudo + " shouldn't be accessible to content");
if (pseudo.indexOf("::") === 0) {
let pseudoStyle = getComputedStyle(document.documentElement, pseudo);
let elementStyle = getComputedStyle(document.documentElement);
for (prop of pseudoStyle) {
assert_equals(pseudoStyle[prop], elementStyle[prop],
pseudo + " styles shouldn't be visible from getComputedStyle");
}
}
}, pseudo);
}
</script>