| <!DOCTYPE html> |
| <title>CSS Values and Units Test: if() media() condition invalidation</title> |
| <meta name="assert" content="Test if() media() condition invalidation"> |
| <link rel="help" href="https://drafts.csswg.org/css-values-5/#if-notation"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <style> |
| iframe { |
| width: 50px; |
| height: 50px; |
| } |
| </style> |
| <iframe id="iframe" srcdoc=" |
| <div id=target></div> |
| <style> |
| #target { |
| --actual: if(media((height < 100px) or ((height >= 200px) and (height < 300px))): true_value; else: false_value;); |
| } |
| </style> |
| "></iframe> |
| |
| <script> |
| function waitForLoad(w) { |
| return new Promise(resolve => w.addEventListener('load', resolve)); |
| } |
| |
| promise_test(async () => { |
| await waitForLoad(window); |
| const target = iframe.contentDocument.querySelector('#target'); |
| let actualValue = () => getComputedStyle(target).getPropertyValue('--actual'); |
| |
| assert_equals(actualValue(), 'true_value', '--actual before resize'); |
| |
| // [<height of frame>, <expected function result>] |
| let data = [ |
| ['100px', 'false_value'], |
| ['200px', 'true_value'], |
| ['300px', 'false_value'] |
| ]; |
| |
| for (let d of data) { |
| iframe.style.height = d[0]; |
| let expected = d[1]; |
| assert_equals(actualValue(), expected, `--actual after resize to ${d[0]}`); |
| } |
| }); |
| </script> |