tor-browser

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

test_smilGetStartTime.xhtml (3482B)


      1 <html xmlns="http://www.w3.org/1999/xhtml">
      2 <head>
      3  <title>Test for getStartTime Behavior </title>
      4  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      5  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      6 </head>
      7 <body>
      8 <p id="display"></p>
      9 <div id="content" style="display: none">
     10 <svg id="svg" xmlns="http://www.w3.org/2000/svg" width="120px" height="120px"
     11     onload="this.pauseAnimations()">
     12  <circle cx="20" cy="20" r="15" fill="blue">
     13    <animate attributeName="cx" attributeType="XML" 
     14      from="20" to="100" begin="indefinite" dur="1s" id="anim"/>
     15  </circle>
     16 </svg>
     17 </div>
     18 <pre id="test">
     19 <script class="testbody" type="text/javascript">
     20 <![CDATA[
     21 /** Test for getStartTime Behavior  */
     22 
     23 SimpleTest.waitForExplicitFinish();
     24 
     25 function main() {
     26  var svg = document.getElementById("svg");
     27  ok(svg.animationsPaused(), "should be paused by <svg> load handler");
     28  is(svg.getCurrentTime(), 0, "should be paused at 0 in <svg> load handler");
     29 
     30  var anim = document.getElementById("anim");
     31  // indefinite 
     32  var exceptionCaught = false;
     33  try {
     34    anim.getStartTime();
     35  } catch(e) {
     36    exceptionCaught = true;
     37    is(e.name, "InvalidStateError",
     38       "Unexpected exception from getStartTime.");
     39    is(e.code, DOMException.INVALID_STATE_ERR,
     40       "Unexpected exception code from getStartTime.");
     41  }
     42  ok(exceptionCaught, "No exception thrown for indefinite start time.");
     43 
     44  // 1s
     45  anim.setAttribute("begin", "1s");
     46  is(anim.getStartTime(), 1, "Unexpected start time with begin=1s");
     47 
     48  // We have to be careful here when choosing a negative time that we choose
     49  // a time that will create an interval that reaches past t=0 as SMIL has
     50  // special rules for throwing away intervals that end before t=0
     51  anim.setAttribute("begin", "-0.5s");
     52  is(anim.getStartTime(), -0.5, "Unexpected start time with begin=-0.5s");
     53 
     54  // Once the animation has begun, the begin time is fixed so we need to end the
     55  // element (or advance the timeline) to override the previous start time
     56  anim.endElement();
     57 
     58  // However, now we have an end instance, and the SMIL model dictates that if
     59  // we have end instances and no end event conditions and all end instances are
     60  // before our next begin, there's no valid interval. To overcome this we add
     61  // an indefinite end.
     62  anim.setAttribute("end", "indefinite");
     63 
     64  // Now test over the lifetime of the animation when there are multiple
     65  // intervals
     66  anim.setAttribute("begin", "1s; 3s");
     67  is(anim.getStartTime(), 1, "Unexpected start time before first interval");
     68  
     69  svg.setCurrentTime(1);
     70  is(anim.getStartTime(), 1,
     71     "Unexpected start time at start of first interval");
     72 
     73  svg.setCurrentTime(1.5);
     74  is(anim.getStartTime(), 1, "Unexpected start time during first interval");
     75 
     76  svg.setCurrentTime(2);
     77  is(anim.getStartTime(), 3, "Unexpected start time after first interval");
     78 
     79  svg.setCurrentTime(3);
     80  is(anim.getStartTime(), 3, "Unexpected start time during second interval");
     81 
     82  svg.setCurrentTime(4);
     83  exceptionCaught = false;
     84  try {
     85    anim.getStartTime();
     86  } catch(e) {
     87    exceptionCaught = true;
     88    is(e.name, "InvalidStateError",
     89       "Unexpected exception from getStartTime.");
     90    is(e.code, DOMException.INVALID_STATE_ERR,
     91       "Unexpected exception code from getStartTime.");
     92  }
     93  ok(exceptionCaught, "No exception thrown for in postactive state.");
     94 
     95  SimpleTest.finish();
     96 }
     97 
     98 window.addEventListener("load", main);
     99 ]]>
    100 </script>
    101 </pre>
    102 </body>
    103 </html>