| <!DOCTYPE html> |
| <html> |
| <body> |
| <p>Test passes if you see a single 100px by 100px green box below.</p> |
| <div id="host" style="width: 100px; height: 100px;"></div> |
| <svg> |
| <defs> |
| <rect id="rect" width="50" height="100" fill="red" /> |
| </defs> |
| </svg> |
| <template> |
| <svg viewbox="0 0 100 100" xmlns:xlink="http://www.w3.org/1999/xlink"> |
| <rect width="50" height="100" fill="green" /> |
| <rect id="rect1" x="-100" width="25" height="100" fill="red" /> |
| <rect id="rect2" x="-100" width="50" height="100" fill="green" /> |
| <animate attributeName="x" from="0" to="50" dur="0.01s" fill="freeze" xlink:href="#rect1" /> |
| </svg> |
| </template> |
| <script> |
| |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| const shadowRoot = host;//host.attachShadow({mode: 'closed'}); |
| shadowRoot.appendChild(document.querySelector('template').content.cloneNode(true)); |
| |
| function waitForAnimation() { |
| return new Promise((resolve) => { |
| // 0.01s is 10ms. Wait for twice that time to be safe. |
| requestAnimationFrame(() => setTimeout(resolve, 20)); |
| }) |
| } |
| |
| window.onload = async () => { |
| await waitForAnimation(); |
| shadowRoot.querySelector('animate').setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#rect2'); |
| shadowRoot.querySelector('animate').beginElement(); |
| await waitForAnimation(); |
| if (window.testRunner) |
| requestAnimationFrame(() => testRunner.notifyDone()); |
| } |
| |
| </script> |
| </body> |
| </html> |