| <!doctype html> |
| <meta charset="utf8"> |
| <title>CSS Content Visibility: offscreen c-v auto content is relevant when in top layer</title> |
| <link rel="author" title="Martin Robinson" href="mailto:[email protected]"> |
| <link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility"> |
| <meta name="assert" content="offscreen c-v auto content is relevant when in top layer"> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/rendering-utils.js"></script> |
| |
| <style> |
| #inner { |
| content-visibility: auto; |
| contain-intrinsic-size: 100px 100px; |
| } |
| </style> |
| |
| <dialog id="dialog"> |
| <div id="spacer" style="height: 100000px;"></div> |
| <div id="inner"> |
| <div style="height: 200px; width: 200px;">content</div> |
| </div> |
| </dialog> |
| |
| <script> |
| promise_test(async () => { |
| dialog.show(); |
| // It takes at least one frame to determine the proximity to the viewport. |
| await waitForAtLeastOneFrame(); |
| assert_equals(inner.getBoundingClientRect().height, 100); |
| |
| dialog.close(); |
| dialog.showModal(); |
| |
| // Even though the element with `content-visibility: auto` has an ancestor |
| // in the top layer, this element is not in the top layer list (although |
| // it's in the top layer stacking context). This means it should not be |
| // relevant to the user, because it is nevertheless not onscreen. |
| // It takes at least one frame to determine the proximity to the viewport. |
| await waitForAtLeastOneFrame(); |
| assert_equals(inner.getBoundingClientRect().height, 100); |
| dialog.close(); |
| }); |
| </script> |