<!DOCTYPE HTML>
<html>
<head>
    <title>Video 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>Video element src attribute must match src list - negative test</h1>
    <div id='log'></div>

  <script>
      var src_test = async_test("Disallowed async video src");
      var source_test = async_test("Disallowed async video 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/white.mp4";

    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>

    <video id="videoObject" width="320" height="240" controls
           onloadeddata="media_loaded(source_test)">
        <source id="videoSourceObject"
                type="video/mp4"
                onerror="media_error_handler(source_test)">
    </video>
    <video id="videoObject2" width="320" height="240" controls
           onerror="media_error_handler(src_test)"
           onloadeddata="media_loaded(src_test)">

    <script>
        document.getElementById("videoSourceObject").src = mediaURL;
        document.getElementById("videoObject2").src = mediaURL;
    </script>

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

</body>
</html>
