tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

svgtransform-animation-1.html (4719B)


      1 <!doctype html>
      2 <html>
      3 <title>Test accumulate=sum animation on SVGAnimateTransform.</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/resources/SVGAnimationTestCase-testharness.js"></script>
      7 
      8 <svg>
      9 </svg>
     10 
     11 <script>
     12 var rootSVGElement = document.querySelector("svg");
     13 var epsilon = 1.0;
     14 
     15 // Setup test document
     16 var rect = createSVGElement("rect");
     17 rect.setAttribute("id", "rect");
     18 rect.setAttribute("width", "100");
     19 rect.setAttribute("height", "100");
     20 rect.setAttribute("fill", "green");
     21 rect.setAttribute("onclick", "executeTest()");
     22 
     23 var animate = createSVGElement("animateTransform");
     24 animate.setAttribute("id", "animation");
     25 animate.setAttribute("attributeName", "transform");
     26 animate.setAttribute("type", "scale");
     27 animate.setAttribute("from", "0,0");
     28 animate.setAttribute("to", "2,2");
     29 animate.setAttribute("type", "scale");
     30 animate.setAttribute("fill", "freeze");
     31 animate.setAttribute("accumulate", "sum");
     32 animate.setAttribute("repeatCount", "3");
     33 animate.setAttribute("additive", "sum");
     34 animate.setAttribute("begin", "0s");
     35 animate.setAttribute("dur", "4s");
     36 rect.appendChild(animate);
     37 rootSVGElement.appendChild(rect);
     38 
     39 // Setup animation test
     40 function sample1() {
     41    // Check initial/end conditions
     42    assert_equals(rect.transform.animVal.numberOfItems, 1);
     43    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     44    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 0, epsilon);
     45    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 0, epsilon);
     46    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     47 }
     48 
     49 function sample2() {
     50    assert_equals(rect.transform.animVal.numberOfItems, 1);
     51    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     52    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 1, epsilon);
     53    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 1, epsilon);
     54    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     55 }
     56 
     57 function sample3() {
     58    assert_equals(rect.transform.animVal.numberOfItems, 1);
     59    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     60    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 2, epsilon);
     61    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 2, epsilon);
     62    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     63 }
     64 
     65 function sample4() {
     66    assert_equals(rect.transform.animVal.numberOfItems, 1);
     67    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     68    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 3, epsilon);
     69    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 3, epsilon);
     70    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     71 }
     72 
     73 function sample5() {
     74    assert_equals(rect.transform.animVal.numberOfItems, 1);
     75    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     76    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 4, epsilon);
     77    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 4, epsilon);
     78    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     79 }
     80 
     81 function sample6() {
     82    assert_equals(rect.transform.animVal.numberOfItems, 1);
     83    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     84    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 5, epsilon);
     85    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 5, epsilon);
     86    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     87 }
     88 
     89 function sample7() {
     90    assert_equals(rect.transform.animVal.numberOfItems, 1);
     91    assert_equals(rect.transform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     92    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.a, 6, epsilon);
     93    assert_approx_equals(rect.transform.animVal.getItem(0).matrix.d, 6, epsilon);
     94    assert_equals(rect.transform.baseVal.numberOfItems, 0);
     95 }
     96 
     97 smil_async_test((t) => {
     98    const expectedValues = [
     99        // [animationId, time, sampleCallback]
    100        ["animation", 0.001,  sample1],
    101        ["animation", 2.0,    sample2],
    102        ["animation", 3.999,  sample3],
    103        ["animation", 4.001,  sample3],
    104        ["animation", 6.0,    sample4],
    105        ["animation", 7.999,  sample5],
    106        ["animation", 8.001,  sample5],
    107        ["animation", 10.0,   sample6],
    108        ["animation", 11.999, sample7],
    109        ["animation", 12.001, sample7],
    110        ["animation", 14.0,   sample7],
    111        ["animation", 60.0,   sample7]
    112    ];
    113 
    114    runAnimationTest(t, expectedValues);
    115 });
    116 
    117 </script>