<svg id="svg-root" width="100%" height="100%"
  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <!--======================================================================-->
  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
  <!--=  Institute of Technology, European Research Consortium for         =-->
  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
  <!--=  All Rights Reserved.                                              =-->
  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
  <!--======================================================================-->
  <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
    template-version="1.3" reviewer="DAS" author="CM" status="accepted"
    version="$Revision: 1.7 $" testname="$RCSfile: animate-dom-02-f.svg,v $">
    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/animate.html#InterfaceSVGAnimationElement">
        <p>
          This tests that the methods on the ElementTimeControl
          interface return the undefined value, since the IDL
          operations are declared to return void.
        </p>
        <p>
         After the loading the document, a rectangle is shown
         indicating whether all four methods from the ElementTimeControl
         interface returned undefined when invoked.  The rectangle
         is black if the test did not run, red if the test failed
         and green if the test succeeded.
      </p>
    </d:testDescription>
    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
      <p>
        Run the test. No interaction required.
      </p>
    </d:operatorScript>
    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
      <p>
        The test is passed if the rectangle is green.
      </p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: animate-dom-02-f.svg,v $</title>
  <defs>
    <font-face
      font-family="SVGFreeSansASCII"
      unicode-range="U+0-7F">
      <font-face-src>
        <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
      </font-face-src>
    </font-face>
  </defs>
  <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">

    <text x='10' y='30'>Testing ElementTimeControl method return values</text>

    <rect id='r' x='10' y='50' width='50' height='50'/>
    <animate id='a' attributeName='display' values='inline; inline' dur='10s'/>
    <animate attributeName='display' values='inline; inline' onbegin='f()' dur='10s'/>

    <script><![CDATA[
      function f() {
        var a = document.getElementById('a');
        var b = false;
        try {
          b = typeof a.beginElement() == 'undefined'
                && typeof a.beginElementAt(100) == 'undefined'
                && typeof a.endElement() == 'undefined'
                && typeof a.endElementAt(200) == 'undefined';
        } catch (e) {
        }
        document.getElementById('r').setAttribute('fill', b ? 'green' : 'red');
      }
    ]]></script>
  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
  <text id="revision" x="10" y="340" stroke="none"
    fill="black">$Revision: 1.7 $</text>
  </g>
  <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
  <!-- comment out this watermark once the test is approved --><!--
  <g id="draft-watermark">
    <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
    <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
      text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
  </g>-->
</svg>
