76 lines
3.2 KiB
HTML
76 lines
3.2 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
|
xmlns:nsfoo="http://nsfoo.org"
|
|
xmlns:nsbar="http://nsbar.org">
|
|
<head>
|
|
<title>CSS Values: attr() substitution with implicit null namespace</title>
|
|
<link rel="help" href="https://drafts.csswg.org/css-values-5/#attr-notation"/>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="target"
|
|
nsfoo:data-x="value1"
|
|
nsbar:data-x="value2"
|
|
data-x="value3"
|
|
|
|
nsfoo:data-y="value4"
|
|
nsbar:data-y="value5">
|
|
Test
|
|
</div>
|
|
<style>
|
|
#target {
|
|
--x: attr(data-x type(*), fallback);
|
|
--y: attr(data-y type(*), fallback);
|
|
--z: attr(data-z type(*), fallback);
|
|
--w: attr(data-w type(*), fallback);
|
|
}
|
|
</style>
|
|
<script>
|
|
test(() => {
|
|
let e = document.getElementById("target");
|
|
assert_equals("value1", e.getAttributeNS("http://nsfoo.org", "data-x"));
|
|
assert_equals("value2", e.getAttributeNS("http://nsbar.org", "data-x"));
|
|
assert_equals("value3", e.getAttributeNS(null, "data-x"));
|
|
|
|
assert_equals("value4", e.getAttributeNS("http://nsfoo.org", "data-y"));
|
|
assert_equals("value5", e.getAttributeNS("http://nsbar.org", "data-y"));
|
|
assert_equals(null, e.getAttributeNS(null, "data-y"));
|
|
}, "Sanity check");
|
|
|
|
test(() => {
|
|
let e = document.getElementById("target");
|
|
assert_equals(getComputedStyle(e).getPropertyValue("--x"), "value3");
|
|
}, "Attribute in null-namespace is substituted");
|
|
|
|
test(() => {
|
|
let e = document.getElementById("target");
|
|
assert_equals(getComputedStyle(e).getPropertyValue("--y"), "fallback");
|
|
}, "Fallback is taken when attribute does not exist in null-namespace");
|
|
|
|
test((t) => {
|
|
let e = document.getElementById("target");
|
|
t.add_cleanup(() => {
|
|
e.removeAttributeNS("http://nsfoo.org", "data-z");
|
|
e.removeAttributeNS("http://nsbar.org", "data-z");
|
|
e.removeAttributeNS(null, "data-z");
|
|
});
|
|
e.setAttributeNS("http://nsfoo.org", "data-z", "value6");
|
|
e.setAttributeNS("http://nsbar.org", "data-z", "value7");
|
|
e.setAttributeNS(null, "data-z", "value8");
|
|
assert_equals(getComputedStyle(e).getPropertyValue("--z"), "value8");
|
|
}, "Attribute in null-namespace is substituted (JS)");
|
|
|
|
test((t) => {
|
|
let e = document.getElementById("target");
|
|
t.add_cleanup(() => {
|
|
e.removeAttributeNS("http://nsfoo.org", "data-w");
|
|
e.removeAttributeNS("http://nsbar.org", "data-w");
|
|
});
|
|
e.setAttributeNS("http://nsfoo.org", "data-w", "value9");
|
|
e.setAttributeNS("http://nsbar.org", "data-w", "value10");
|
|
assert_equals(getComputedStyle(e).getPropertyValue("--w"), "fallback");
|
|
}, "Fallback is taken when attribute does not does exist in null-namespace (JS)");
|
|
</script>
|
|
</body>
|
|
</html>
|