<!DOCTYPE HTML>
<html>
<head>
    <title>Audio element src attribute must match src list - positive test</title>
    <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self';">
    <script src='/resources/testharness.js'></script>
    <script src='/resources/testharnessreport.js'></script>
</head>
<body>
    <h1>Audio element src attribute must match src list - positive test</h1>
    <div id='log'></div>

  <script>
    var src_test = async_test("In-policy audio src");
    var source_test = async_test("In-policy audio source element");
    var t_spv = async_test("Should not fire policy violation events");
    var test_count = 2;
    window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have fired any event"));

    function media_loaded(t) {
      t.done();
      if (--test_count <= 0) {
        t_spv.done();
      }
    }

    function media_error_handler(t) {
      t.step( function () {
          assert_unreached("Media error handler should be triggered for non-allowed domain.");
      });
      t.done();
    }
  </script>

    <audio id="audioObject" width="320" height="240" controls
           onloadeddata="media_loaded(source_test)">
        <source id="audioSourceObject"
                type="audio/ogg"
                onerror="media_error_handler(source_test)"
                src="/media/sound_5.oga">
    </audio>
    <audio id="audioObject2" width="320" height="240" controls
           onerror="media_error_handler(src_test)"
           onloadeddata="media_loaded(src_test)"
           src="/media/sound_5.oga">

</body>
</html>
