<!doctype html>
<html>
<meta charset="utf-8">
<title>This test forces use shadow tree recreation while an animating is running</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/SVGAnimationTestCase-testharness.js"></script>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">

<defs>
    <rect id="rect" width="10" height="100" fill="red">
        <animate id="an1" attributeName="width" fill="freeze" from="10" to="100" begin="0s" dur="4s"/>
    </rect>
</defs>

<use xlink:href="#rect"/>

</svg>

<script>
var rootSVGElement = document.querySelector("svg");
var epsilon = 1.0;

// Setup animation test
function sample1() {
    assert_approx_equals(rect.width.animVal.value, 10, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function sample2() {
    assert_approx_equals(rect.width.animVal.value, 55, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function forceUseShadowTreeRecreation() {
    rect.setAttribute("fill", "green");
}

function sample3() {
    assert_approx_equals(rect.width.animVal.value, 100, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

smil_async_test((t) => {
    rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0];

    const expectedValues = [
        // [animationId, time, sampleCallback]
        ["an1", 0.0,   sample1],
        ["an1", 1.999, sample2],
        ["an1", 2.0,   forceUseShadowTreeRecreation],
        ["an1", 2.001, sample2],
        ["an1", 4.0,   sample3],
        ["an1", 60.0,  sample3],
    ];

    runAnimationTest(t, expectedValues);
});

window.animationStartsImmediately = true;

</script>