<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0">
    <!-- script elements should not fire load until fetch is done and script executed -->
    <text id="console" x="8" y="1.5em">Test didn't run.</text>
    <script>
      if (window.testRunner) {
        testRunner.waitUntilDone();
        testRunner.dumpAsText();
      }

      window.onload = function() {
        if (window.testRunner)
          testRunner.notifyDone();
      };

      function runTest() {
        if (external_script_executed)
          document.getElementById("console").textContent = "Passed";
        else
          document.getElementById("console").textContent = "Failed";
      }
    </script>
    <script xlink:href="resources/delayCachedLoadScript.php" onload="runTest()"/>
</svg>
