| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Test that selection gets cleared properly with line-height set.</title> |
| <style> |
| ::selection { |
| background: rgba(255, 0, 0, 0.9); |
| } |
| |
| div { |
| font-size: 20px; |
| font-family: 'Ahem'; |
| line-height: 100px; |
| } |
| </style> |
| </head> |
| <body> |
| <div id="container">A<br><span>A</span></div> |
| <pre id="result"></pre> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| async function test() { |
| await new Promise(requestAnimationFrame); |
| |
| if (window.internals) |
| internals.startTrackingRepaints(); |
| |
| const range = document.createRange(); |
| range.selectNode(document.querySelector("#container > span")); |
| window.getSelection().addRange(range); |
| |
| await new Promise(requestAnimationFrame); |
| |
| window.getSelection().removeAllRanges(); |
| |
| if (window.internals) { |
| let repaintRects = internals.repaintRectsAsText(); |
| internals.stopTrackingRepaints(); |
| result.textContent = repaintRects; |
| } |
| |
| await new Promise(requestAnimationFrame); |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }; |
| test(); |
| </script> |
| </body> |
| </html> |