| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <title>Video track src attribute must match src list - negative 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>Video track src attribute must match src list - negative test</h1> |
| <div id='log'></div> |
| |
| <script> |
| var source_test = |
| async_test("Disallowed track element onerror handler fires."); |
| |
| var trackURL = location.protocol + "//{{domains[www]}}:{{ports[http][0]}}/media/foo.vtt"; |
| |
| var t_spv = async_test("Test that securitypolicyviolation events are fired"); |
| var test_count = 1; |
| window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) { |
| assert_equals(e.violatedDirective, "media-src"); |
| assert_equals(e.blockedURI, trackURL); |
| if (--test_count <= 0) { |
| t_spv.done(); |
| } |
| })); |
| |
| |
| function media_loaded(t) { |
| t.step( function () { |
| assert_unreached("Disllowed track source loaded."); |
| }); |
| t.done(); |
| } |
| |
| function media_error_handler(t) { |
| t.done(); |
| } |
| </script> |
| |
| <video id="videoObject" width="320" height="240" controls |
| onerror="media_error_handler(source_test)" |
| crossorigin> |
| <source id="audioSourceObject" |
| type="audio/ogg" |
| src="/media/A4.ogv"> |
| <track default |
| id="trackObject" |
| kind="subtitles" |
| srclang="en" |
| label="English" |
| onerror="media_error_handler(source_test)" |
| onload="media_loaded(source_test)" |
| onloadeddata="media_loaded(source_test)"> |
| </video> |
| <script> |
| document.getElementById("trackObject").src = trackURL; |
| source_test.step(function() { |
| source_test.set_status(source_test.FAIL); |
| }); |
| |
| setTimeout(function() { |
| if(source_test.phase != source_test.phases.COMPLETE) { |
| source_test.step( function () { assert_unreached("Onerror event never fired for track element."); }); |
| source_test.done(); |
| } |
| }, 2 * 1000); |
| </script> |
| |
| </body> |
| </html> |