<!DOCTYPE HTML>
<html>
<head>
  <title>Video element src attribute must match src list - negative test</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
</head>
<body>
  <h1>Video element src attribute must match src list - negative test</h1>
  <div id="log"></div>

  <script>
    var src_test = async_test('Disallowed media src');

    function media_loaded(t) {
      t.step( function () {
          assert_unreached();
      });
      t.done();
    }

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

  <video id="videoObject"></video>

  <script>
    document.getElementById('videoObject').addEventListener('error',
       function() {
      media_error_handler(src_test)
    });
    document.getElementById('videoObject').addEventListener('loadeddata',
        function() {
      media_loaded(src_test)
    });
    document.getElementById('videoObject').src='/media/progressive.mp4';
  </script>

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