<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <script src="resources/webaudio/compatibility.js"></script>
    <script src="resources/webaudio/media-element-audio-source-node-test.js"></script>
    <script src="/js-test-resources/js-test.js"></script>
  </head>

  <body>
    <div id="description"></div>
    <div id="console"></div>

    <script>
      description("MediaElementAudioSourceNode with cross-origin source with credentials");

      var data;

      function checkResult (e) {
        data = e.getChannelData(0);
        var count = 0;

        // Count the number of non-zero values. Since this is a cross-origin source that is allowed
        // with credentials, there should be at least one non-zero value.
        for (var k = 0; k < data.length; ++k) {
            if (data[k] != 0) {
                ++count;
            }
        }
        if (count > 0) {
            testPassed("Correctly found some non-zero values.");
        } else {
            testFailed("All samples incorrectly zeroed.");
        }
      }

      function testFunction() {
        audio.crossOrigin = "use-credentials";
        audio.src =
        "http://localhost:8000/security/resources/webaudio/media-element-cross-origin-allow.php?with_credentials";
      }

      runTest(null, checkResult, testFunction);

    </script>
  </body>
</html>
