| <!DOCTYPE html> |
| <title>CSS Values and Units Test: attr() invalidation of pseudo elements</title> |
| <meta name="assert" content="Test attr() invalidation of pseudo elements"> |
| <link rel="help" href="https://drafts.csswg.org/css-values/#attr-notation"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <html> |
| <body> |
| <div id="div"></div> |
| </body> |
| </html> |
| |
| <script> |
| const pseudoSelectors = [ |
| "::after", |
| "::backdrop", |
| "::before", |
| "::first-letter", |
| "::first-line", |
| "::selection" |
| ]; |
| |
| function test_pseudo_element_invalidation(pseudoSelector) { |
| let elem = document.getElementById("div"); |
| elem.setAttribute("data-foo", "150%"); |
| elem.style["font-size"]= "attr(data-foo type(<percentage>))"; |
| let old_font_size = window.getComputedStyle(elem, pseudoSelector).getPropertyValue("font-size"); |
| elem.setAttribute("data-foo", "300%"); |
| let new_font_size = window.getComputedStyle(elem, pseudoSelector).getPropertyValue("font-size"); |
| test(() => { |
| assert_not_equals(new_font_size, old_font_size, |
| "Change of attribute value should lead to invalidation of " |
| + pseudoSelector + " element style."); |
| }); |
| elem.style["font-size"]= null; |
| } |
| |
| pseudoSelectors.forEach(pseudoSelector => { |
| test_pseudo_element_invalidation(pseudoSelector); |
| }); |
| </script> |