<!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 blob 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='blob:bloburl';
  </script>

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