| <!DOCTYPE HTML> |
| <html class="test-wait"> |
| <style> |
| div { content-visibility: auto; } |
| div::after { content: "Bar" } |
| </style> |
| <div>Foo</div> |
| <div style="height:4000px"></div> |
| <script> |
| // Ensure no crash when removing element with generated content after |
| // `content-visibility: auto` content goes out of view. |
| requestAnimationFrame(() => { |
| requestAnimationFrame(() => { |
| // Let one layout run with the div content in view, then |
| // scroll it out of view. |
| document.scrollingElement.scrollTop = 3000; |
| |
| // Run three frames to ensure a new layout happens with the |
| // 'auto' content hidden (i.e. layout structures are |
| // destroyed), then remove the div with a pseudo element which |
| // was previously problematic. |
| requestAnimationFrame(() => { |
| requestAnimationFrame(() => { |
| requestAnimationFrame(() => { |
| document.querySelector('div').remove(); |
| document.documentElement.className = ''; |
| }) |
| }) |
| }) |
| }) |
| }); |
| </script> |