| <!doctype HTML> |
| <html> |
| <meta charset="utf8"> |
| <title>Display Locking: measure forced SVG text</title> |
| <link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> |
| <link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility"> |
| <meta name="assert" content="content-visibility hidden svg descendant has correct layout"> |
| |
| <style> |
| #container { |
| width: 100px; |
| height: 100px; |
| background: lightgreen; |
| } |
| .hidden { |
| content-visibility: hidden; |
| } |
| </style> |
| |
| <div id="parent"></div> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <script> |
| async_test((t) => { |
| let length; |
| function measureForced() { |
| t.step(() => { |
| length = document.getElementById("text").getComputedTextLength(); |
| assert_not_equals(length, 0, "forced"); |
| |
| }); |
| } |
| |
| function measureWhenVisible() { |
| t.step(() => { |
| const visible_length = document.getElementById("text").getComputedTextLength(); |
| assert_not_equals(visible_length, 0, "when visible"); |
| assert_equals(visible_length, length, "when visible"); |
| }); |
| } |
| |
| function construct(container) { |
| container.innerHTML = ` |
| <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> |
| <style> |
| .t { font: 10px sans-serif; } |
| </style> |
| <text id="text" x="10" y="10" class="t">This is text</text> |
| </svg> |
| `; |
| } |
| |
| async function runTest() { |
| const container = document.createElement("div"); |
| container.id = "container"; |
| |
| document.getElementById("parent").appendChild(container); |
| container.classList.add("hidden"); |
| requestAnimationFrame(() => { |
| construct(container); |
| measureForced(); |
| |
| container.classList.remove("hidden"); |
| requestAnimationFrame(() => { |
| measureWhenVisible(); |
| t.done(); |
| }); |
| }); |
| } |
| |
| window.onload = function() { |
| requestAnimationFrame(() => requestAnimationFrame(runTest)); |
| }; |
| }, "Measure Forced SVG Text"); |
| </script> |
| |
| </html> |