<!DOCTYPE HTML>
<html>
<head>
    <title>Audio element src attribute must match src list - negative test</title>
    <meta name=timeout content=long>
    <script src='/resources/testharness.js'></script>
    <script src='/resources/testharnessreport.js'></script>
</head>
<body>
    <h1>Audio element src attribute must match src list - negative test</h1>
    <div id='log'></div>

  <script>
      var src_test = async_test("Disallaowed audio src");
      var source_test = async_test("Disallowed audio source element");

      // we assume tests are run from 'hostname' and 'www.hostname' or 'www2.hostname' is a valid alias
      var mediaURL = location.protocol +
        "//www2." +
        location.hostname +
        ":" +
        location.port +
        "/media/sound_5.mp3";

    function media_loaded(t) {
      t.step( function () {
          assert_unreached("Media error handler should be triggered for non-allowed domain.");
      });
      t.done();
    }

    function media_error_handler(t) {
      t.done();
    }
  </script>

    <audio id="audioObject" width="320" height="240" controls
           onloadeddata="media_loaded(source_test)">
        <source id="audioSourceObject"
                type="audio/mpeg"
                onerror="media_error_handler(source_test)">
    </audio>
    <audio id="audioObject2" width="320" height="240" controls
           onerror="media_error_handler(src_test)"
           onloadeddata="media_loaded(src_test)">

    <script>
        document.getElementById("audioSourceObject").src = mediaURL;
        document.getElementById("audioObject2").src = mediaURL;
    </script>

    <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=media-src%20%27self%27'></script>

</body>
</html>
