blob: 10de725e954aeacb90a75806c83dacbcb886daa0 [file] [log] [blame]
<!DOCTYPE HTML>
<html>
<head>
<title>Video element src attribute must match src list - 'none' negative test</title>
<meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'none'; connect-src 'self';">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</head>
<body>
<h1>Video element src attribute must match src list - 'none' negative test</h1>
<div id='log'></div>
<script>
var v_src_test = async_test("Disallowed async video src");
var v_source_test = async_test("Disallowed async video source element");
var a_src_test = async_test("Disallaowed audio src");
var a_source_test = async_test("Disallowed audio source element");
// we assume tests are run from 'hostname' and 'www.hostname' or 'www2.hostname' is a valid alias
var a_mediaURL = location.protocol + "//{{domains[www2]}}:{{ports[http][0]}}/media/sound_5.oga";
var v_mediaURL = location.protocol + "//{{domains[www2]}}:{{ports[http][0]}}/media/A4.ogv";
var t_spv = async_test("Test that securitypolicyviolation events are fired");
var test_count = 4;
window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) {
assert_equals(e.violatedDirective, "media-src");
assert_true(e.blockedURI == a_mediaURL || e.blockedURI == v_mediaURL, "Unexpected blockedURI");
if (--test_count <= 0) {
t_spv.done();
}
}));
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(v_source_test)">
<source id="videoSourceObject"
type="video/ogg"
onerror="media_error_handler(v_source_test)">
</video>
<video id="videoObject2" width="320" height="240" controls
onerror="media_error_handler(v_src_test)"
onloadeddata="media_loaded(v_src_test)">
<script>
document.getElementById("videoSourceObject").src = v_mediaURL;
document.getElementById("videoObject2").src = v_mediaURL;
</script>
<audio id="audioObject" width="320" height="240" controls
onloadeddata="media_loaded(a_source_test)">
<source id="audioSourceObject"
type="audio/ogg"
onerror="media_error_handler(a_source_test)">
</audio>
<audio id="audioObject2" width="320" height="240" controls
onerror="media_error_handler(a_src_test)"
onloadeddata="media_loaded(a_src_test)">
<script>
document.getElementById("audioSourceObject").src = a_mediaURL;
document.getElementById("audioObject2").src = a_mediaURL;
</script>
</body>
</html>