<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.4" reviewer="DAS" author="CM" status="accepted"
    version="$Revision: 1.4 $" testname="$RCSfile: interact-pointer-03-t.svg,v $">

    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty">
      <p>
        This tests that the "painted" keyword for the pointer-events property
        does not cause pointer events to be captured when a shape's fill falls
        back to "none" because a referenced paint server was not available.
      </p>
    </d:testDescription>
    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
      <p>
        After loading the test, a rectangle will be displayed.
        Move the pointer over the rectangle, and it will change color
        to indicate whether the test was passed.
      </p>
    </d:operatorScript>

    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
      <p>
        If the rectangle turns green once the pointing device is moved over it,
        the test was passed.  If instead it turns red (or remains black),
        then the test failed.  If the rectangle was initially red when
        the document was loaded, then that also indicates that the test failed.
      </p>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: interact-pointer-03-t.svg,v $</title>
  <defs>
    <font-face
      font-family="SVGFreeSansASCII"
      unicode-range="U+0-7F">

      <font-face-src>
        <font-face-uri xlink:href="../custom/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='40' font-size='12'>Test pointer-events="painted" with paint server fallback</text>

    <rect id='r1' x='10' y='80' width='50' height='50' onmouseover='report(true)'/>
    <rect id='r2' x='10' y='80' width='50' height='50' clip-path='url(#c)' fill='url(#invalid) none' pointer-events='painted' onmouseover='report(false)'/>

    <g id='g'>
      <text id='t' x='10' y='150' font-size='13'>Move the pointing device over the rectangle.</text>
    </g>

    <script>
      function report(pass) {
        var color = pass ? 'green' : 'red';
        document.getElementById('r1').setAttribute('fill', color);
        document.getElementById('t').firstChild.nodeValue = pass ? "You've passed!" : "You've failed.";
      }
    </script>

  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
    <text id="revision" x="10" y="340" stroke="none"
      fill="black">$Revision: 1.4 $</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>
