| <?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> |